From f14da507adbdc2baa67c9d75fe589a58f6938fc2 Mon Sep 17 00:00:00 2001 From: bfintal Date: Wed, 12 Aug 2026 11:37:59 +0800 Subject: [PATCH] fix: stabilize premium e2e settings isolation and HEIC waits Restore smart_optimization after specs that disable it, reset defaults in settings-unlocked, and give HEIC uploads more time for the WASM converter on CI. --- e2e/test-utils/media.ts | 14 +++++++++----- e2e/tests/premium/lqip.spec.ts | 1 + e2e/tests/premium/optimization-toggle.spec.ts | 1 + e2e/tests/premium/optimize-all.spec.ts | 1 + e2e/tests/premium/settings-unlocked.spec.ts | 12 ++++++++++++ e2e/tests/premium/stealth.spec.ts | 1 + e2e/tests/premium/svg-heic.spec.ts | 6 +++++- 7 files changed, 30 insertions(+), 6 deletions(-) diff --git a/e2e/test-utils/media.ts b/e2e/test-utils/media.ts index ac89291..9164177 100644 --- a/e2e/test-utils/media.ts +++ b/e2e/test-utils/media.ts @@ -224,19 +224,19 @@ export async function expectNewMediaMime( async () => { const created = await getMediaCreatedAfter( requestUtils, afterId ) if ( ! created.length ) { - return null + return 'none' } const mimeType = created[ 0 ].mime_type if ( mime instanceof RegExp ) { - return mime.test( mimeType ) ? mimeType : null + return mime.test( mimeType ) ? mimeType : `unexpected:${ mimeType }` } - return mimeType === mime ? mimeType : null + return mimeType === mime ? mimeType : `unexpected:${ mimeType }` }, { timeout, message: `Expected a new ${ mimeLabel } media attachment after upload`, } - ).not.toBeNull() + ).toMatch( mime instanceof RegExp ? mime : new RegExp( `^${ mime.replace( /[.*+?^${}()|[\]\\]/g, '\\$&' ) }$` ) ) const created = await getMediaCreatedAfter( requestUtils, afterId ) const newest = created[ 0 ] @@ -316,7 +316,11 @@ export async function uploadSampleViaMediaNew( '.media-upload-form input[type="file"], #async-upload, input[name="async-upload"]' ).first() await expect( fileInput ).toBeAttached( { timeout: 15_000 } ) - await fileInput.setInputFiles( filePath ) + await fileInput.setInputFiles( { + name: path.basename( filePath ), + mimeType, + buffer: fs.readFileSync( filePath ), + } ) if ( options.expectedMime ) { return await expectNewMediaMime( diff --git a/e2e/tests/premium/lqip.spec.ts b/e2e/tests/premium/lqip.spec.ts index 60768e5..d782d9f 100644 --- a/e2e/tests/premium/lqip.spec.ts +++ b/e2e/tests/premium/lqip.spec.ts @@ -35,6 +35,7 @@ test.describe( 'Premium LQIP', () => { lqip_enabled: 0, disable_thumbnail_generation: 0, max_image_dimension: 0, + smart_optimization: 1, } ) } ) diff --git a/e2e/tests/premium/optimization-toggle.spec.ts b/e2e/tests/premium/optimization-toggle.spec.ts index c814f8b..6ecf319 100644 --- a/e2e/tests/premium/optimization-toggle.spec.ts +++ b/e2e/tests/premium/optimization-toggle.spec.ts @@ -49,6 +49,7 @@ test.describe( 'Premium optimization toggle', () => { show_optimization_toggle: 0, persist_optimization_toggle: 0, disable_thumbnail_generation: 0, + smart_optimization: 1, } ) } ) diff --git a/e2e/tests/premium/optimize-all.spec.ts b/e2e/tests/premium/optimize-all.spec.ts index bccabba..e136623 100644 --- a/e2e/tests/premium/optimize-all.spec.ts +++ b/e2e/tests/premium/optimize-all.spec.ts @@ -33,6 +33,7 @@ test.describe( 'Premium optimize all media uploads', () => { await saveCimoOptions( requestUtils, { optimize_all_media: 0, disable_thumbnail_generation: 0, + smart_optimization: 1, } ) } ) diff --git a/e2e/tests/premium/settings-unlocked.spec.ts b/e2e/tests/premium/settings-unlocked.spec.ts index 804f87e..ac26093 100644 --- a/e2e/tests/premium/settings-unlocked.spec.ts +++ b/e2e/tests/premium/settings-unlocked.spec.ts @@ -3,11 +3,23 @@ import { expect, gotoCimoSettings, SAMPLE_JPG, + saveCimoOptions, } from '../../test-utils' test.describe.configure( { timeout: 120_000 } ) test.describe( 'Premium settings unlocked', () => { + test.beforeEach( async ( { requestUtils } ) => { + // Prior premium specs often leave smart_optimization off; restore defaults + // so this smoke test asserts the true premium out-of-box settings. + await saveCimoOptions( requestUtils, { + smart_optimization: 1, + optimize_all_media: 0, + show_optimization_toggle: 0, + stealth_mode_enabled: 0, + } ) + } ) + test( 'premium build enables gated controls and working bulk UI', async ( { admin, page, diff --git a/e2e/tests/premium/stealth.spec.ts b/e2e/tests/premium/stealth.spec.ts index 6e42249..fbae83c 100644 --- a/e2e/tests/premium/stealth.spec.ts +++ b/e2e/tests/premium/stealth.spec.ts @@ -29,6 +29,7 @@ test.describe( 'Premium stealth mode', () => { stealth_mode_enabled: 0, show_optimization_toggle: 0, disable_thumbnail_generation: 0, + smart_optimization: 1, } ) } ) diff --git a/e2e/tests/premium/svg-heic.spec.ts b/e2e/tests/premium/svg-heic.spec.ts index 33d51a9..0252b4f 100644 --- a/e2e/tests/premium/svg-heic.spec.ts +++ b/e2e/tests/premium/svg-heic.spec.ts @@ -34,6 +34,7 @@ test.describe( 'Premium SVG and HEIC uploads', () => { await saveCimoOptions( requestUtils, { svg_upload: 0, disable_thumbnail_generation: 0, + smart_optimization: 1, } ) } ) @@ -78,7 +79,10 @@ test.describe( 'Premium SVG and HEIC uploads', () => { page, requestUtils, SAMPLE_HEIC, - 'image/heic' + 'image/heic', + // heic2any ships a ~1.3MB WASM worker; cold load on CI regularly + // exceeds the default 60s media poll window. + { timeout: 180_000 } ) expect( media.mime_type ).toBe( 'image/webp' ) expect( media.source_url ).toMatch( /\.webp(\?|$)/i )