Skip to content

Commit 46e702a

Browse files
authored
Filter out m3u8 files whilst a chrome HLS bug is investigated (#14788)
* Filter out m3u8 files whilst a chrome hls bug is investigated https://issues.chromium.org/issues/454630434 * skip failing tests * Reordering * Revert skipping tests * Filter the m3u8 files from supportedVideoFileTypes as this is considered the source of truth for loop video file types * Update schemas as supportedVideoFileTypes type has been changed
1 parent 985372d commit 46e702a

File tree

9 files changed

+35
-79
lines changed

9 files changed

+35
-79
lines changed

dotcom-rendering/src/components/LoopVideo.stories.tsx

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,22 @@ export const Default: Story = {
3838
},
3939
};
4040

41-
export const WithM3U8File: Story = {
42-
name: 'With M3U8 file',
43-
args: {
44-
...Default.args,
45-
sources: [
46-
{
47-
src: 'https://uploads.guimcode.co.uk/2025/09/01/Loop__Japan_fireball--ace3fcf6-1378-41db-9d21-f3fc07072ab2-1.10.m3u8',
48-
mimeType: 'application/x-mpegURL',
49-
},
50-
{
51-
src: 'https://uploads.guim.co.uk/2025%2F06%2F20%2Ftesting+only%2C+please+ignore--3cb22b60-2c3f-48d6-8bce-38c956907cce-3.mp4',
52-
mimeType: 'video/mp4',
53-
},
54-
],
55-
},
56-
};
41+
// export const WithM3U8File: Story = {
42+
// name: 'With M3U8 file',
43+
// args: {
44+
// ...Default.args,
45+
// sources: [
46+
// {
47+
// src: 'https://uploads.guimcode.co.uk/2025/09/01/Loop__Japan_fireball--ace3fcf6-1378-41db-9d21-f3fc07072ab2-1.10.m3u8',
48+
// mimeType: 'application/x-mpegURL',
49+
// },
50+
// {
51+
// src: 'https://uploads.guim.co.uk/2025%2F06%2F20%2Ftesting+only%2C+please+ignore--3cb22b60-2c3f-48d6-8bce-38c956907cce-3.mp4',
52+
// mimeType: 'video/mp4',
53+
// },
54+
// ],
55+
// },
56+
// };
5757

