From dc44fb70587537407e46c6ad1ecfdc083c67c0fc Mon Sep 17 00:00:00 2001 From: neverland Date: Tue, 18 Mar 2025 21:27:36 +0800 Subject: [PATCH] test: add case for SRI with async chunks --- e2e/cases/sri/async-chunks/index.test.ts | 22 ++++++++++++++++++++ e2e/cases/sri/async-chunks/rsbuild.config.ts | 9 ++++++++ e2e/cases/sri/async-chunks/src/foo.js | 1 + e2e/cases/sri/async-chunks/src/index.css | 3 +++ e2e/cases/sri/async-chunks/src/index.js | 5 +++++ 5 files changed, 40 insertions(+) create mode 100644 e2e/cases/sri/async-chunks/index.test.ts create mode 100644 e2e/cases/sri/async-chunks/rsbuild.config.ts create mode 100644 e2e/cases/sri/async-chunks/src/foo.js create mode 100644 e2e/cases/sri/async-chunks/src/index.css create mode 100644 e2e/cases/sri/async-chunks/src/index.js diff --git a/e2e/cases/sri/async-chunks/index.test.ts b/e2e/cases/sri/async-chunks/index.test.ts new file mode 100644 index 0000000000..4e14e08353 --- /dev/null +++ b/e2e/cases/sri/async-chunks/index.test.ts @@ -0,0 +1,22 @@ +import { build, rspackOnlyTest } from '@e2e/helper'; +import { expect } from '@playwright/test'; + +rspackOnlyTest( + 'generate integrity for async script tags in prod build', + async ({ page }) => { + const rsbuild = await build({ + cwd: __dirname, + page, + }); + + const { content } = await rsbuild.getIndexFile(); + + expect( + content.includes('sriHashes={') && content.includes('"sha384-'), + ).toBe(true); + + const testEl = page.locator('#root'); + await expect(testEl).toHaveText('foo'); + await rsbuild.close(); + }, +); diff --git a/e2e/cases/sri/async-chunks/rsbuild.config.ts b/e2e/cases/sri/async-chunks/rsbuild.config.ts new file mode 100644 index 0000000000..4331806cd5 --- /dev/null +++ b/e2e/cases/sri/async-chunks/rsbuild.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from '@rsbuild/core'; + +export default defineConfig({ + security: { + sri: { + enable: 'auto', + }, + }, +}); diff --git a/e2e/cases/sri/async-chunks/src/foo.js b/e2e/cases/sri/async-chunks/src/foo.js new file mode 100644 index 0000000000..3329a7d972 --- /dev/null +++ b/e2e/cases/sri/async-chunks/src/foo.js @@ -0,0 +1 @@ +export const foo = 'foo'; diff --git a/e2e/cases/sri/async-chunks/src/index.css b/e2e/cases/sri/async-chunks/src/index.css new file mode 100644 index 0000000000..60f1eab971 --- /dev/null +++ b/e2e/cases/sri/async-chunks/src/index.css @@ -0,0 +1,3 @@ +body { + color: red; +} diff --git a/e2e/cases/sri/async-chunks/src/index.js b/e2e/cases/sri/async-chunks/src/index.js new file mode 100644 index 0000000000..d9c7ac804e --- /dev/null +++ b/e2e/cases/sri/async-chunks/src/index.js @@ -0,0 +1,5 @@ +import './index.css'; + +import('./foo').then(({ foo }) => { + document.getElementById('root').innerHTML = foo; +});