5858
export const Without5to4Ratio: Story = {
5959
name: 'Without 5:4 aspect ratio',

dotcom-rendering/src/frontend/schemas/feArticle.json

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5309,7 +5309,8 @@
53095309
"type": "string"
53105310
},
53115311
"mimeType": {
5312-
"$ref": "#/definitions/SupportedVideoFileType"
5312+
"type": "string",
5313+
"const": "video/mp4"
53135314
}
53145315
},
53155316
"required": [
@@ -5342,14 +5343,6 @@
53425343
}
53435344
]
53445345
},
5345-
"SupportedVideoFileType": {
5346-
"enum": [
5347-
"application/vnd.apple.mpegurl",
5348-
"application/x-mpegURL",
5349-
"video/mp4"
5350-
],
5351-
"type": "string"
5352-
},
53535346
"Audio": {
53545347
"allOf": [
53555348
{

dotcom-rendering/src/frontend/schemas/feFront.json

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3941,7 +3941,8 @@
39413941
"type": "string"
39423942
},
39433943
"mimeType": {
3944-
"$ref": "#/definitions/SupportedVideoFileType"
3944+
"type": "string",
3945+
"const": "video/mp4"
39453946
}
39463947
},
39473948
"required": [
@@ -3974,14 +3975,6 @@
39743975
}
39753976
]
39763977
},
3977-
"SupportedVideoFileType": {
3978-
"enum": [
3979-
"application/vnd.apple.mpegurl",
3980-
"application/x-mpegURL",
3981-
"video/mp4"
3982-
],
3983-
"type": "string"
3984-
},
39853978
"Audio": {
39863979
"allOf": [
39873980
{

dotcom-rendering/src/lib/video.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,13 @@ export type Source = {
1010

1111
/**
1212
* Order is important here - the browser will use the first type it supports.
13+
* 'application/x-mpegURL' & 'application/vnd.apple.mpegurl' have been filtered out
14+
* whilst a hls chrome bug is investigated
15+
* https://issues.chromium.org/issues/454630434
1316
*/
1417
export const supportedVideoFileTypes = [
15-
'application/x-mpegURL', // HLS format
16-
'application/vnd.apple.mpegurl', // Alternative HLS format
18+
// 'application/x-mpegURL', // HLS format
19+
// 'application/vnd.apple.mpegurl', // Alternative HLS format
1720
'video/mp4', // MP4 format
1821
] as const;
1922

dotcom-rendering/src/model/enhanceCards.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import type { FEMediaAsset, FEMediaAtom } from '../frontend/feFront';
22
import { getActiveMediaAtom } from './enhanceCards';
33

4+
/**
5+
* Why has this test suite been skipped?
6+
*
7+
* M3U8s have been disabled whilst a chrome hls bug is investigated.
8+
*/
49
describe.skip('Enhance Cards', () => {
510
it('prioritises m3u8 assets over MP4 assets', () => {
611
const videoReplace = true;

dotcom-rendering/src/model/enhanceCards.ts

Lines changed: 5 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -198,25 +198,11 @@ export const getActiveMediaAtom = (
198198
videoReplace: boolean,
199199
mediaAtom?: FEMediaAtom,
200200
cardTrailImage?: string,
201-
isLoopVideoLoadTest?: boolean,
202201
): MainMedia | undefined => {
203202
if (mediaAtom) {
204-
let assets;
205-
if (isLoopVideoLoadTest) {
206-
/* temporarily filter out m3u8 files */
207-
assets = mediaAtom.assets
208-
.filter((_) => !m3u8MimeType.includes(_.mimeType ?? ''))
209-
.filter(({ version }) => version === mediaAtom.activeVersion);
210-
} else {
211-
assets = mediaAtom.assets.filter(
212-
({ version }) => version === mediaAtom.activeVersion,
213-
);
214-
}
215-
216-
const m3u8MimeType = [
217-
'application/vnd.apple.mpegurl',
218-
'application/x-mpegURL',
219-
];
203+
const assets = mediaAtom.assets.filter(
204+
({ version }) => version === mediaAtom.activeVersion,
205+
);
220206

221207
const videoAssets = assets.filter(
222208
({ assetType }) => assetType === 'Video',
@@ -297,17 +283,11 @@ const decideMedia = (
297283
imageHide?: boolean,
298284
videoReplace?: boolean,
299285
cardImage?: string,
300-
isLoopVideoLoadTest?: boolean,
301286
): MainMedia | undefined => {
302287
// If the showVideo toggle is enabled in the fronts tool,
303288
// we should return the active mediaAtom regardless of the design
304289
if (!!showMainVideo || !!videoReplace) {
305-
return getActiveMediaAtom(
306-
!!videoReplace,
307-
mediaAtom,
308-
cardImage,
309-
isLoopVideoLoadTest,
310-
);
290+
return getActiveMediaAtom(!!videoReplace, mediaAtom, cardImage);
311291
}
312292

313293
switch (format.design) {
@@ -322,12 +302,7 @@ const decideMedia = (
322302
};
323303

324304
case ArticleDesign.Video: {
325-
return getActiveMediaAtom(
326-
false,
327-
mediaAtom,
328-
cardImage,
329-
isLoopVideoLoadTest,
330-
);
305+
return getActiveMediaAtom(false, mediaAtom, cardImage);
331306
}
332307

333308
default:
@@ -344,7 +319,6 @@ export const enhanceCards = (
344319
pageId,
345320
discussionApiUrl,
346321
stripBranding = false,
347-
isLoopVideoLoadTest,
348322
}: {
349323
cardInTagPage: boolean;
350324
/** Used for the data link name to indicate card position in container */
@@ -354,7 +328,6 @@ export const enhanceCards = (
354328
discussionApiUrl: string;
355329
/** We strip branding from cards if the branding will appear at the collection level instead */
356330
stripBranding?: boolean;
357-
isLoopVideoLoadTest?: boolean;
358331
},
359332
): DCRFrontCard[] =>
360333
collections.map((faciaCard, index) => {
@@ -410,7 +383,6 @@ export const enhanceCards = (
410383
faciaCard.display.imageHide,
411384
faciaCard.properties.mediaSelect?.videoReplace,
412385
imageSrc,
413-
isLoopVideoLoadTest,
414386
);
415387

416388
return {

dotcom-rendering/src/model/enhanceCollections.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ export const enhanceCollections = ({
6565
frontBranding,
6666
onPageDescription,
6767
isOnPaidContentFront,
68-
isLoopVideoLoadTest,
6968
}: {
7069
collections: FECollection[];
7170
editionId: EditionId;
@@ -74,7 +73,6 @@ export const enhanceCollections = ({
7473
frontBranding: Branding | undefined;
7574
onPageDescription?: string;
7675
isOnPaidContentFront?: boolean;
77-
isLoopVideoLoadTest?: boolean;
7876
}): DCRCollectionType[] => {
7977
const indexToShowFrontBranding =
8078
findCollectionSuitableForFrontBranding(collections);
@@ -135,21 +133,18 @@ export const enhanceCollections = ({
135133
editionId,
136134
discussionApiUrl,
137135
stripBrandingFromCards,
138-
isLoopVideoLoadTest,
139136
),
140137
curated: enhanceCards(collection.curated, {
141138
cardInTagPage: false,
142139
editionId,
143140
discussionApiUrl,
144141
stripBranding: stripBrandingFromCards,
145-
isLoopVideoLoadTest,
146142
}),
147143
backfill: enhanceCards(collection.backfill, {
148144
cardInTagPage: false,
149145
editionId,
150146
discussionApiUrl,
151147
stripBranding: stripBrandingFromCards,
152-
isLoopVideoLoadTest,
153148
}),
154149
treats: enhanceTreats(
155150
collection.treats,

dotcom-rendering/src/model/groupCards.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ export const groupCards = (
3232
editionId: EditionId,
3333
discussionApiUrl: string,
3434
stripBranding: boolean = false,
35-
isLoopVideoLoadTest?: boolean,
3635
): DCRGroupedTrails => {
3736
switch (container) {
3837
case 'dynamic/fast':
@@ -97,7 +96,6 @@ export const groupCards = (
9796
discussionApiUrl,
9897
offset,
9998
stripBranding,
100-
isLoopVideoLoadTest,
10199
});
102100

103101
return {
@@ -124,7 +122,6 @@ export const groupCards = (
124122
discussionApiUrl,
125123
offset,
126124
stripBranding,
127-
isLoopVideoLoadTest,
128125
});
129126

130127
return {

dotcom-rendering/src/server/handler.front.web.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@ const enhanceFront = (body: unknown): Front => {
4545
.editionBrandings,
4646
data.editionId,
4747
),
48-
isLoopVideoLoadTest:
49-
data.config.abTests.LoopVideoLoadVariant === 'variant',
5048
}),
5149
},
5250
mostViewed: data.mostViewed.map((trail) => decideTrail(trail)),

0 commit comments

Comments
 (0)