diff --git a/apps/showcase/e2e-playwright/playwright-config.ts b/apps/showcase/e2e-playwright/playwright-config.ts
index 7debf226aa..39d3200720 100644
--- a/apps/showcase/e2e-playwright/playwright-config.ts
+++ b/apps/showcase/e2e-playwright/playwright-config.ts
@@ -24,11 +24,13 @@ const config = defineConfig({
screenshot: 'only-on-failure',
trace: 'retain-on-failure',
...process.env.USE_MOCKS ? {
- launchOptions: { proxy: {server: 'per-context'}},
+ launchOptions: { proxy: {server: 'per-context'}, args: ['--remote-debugging-port=9222']},
proxy: {server: 'http://localhost:4200'},
serviceWorkers: 'block',
ignoreHTTPSErrors: true
- } : {}
+ } : {
+ launchOptions: { args: ['--remote-debugging-port=9222']}
+ }
},
expect: {
toHaveScreenshot: {
diff --git a/apps/showcase/e2e-playwright/sanity/lighthouse-sanity.e2e.ts b/apps/showcase/e2e-playwright/sanity/lighthouse-sanity.e2e.ts
new file mode 100644
index 0000000000..4ba23cac5c
--- /dev/null
+++ b/apps/showcase/e2e-playwright/sanity/lighthouse-sanity.e2e.ts
@@ -0,0 +1,108 @@
+import { O3rElement } from '@o3r/testing/core';
+import { type Page, test } from '@playwright/test';
+import { AppFixtureComponent } from '../../src/app/app.fixture';
+
+async function performAudit(page: Page) {
+ const { playAudit } = await import('playwright-lighthouse');
+ await playAudit({
+ page,
+ thresholds: {
+ performance: 50,
+ accessibility: 94,
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ 'best-practices': 90
+ },
+ port: 9222
+ });
+}
+
+const baseUrl = process.env.PLAYWRIGHT_TARGET_URL || 'http://localhost:4200/';
+
+test.describe('Lighthouse tests', () => {
+ test('home', async ({context}) => {
+ const page = await context.newPage();
+ await page.goto(baseUrl);
+ await performAudit(page);
+ await page.close();
+ });
+
+ test('run-app-locally', async ({context}) => {
+ const page = await context.newPage();
+ await page.goto(baseUrl);
+ const appFixture = new AppFixtureComponent(new O3rElement({element: page.locator('app-root'), page}));
+ await appFixture.navigateToRunAppLocally();
+ await page.waitForURL('**/run-app-locally');
+ await performAudit(page);
+ await page.close();
+ });
+
+ test('configuration', async ({context}) => {
+ const page = await context.newPage();
+ await page.goto(baseUrl);
+ const appFixture = new AppFixtureComponent(new O3rElement({element: page.locator('app-root'), page}));
+ await appFixture.navigateToConfiguration();
+ await page.waitForURL('**/configuration');
+ await performAudit(page);
+ await page.close();
+ });
+
+ test('localization', async ({context}) => {
+ const page = await context.newPage();
+ await page.goto(baseUrl);
+ const appFixture = new AppFixtureComponent(new O3rElement({element: page.locator('app-root'), page}));
+ await appFixture.navigateToLocalization();
+ await page.waitForURL('**/localization');
+ await performAudit(page);
+ await page.close();
+ });
+
+ test('dynamic-content', async ({context}) => {
+ const page = await context.newPage();
+ await page.goto(baseUrl);
+ const appFixture = new AppFixtureComponent(new O3rElement({element: page.locator('app-root'), page}));
+ await appFixture.navigateToDynamicContent();
+ await page.waitForURL('**/dynamic-content');
+ await performAudit(page);
+ await page.close();
+ });
+
+ test('rules-engine', async ({context}) => {
+ const page = await context.newPage();
+ await page.goto(baseUrl);
+ const appFixture = new AppFixtureComponent(new O3rElement({element: page.locator('app-root'), page}));
+ await appFixture.navigateToRulesEngine();
+ await page.waitForURL('**/rules-engine');
+ await performAudit(page);
+ await page.close();
+ });
+
+ test('component-replacement', async ({context}) => {
+ const page = await context.newPage();
+ await page.goto(baseUrl);
+ const appFixture = new AppFixtureComponent(new O3rElement({element: page.locator('app-root'), page}));
+ await appFixture.navigateToComponentReplacement();
+ await page.waitForURL('**/component-replacement');
+ await performAudit(page);
+ await page.close();
+ });
+
+ test('design-token', async ({context}) => {
+ const page = await context.newPage();
+ await page.goto(baseUrl);
+ const appFixture = new AppFixtureComponent(new O3rElement({element: page.locator('app-root'), page}));
+ await appFixture.navigateToDesignToken();
+ await page.waitForURL('**/design-token');
+ await performAudit(page);
+ await page.close();
+ });
+
+ test('sdk-generator', async ({context}) => {
+ const page = await context.newPage();
+ await page.goto(baseUrl);
+ const appFixture = new AppFixtureComponent(new O3rElement({element: page.locator('app-root'), page}));
+ await appFixture.navigateToSDKGenerator();
+ await page.waitForURL('**/sdk');
+ await performAudit(page);
+ await page.close();
+ });
+});
diff --git a/apps/showcase/package.json b/apps/showcase/package.json
index 32eac9a009..88db15fa27 100644
--- a/apps/showcase/package.json
+++ b/apps/showcase/package.json
@@ -110,6 +110,8 @@
"jest-junit": "~16.0.0",
"jest-preset-angular": "~14.0.0",
"jsonc-eslint-parser": "~2.4.0",
+ "lighthouse": "9.6.8",
+ "playwright-lighthouse": "2.2.2",
"rimraf": "^5.0.1",
"ts-jest": "~29.1.1",
"typescript": "~5.3.3",
diff --git a/apps/showcase/src/app/rules-engine/rules-engine.template.html b/apps/showcase/src/app/rules-engine/rules-engine.template.html
index 79ab5288c7..6743a3df34 100644
--- a/apps/showcase/src/app/rules-engine/rules-engine.template.html
+++ b/apps/showcase/src/app/rules-engine/rules-engine.template.html
@@ -40,8 +40,8 @@
Example
Dynamic content rule
-
- Operator fact
+
+ Operator fact
diff --git a/package.json b/package.json
index 205df42dac..ab5fa762a3 100644
--- a/package.json
+++ b/package.json
@@ -230,12 +230,14 @@
"js-yaml": "^4.1.0",
"jsonc-eslint-parser": "~2.4.0",
"jsonpath-plus": "^8.0.0",
+ "lighthouse": "9.6.8",
"lint-staged": "^15.0.0",
"minimist": "^1.2.6",
"ng-packagr": "~17.2.0",
"ngx-highlightjs": "^10.0.0",
"npm-run-all2": "^6.0.0",
"nx": "~18.0.2",
+ "playwright-lighthouse": "2.2.2",
"postcss": "~8.4.31",
"postcss-scss": "~4.0.9",
"react": "^18.0.0",
diff --git a/yarn.lock b/yarn.lock
index 767a8a4f77..91e3c905af 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7740,6 +7740,7 @@ __metadata:
js-yaml: "npm:^4.1.0"
jsonc-eslint-parser: "npm:~2.4.0"
jsonpath-plus: "npm:^8.0.0"
+ lighthouse: "npm:9.6.8"
lint-staged: "npm:^15.0.0"
minimist: "npm:^1.2.6"
ng-packagr: "npm:~17.2.0"
@@ -7747,6 +7748,7 @@ __metadata:
npm-run-all2: "npm:^6.0.0"
nx: "npm:~18.0.2"
pixelmatch: "npm:^5.2.1"
+ playwright-lighthouse: "npm:2.2.2"
pngjs: "npm:^7.0.0"
postcss: "npm:~8.4.31"
postcss-scss: "npm:~4.0.9"
@@ -8482,8 +8484,10 @@ __metadata:
jest-junit: "npm:~16.0.0"
jest-preset-angular: "npm:~14.0.0"
jsonc-eslint-parser: "npm:~2.4.0"
+ lighthouse: "npm:9.6.8"
ngx-highlightjs: "npm:^10.0.0"
pixelmatch: "npm:^5.2.1"
+ playwright-lighthouse: "npm:2.2.2"
pngjs: "npm:^7.0.0"
rimraf: "npm:^5.0.1"
rxjs: "npm:^7.8.1"
@@ -10309,7 +10313,7 @@ __metadata:
languageName: node
linkType: hard
-"@sentry/node@npm:^6.0.0":
+"@sentry/node@npm:^6.0.0, @sentry/node@npm:^6.17.4":
version: 6.19.7
resolution: "@sentry/node@npm:6.19.7"
dependencies:
@@ -12147,6 +12151,15 @@ __metadata:
languageName: node
linkType: hard
+"@types/yauzl@npm:^2.9.1":
+ version: 2.10.3
+ resolution: "@types/yauzl@npm:2.10.3"
+ dependencies:
+ "@types/node": "npm:*"
+ checksum: 10/5ee966ea7bd6b2802f31ad4281c92c4c0b6dfa593c378a2582c58541fa113bec3d70eb0696b34ad95e8e6861a884cba6c3e351285816693ed176222f840a8c08
+ languageName: node
+ linkType: hard
+
"@typescript-eslint/eslint-plugin@npm:^7.0.1":
version: 7.1.0
resolution: "@typescript-eslint/eslint-plugin@npm:7.1.0"
@@ -13728,6 +13741,13 @@ __metadata:
languageName: node
linkType: hard
+"axe-core@npm:4.4.1":
+ version: 4.4.1
+ resolution: "axe-core@npm:4.4.1"
+ checksum: 10/6d336a7cb2e2525cbae3e649f94f475c8480859cfd14a0aea351a0e8e67af0d2e95c9f4cf35ae717768d34f3a917e9f19625702b387c99c72b8d96cada53ea2e
+ languageName: node
+ linkType: hard
+
"axios@npm:1.6.5":
version: 1.6.5
resolution: "axios@npm:1.6.5"
@@ -14359,7 +14379,7 @@ __metadata:
languageName: node
linkType: hard
-"buffer@npm:^5.5.0":
+"buffer@npm:^5.2.1, buffer@npm:^5.5.0":
version: 5.7.1
resolution: "buffer@npm:5.7.1"
dependencies:
@@ -14718,6 +14738,20 @@ __metadata:
languageName: node
linkType: hard
+"chrome-launcher@npm:^0.15.0":
+ version: 0.15.2
+ resolution: "chrome-launcher@npm:0.15.2"
+ dependencies:
+ "@types/node": "npm:*"
+ escape-string-regexp: "npm:^4.0.0"
+ is-wsl: "npm:^2.2.0"
+ lighthouse-logger: "npm:^1.0.0"
+ bin:
+ print-chrome-path: bin/print-chrome-path.js
+ checksum: 10/6faa189950790e63356113a08c4dbb25d9ef7d1ffc778f9fcf5967895ea8968aa3e711f6e7a55dadb42aa7a329d77721abf929a589b87e9e19e6e8c084b87e0d
+ languageName: node
+ linkType: hard
+
"chrome-trace-event@npm:^1.0.2":
version: 1.0.3
resolution: "chrome-trace-event@npm:1.0.3"
@@ -15324,6 +15358,20 @@ __metadata:
languageName: node
linkType: hard
+"configstore@npm:^5.0.1":
+ version: 5.0.1
+ resolution: "configstore@npm:5.0.1"
+ dependencies:
+ dot-prop: "npm:^5.2.0"
+ graceful-fs: "npm:^4.1.2"
+ make-dir: "npm:^3.0.0"
+ unique-string: "npm:^2.0.0"
+ write-file-atomic: "npm:^3.0.0"
+ xdg-basedir: "npm:^4.0.0"
+ checksum: 10/60ef65d493b63f96e14b11ba7ec072fdbf3d40110a94fb7199d1c287761bdea5c5244e76b2596325f30c1b652213aa75de96ea20afd4a5f82065e61ea090988e
+ languageName: node
+ linkType: hard
+
"confusing-browser-globals@npm:^1.0.9":
version: 1.0.11
resolution: "confusing-browser-globals@npm:1.0.11"
@@ -15956,6 +16004,15 @@ __metadata:
languageName: node
linkType: hard
+"cross-fetch@npm:3.1.5":
+ version: 3.1.5
+ resolution: "cross-fetch@npm:3.1.5"
+ dependencies:
+ node-fetch: "npm:2.6.7"
+ checksum: 10/5d101a3b1e6cb172f0e5e8168cbc927eeff2ef915f33ceef50fed85441df870e1fdff195b56eca36fae8b78ddba5d8e913b8927f73d11b19d27e96301438cd30
+ languageName: node
+ linkType: hard
+
"cross-spawn@npm:7.0.3, cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3":
version: 7.0.3
resolution: "cross-spawn@npm:7.0.3"
@@ -15992,6 +16049,13 @@ __metadata:
languageName: node
linkType: hard
+"csp_evaluator@npm:1.1.1":
+ version: 1.1.1
+ resolution: "csp_evaluator@npm:1.1.1"
+ checksum: 10/b4c2439896cea9765dca375ac024c144f069d9d2cfb6287b159ba4013b04ac46abd8760776a77b543cf3bed2af3fcc64f31e7ea4a6b2c2d1ccdc5e7ee9ef038e
+ languageName: node
+ linkType: hard
+
"css-declaration-sorter@npm:^7.1.1":
version: 7.1.1
resolution: "css-declaration-sorter@npm:7.1.1"
@@ -16192,6 +16256,13 @@ __metadata:
languageName: node
linkType: hard
+"cssom@npm:0.3.x, cssom@npm:~0.3.6":
+ version: 0.3.8
+ resolution: "cssom@npm:0.3.8"
+ checksum: 10/49eacc88077555e419646c0ea84ddc73c97e3a346ad7cb95e22f9413a9722d8964b91d781ce21d378bd5ae058af9a745402383fa4e35e9cdfd19654b63f892a9
+ languageName: node
+ linkType: hard
+
"cssom@npm:^0.5.0":
version: 0.5.0
resolution: "cssom@npm:0.5.0"
@@ -16199,10 +16270,12 @@ __metadata:
languageName: node
linkType: hard
-"cssom@npm:~0.3.6":
- version: 0.3.8
- resolution: "cssom@npm:0.3.8"
- checksum: 10/49eacc88077555e419646c0ea84ddc73c97e3a346ad7cb95e22f9413a9722d8964b91d781ce21d378bd5ae058af9a745402383fa4e35e9cdfd19654b63f892a9
+"cssstyle@npm:1.2.1":
+ version: 1.2.1
+ resolution: "cssstyle@npm:1.2.1"
+ dependencies:
+ cssom: "npm:0.3.x"
+ checksum: 10/b90438c21d03a95019d7c2c8648ac7265bfba0340a2cc36ab36e2a6ab3d15b988cdbcec6e34e3b4262d08d6845ec7ee17abd341115bbd7169cff398d783b9388
languageName: node
linkType: hard
@@ -16630,6 +16703,13 @@ __metadata:
languageName: node
linkType: hard
+"devtools-protocol@npm:0.0.981744":
+ version: 0.0.981744
+ resolution: "devtools-protocol@npm:0.0.981744"
+ checksum: 10/ec502af20a8806f46d03f5dffaec126e9487c9100cc3a05dfc3159af476484a8589dcea306e121698338c4991d47738af0d621d694bc0758f5f9ebba7b85e562
+ languageName: node
+ linkType: hard
+
"dezalgo@npm:^1.0.4":
version: 1.0.4
resolution: "dezalgo@npm:1.0.4"
@@ -16792,7 +16872,7 @@ __metadata:
languageName: node
linkType: hard
-"dot-prop@npm:^5.1.0":
+"dot-prop@npm:^5.1.0, dot-prop@npm:^5.2.0":
version: 5.3.0
resolution: "dot-prop@npm:5.3.0"
dependencies:
@@ -17024,6 +17104,16 @@ __metadata:
languageName: node
linkType: hard
+"enquirer@npm:^2.3.6":
+ version: 2.4.1
+ resolution: "enquirer@npm:2.4.1"
+ dependencies:
+ ansi-colors: "npm:^4.1.1"
+ strip-ansi: "npm:^6.0.1"
+ checksum: 10/b3726486cd98f0d458a851a03326a2a5dd4d84f37ff94ff2a2960c915e0fc865865da3b78f0877dc36ac5c1189069eca603e82ec63d5bc6b0dd9985bf6426d7a
+ languageName: node
+ linkType: hard
+
"enquirer@npm:~2.3.6":
version: 2.3.6
resolution: "enquirer@npm:2.3.6"
@@ -18447,6 +18537,23 @@ __metadata:
languageName: node
linkType: hard
+"extract-zip@npm:2.0.1":
+ version: 2.0.1
+ resolution: "extract-zip@npm:2.0.1"
+ dependencies:
+ "@types/yauzl": "npm:^2.9.1"
+ debug: "npm:^4.1.1"
+ get-stream: "npm:^5.1.0"
+ yauzl: "npm:^2.10.0"
+ dependenciesMeta:
+ "@types/yauzl":
+ optional: true
+ bin:
+ extract-zip: cli.js
+ checksum: 10/8cbda9debdd6d6980819cc69734d874ddd71051c9fe5bde1ef307ebcedfe949ba57b004894b585f758b7c9eeeea0e3d87f2dda89b7d25320459c2c9643ebb635
+ languageName: node
+ linkType: hard
+
"extract-zip@npm:^1.6.6":
version: 1.7.0
resolution: "extract-zip@npm:1.7.0"
@@ -20020,6 +20127,13 @@ __metadata:
languageName: node
linkType: hard
+"http-link-header@npm:^0.8.0":
+ version: 0.8.0
+ resolution: "http-link-header@npm:0.8.0"
+ checksum: 10/fba4aff81e7719f51624056657405e9f5e8891600faacbc9b443b6ad8edc6a26dd2a323bbeeb47e0916d45446e56ed68ce2d9b4109042a2c8cad2a3031fa49de
+ languageName: node
+ linkType: hard
+
"http-parser-js@npm:>=0.5.1":
version: 0.5.8
resolution: "http-parser-js@npm:0.5.8"
@@ -20131,6 +20245,16 @@ __metadata:
languageName: node
linkType: hard
+"https-proxy-agent@npm:5.0.1, https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1":
+ version: 5.0.1
+ resolution: "https-proxy-agent@npm:5.0.1"
+ dependencies:
+ agent-base: "npm:6"
+ debug: "npm:4"
+ checksum: 10/f0dce7bdcac5e8eaa0be3c7368bb8836ed010fb5b6349ffb412b172a203efe8f807d9a6681319105ea1b6901e1972c7b5ea899672a7b9aad58309f766dcbe0df
+ languageName: node
+ linkType: hard
+
"https-proxy-agent@npm:7.0.2":
version: 7.0.2
resolution: "https-proxy-agent@npm:7.0.2"
@@ -20161,16 +20285,6 @@ __metadata:
languageName: node
linkType: hard
-"https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1":
- version: 5.0.1
- resolution: "https-proxy-agent@npm:5.0.1"
- dependencies:
- agent-base: "npm:6"
- debug: "npm:4"
- checksum: 10/f0dce7bdcac5e8eaa0be3c7368bb8836ed010fb5b6349ffb412b172a203efe8f807d9a6681319105ea1b6901e1972c7b5ea899672a7b9aad58309f766dcbe0df
- languageName: node
- linkType: hard
-
"https-proxy-agent@npm:^7.0.1":
version: 7.0.4
resolution: "https-proxy-agent@npm:7.0.4"
@@ -20288,6 +20402,13 @@ __metadata:
languageName: node
linkType: hard
+"image-ssim@npm:^0.2.0":
+ version: 0.2.0
+ resolution: "image-ssim@npm:0.2.0"
+ checksum: 10/b682c4902ad4098c4ae4b0c3a87850e6ef9e0d4c79148884aa8d639dfa15ec97198e0b4de3c3ad4ff9f65abe49a6f6ca00b538464da4814e20c013b4798adb43
+ languageName: node
+ linkType: hard
+
"immediate@npm:~3.0.5":
version: 3.0.6
resolution: "immediate@npm:3.0.6"
@@ -20445,6 +20566,22 @@ __metadata:
languageName: node
linkType: hard
+"intl-messageformat-parser@npm:^1.8.1":
+ version: 1.8.1
+ resolution: "intl-messageformat-parser@npm:1.8.1"
+ checksum: 10/59d0c5640ce52a834520d636a0be2a63dd026d46f19ba09af7c52757433111da1d96462650df097aeefa36f04211166055957d69e3c517385b5c3189540d7c75
+ languageName: node
+ linkType: hard
+
+"intl-messageformat@npm:^4.4.0":
+ version: 4.4.0
+ resolution: "intl-messageformat@npm:4.4.0"
+ dependencies:
+ intl-messageformat-parser: "npm:^1.8.1"
+ checksum: 10/166fdcd2e009a8403e82df90170deb2d5799887236acad5649c5a13cd11bbe7be7d0ef0e291b6363980e73e6208c5d51e7535c4816b85fd37c39e25c679cfbd2
+ languageName: node
+ linkType: hard
+
"intl-messageformat@npm:~10.5.1":
version: 10.5.11
resolution: "intl-messageformat@npm:10.5.11"
@@ -20845,7 +20982,7 @@ __metadata:
languageName: node
linkType: hard
-"is-typedarray@npm:~1.0.0":
+"is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0":
version: 1.0.0
resolution: "is-typedarray@npm:1.0.0"
checksum: 10/4b433bfb0f9026f079f4eb3fbaa4ed2de17c9995c3a0b5c800bec40799b4b2a8b4e051b1ada77749deb9ded4ae52fe2096973f3a93ff83df1a5a7184a669478c
@@ -21624,6 +21761,13 @@ __metadata:
languageName: node
linkType: hard
+"jpeg-js@npm:^0.4.1, jpeg-js@npm:^0.4.3":
+ version: 0.4.4
+ resolution: "jpeg-js@npm:0.4.4"
+ checksum: 10/30bb6e16e79db4bd6edbecf1140039bbab326de876f2d20685f04a38d03f70ef9fada1886f0bf58832a4dba4aa179311fc4be7df3d756cab8f1c74d745542f38
+ languageName: node
+ linkType: hard
+
"js-base64@npm:^2.4.5":
version: 2.6.4
resolution: "js-base64@npm:2.6.4"
@@ -21631,6 +21775,13 @@ __metadata:
languageName: node
linkType: hard
+"js-library-detector@npm:^6.5.0":
+ version: 6.7.0
+ resolution: "js-library-detector@npm:6.7.0"
+ checksum: 10/1498d7f382102c9bf100563706906b18fd2e351746e0260e4a84c73d829a414478cd92fe6ad8a90f4d8636c76ef1ddfc2ec814b49904dfab86f5ddde71986d58
+ languageName: node
+ linkType: hard
+
"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0":
version: 4.0.0
resolution: "js-tokens@npm:4.0.0"
@@ -22280,6 +22431,62 @@ __metadata:
languageName: node
linkType: hard
+"lighthouse-logger@npm:^1.0.0, lighthouse-logger@npm:^1.3.0":
+ version: 1.4.2
+ resolution: "lighthouse-logger@npm:1.4.2"
+ dependencies:
+ debug: "npm:^2.6.9"
+ marky: "npm:^1.2.2"
+ checksum: 10/ffcedbf6878cc8b3289649ad60f42e3def7212b79eac6a21be2408724a2a7f65f9cfc3fbef6c0618ae4f476834949e1a56235e02ffa6b4e5019d2643d9d5977c
+ languageName: node
+ linkType: hard
+
+"lighthouse-stack-packs@npm:1.8.2":
+ version: 1.8.2
+ resolution: "lighthouse-stack-packs@npm:1.8.2"
+ checksum: 10/b486c83c9bf2badfd6865d47192163ca192d07399d24afdaad901e231792ff7ba37113ee7405fa0594243bf2ff12fa4d13536e719d9c5f0d6ab108199ecf4079
+ languageName: node
+ linkType: hard
+
+"lighthouse@npm:9.6.8":
+ version: 9.6.8
+ resolution: "lighthouse@npm:9.6.8"
+ dependencies:
+ "@sentry/node": "npm:^6.17.4"
+ axe-core: "npm:4.4.1"
+ chrome-launcher: "npm:^0.15.0"
+ configstore: "npm:^5.0.1"
+ csp_evaluator: "npm:1.1.1"
+ cssstyle: "npm:1.2.1"
+ enquirer: "npm:^2.3.6"
+ http-link-header: "npm:^0.8.0"
+ intl-messageformat: "npm:^4.4.0"
+ jpeg-js: "npm:^0.4.3"
+ js-library-detector: "npm:^6.5.0"
+ lighthouse-logger: "npm:^1.3.0"
+ lighthouse-stack-packs: "npm:1.8.2"
+ lodash: "npm:^4.17.21"
+ lookup-closest-locale: "npm:6.2.0"
+ metaviewport-parser: "npm:0.2.0"
+ open: "npm:^8.4.0"
+ parse-cache-control: "npm:1.0.1"
+ ps-list: "npm:^8.0.0"
+ puppeteer-core: "npm:^13.7.0"
+ robots-parser: "npm:^3.0.0"
+ semver: "npm:^5.3.0"
+ speedline-core: "npm:^1.4.3"
+ third-party-web: "npm:^0.17.1"
+ ws: "npm:^7.0.0"
+ yargs: "npm:^17.3.1"
+ yargs-parser: "npm:^21.0.0"
+ bin:
+ chrome-debug: lighthouse-core/scripts/manual-chrome-launcher.js
+ lighthouse: lighthouse-cli/index.js
+ smokehouse: lighthouse-cli/test/smokehouse/frontends/smokehouse-bin.js
+ checksum: 10/873f7eed52add5ab55de26f139f40fcd1f7b44e349a23f7aa614c6e3566ebddbc2c2c064dcacb9420079ea59bcc2b8ddde3b28a7c061bad6c2f033ad9d29b8e0
+ languageName: node
+ linkType: hard
+
"lilconfig@npm:3.0.0":
version: 3.0.0
resolution: "lilconfig@npm:3.0.0"
@@ -22708,6 +22915,13 @@ __metadata:
languageName: node
linkType: hard
+"lookup-closest-locale@npm:6.2.0":
+ version: 6.2.0
+ resolution: "lookup-closest-locale@npm:6.2.0"
+ checksum: 10/5ef9a8d48c14ff36dce324a88c2660ce4f04ecf51d2db406b6f0c32ac62634713764e9e7008e16a2f7da58419ff5d9f7fb7eada46ec3e1ba1209947b72ee9edc
+ languageName: node
+ linkType: hard
+
"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0":
version: 1.4.0
resolution: "loose-envify@npm:1.4.0"
@@ -22837,7 +23051,7 @@ __metadata:
languageName: node
linkType: hard
-"make-dir@npm:^3.0.2":
+"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2":
version: 3.1.0
resolution: "make-dir@npm:3.1.0"
dependencies:
@@ -22958,6 +23172,13 @@ __metadata:
languageName: node
linkType: hard
+"marky@npm:^1.2.2":
+ version: 1.2.5
+ resolution: "marky@npm:1.2.5"
+ checksum: 10/ae775cea935859a26560c807be226737e97a533913232f7d4648ab6237fc43e3175fa34664901b5aaed2027f355baa254ded1f6d828394e4abbd222a53b66bcf
+ languageName: node
+ linkType: hard
+
"mathml-tag-names@npm:^2.1.3":
version: 2.1.3
resolution: "mathml-tag-names@npm:2.1.3"
@@ -23102,6 +23323,13 @@ __metadata:
languageName: node
linkType: hard
+"metaviewport-parser@npm:0.2.0":
+ version: 0.2.0
+ resolution: "metaviewport-parser@npm:0.2.0"
+ checksum: 10/ba8d15d72d32f6139976ac0ebfaff5c06c888420a5c8141521295365663d4b86501bbf8113aa2924b04c7ab3c93b58aef055a15dec0dee6ab5fc91c22d16dc67
+ languageName: node
+ linkType: hard
+
"methods@npm:^1.1.2, methods@npm:~1.1.2":
version: 1.1.2
resolution: "methods@npm:1.1.2"
@@ -23767,6 +23995,20 @@ __metadata:
languageName: node
linkType: hard
+"node-fetch@npm:2.6.7":
+ version: 2.6.7
+ resolution: "node-fetch@npm:2.6.7"
+ dependencies:
+ whatwg-url: "npm:^5.0.0"
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+ checksum: 10/4bc9245383db92c35601a798c9a992fdf38d99920ceac11e0e6512ef3014d188b3807ccb060bc6c4bdb57a145030c73f5b5fd6730f665979f9264bc43ca3afea
+ languageName: node
+ linkType: hard
+
"node-fetch@npm:^2.0.0, node-fetch@npm:^2.6.1":
version: 2.7.0
resolution: "node-fetch@npm:2.7.0"
@@ -24765,6 +25007,13 @@ __metadata:
languageName: node
linkType: hard
+"parse-cache-control@npm:1.0.1":
+ version: 1.0.1
+ resolution: "parse-cache-control@npm:1.0.1"
+ checksum: 10/13171cd97395bdcb9ad29e0b82a789f2313663f2392ab4f699c97ecd2059e18c00834b9c12c9b42f6b0f22bc3c9395d16db9d2e3db7e21538ad5cf2e5ec9fdbe
+ languageName: node
+ linkType: hard
+
"parse-json@npm:^4.0.0":
version: 4.0.0
resolution: "parse-json@npm:4.0.0"
@@ -25281,6 +25530,15 @@ __metadata:
languageName: node
linkType: hard
+"pkg-dir@npm:4.2.0, pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0":
+ version: 4.2.0
+ resolution: "pkg-dir@npm:4.2.0"
+ dependencies:
+ find-up: "npm:^4.0.0"
+ checksum: 10/9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6
+ languageName: node
+ linkType: hard
+
"pkg-dir@npm:^3.0.0":
version: 3.0.0
resolution: "pkg-dir@npm:3.0.0"
@@ -25290,15 +25548,6 @@ __metadata:
languageName: node
linkType: hard
-"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0":
- version: 4.2.0
- resolution: "pkg-dir@npm:4.2.0"
- dependencies:
- find-up: "npm:^4.0.0"
- checksum: 10/9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6
- languageName: node
- linkType: hard
-
"pkg-dir@npm:^5.0.0":
version: 5.0.0
resolution: "pkg-dir@npm:5.0.0"
@@ -25326,6 +25575,16 @@ __metadata:
languageName: node
linkType: hard
+"playwright-lighthouse@npm:2.2.2":
+ version: 2.2.2
+ resolution: "playwright-lighthouse@npm:2.2.2"
+ dependencies:
+ chalk: "npm:^4.1.2"
+ ua-parser-js: "npm:^1.0.2"
+ checksum: 10/414c0de3cea8f3f7d8ad2c00b55f0d053e08763dcc0a2a76d0e64bb571791e1491f70877c53f789fd5f3e46ebcd44728928537b5ec8d825b93bd3da50e760da4
+ languageName: node
+ linkType: hard
+
"playwright@npm:1.42.1":
version: 1.42.1
resolution: "playwright@npm:1.42.1"
@@ -25994,7 +26253,7 @@ __metadata:
languageName: node
linkType: hard
-"progress@npm:^2.0.1, progress@npm:^2.0.3":
+"progress@npm:2.0.3, progress@npm:^2.0.1, progress@npm:^2.0.3":
version: 2.0.3
resolution: "progress@npm:2.0.3"
checksum: 10/e6f0bcb71f716eee9dfac0fe8a2606e3704d6a64dd93baaf49fbadbc8499989a610fe14cf1bc6f61b6d6653c49408d94f4a94e124538084efd8e4cf525e0293d
@@ -26080,7 +26339,7 @@ __metadata:
languageName: node
linkType: hard
-"proxy-from-env@npm:^1.0.0, proxy-from-env@npm:^1.1.0":
+"proxy-from-env@npm:1.1.0, proxy-from-env@npm:^1.0.0, proxy-from-env@npm:^1.1.0":
version: 1.1.0
resolution: "proxy-from-env@npm:1.1.0"
checksum: 10/f0bb4a87cfd18f77bc2fba23ae49c3b378fb35143af16cc478171c623eebe181678f09439707ad80081d340d1593cd54a33a0113f3ccb3f4bc9451488780ee23
@@ -26101,6 +26360,13 @@ __metadata:
languageName: node
linkType: hard
+"ps-list@npm:^8.0.0":
+ version: 8.1.1
+ resolution: "ps-list@npm:8.1.1"
+ checksum: 10/cb40320f1c760b6a803ee064b47ab8fe42723c646ba173a8416138c91de83e59e732359f730ae523a42a5c0f74c8f444a7a48d5edb9680406f20017fa7011922
+ languageName: node
+ linkType: hard
+
"ps-tree@npm:^1.2.0":
version: 1.2.0
resolution: "ps-tree@npm:1.2.0"
@@ -26171,6 +26437,26 @@ __metadata:
languageName: node
linkType: hard
+"puppeteer-core@npm:^13.7.0":
+ version: 13.7.0
+ resolution: "puppeteer-core@npm:13.7.0"
+ dependencies:
+ cross-fetch: "npm:3.1.5"
+ debug: "npm:4.3.4"
+ devtools-protocol: "npm:0.0.981744"
+ extract-zip: "npm:2.0.1"
+ https-proxy-agent: "npm:5.0.1"
+ pkg-dir: "npm:4.2.0"
+ progress: "npm:2.0.3"
+ proxy-from-env: "npm:1.1.0"
+ rimraf: "npm:3.0.2"
+ tar-fs: "npm:2.1.1"
+ unbzip2-stream: "npm:1.4.3"
+ ws: "npm:8.5.0"
+ checksum: 10/833ac288e2eb4abaf9ce183a079f130f785f773a4cb24a5f01abce7ba6006acae5fdabd55578c9bc296551f596cc097e5ba86b3f268b48a0370b233363f5f0e1
+ languageName: node
+ linkType: hard
+
"puppeteer-core@npm:^2.1.1":
version: 2.1.1
resolution: "puppeteer-core@npm:2.1.1"
@@ -27030,25 +27316,25 @@ __metadata:
languageName: node
linkType: hard
-"rimraf@npm:^2.2.8, rimraf@npm:^2.5.2, rimraf@npm:^2.5.4, rimraf@npm:^2.6.1":
- version: 2.7.1
- resolution: "rimraf@npm:2.7.1"
+"rimraf@npm:3.0.2, rimraf@npm:^3.0.2":
+ version: 3.0.2
+ resolution: "rimraf@npm:3.0.2"
dependencies:
glob: "npm:^7.1.3"
bin:
- rimraf: ./bin.js
- checksum: 10/4586c296c736483e297da7cffd19475e4a3e41d07b1ae124aad5d687c79e4ffa716bdac8732ed1db942caf65271cee9dd39f8b639611de161a2753e2112ffe1d
+ rimraf: bin.js
+ checksum: 10/063ffaccaaaca2cfd0ef3beafb12d6a03dd7ff1260d752d62a6077b5dfff6ae81bea571f655bb6b589d366930ec1bdd285d40d560c0dae9b12f125e54eb743d5
languageName: node
linkType: hard
-"rimraf@npm:^3.0.2":
- version: 3.0.2
- resolution: "rimraf@npm:3.0.2"
+"rimraf@npm:^2.2.8, rimraf@npm:^2.5.2, rimraf@npm:^2.5.4, rimraf@npm:^2.6.1":
+ version: 2.7.1
+ resolution: "rimraf@npm:2.7.1"
dependencies:
glob: "npm:^7.1.3"
bin:
- rimraf: bin.js
- checksum: 10/063ffaccaaaca2cfd0ef3beafb12d6a03dd7ff1260d752d62a6077b5dfff6ae81bea571f655bb6b589d366930ec1bdd285d40d560c0dae9b12f125e54eb743d5
+ rimraf: ./bin.js
+ checksum: 10/4586c296c736483e297da7cffd19475e4a3e41d07b1ae124aad5d687c79e4ffa716bdac8732ed1db942caf65271cee9dd39f8b639611de161a2753e2112ffe1d
languageName: node
linkType: hard
@@ -27074,6 +27360,13 @@ __metadata:
languageName: node
linkType: hard
+"robots-parser@npm:^3.0.0":
+ version: 3.0.1
+ resolution: "robots-parser@npm:3.0.1"
+ checksum: 10/672a4c231198fc326bfdea8ab15d020fb961c81c2a933fb6e46d69c58148a547a04ad9f4a9c16c61c41d93f4a3d6958b57fc01889080f013154d283d15d5fff1
+ languageName: node
+ linkType: hard
+
"rollup@npm:^4.2.0, rollup@npm:^4.5.0":
version: 4.12.0
resolution: "rollup@npm:4.12.0"
@@ -28043,6 +28336,17 @@ __metadata:
languageName: node
linkType: hard
+"speedline-core@npm:^1.4.3":
+ version: 1.4.3
+ resolution: "speedline-core@npm:1.4.3"
+ dependencies:
+ "@types/node": "npm:*"
+ image-ssim: "npm:^0.2.0"
+ jpeg-js: "npm:^0.4.1"
+ checksum: 10/08dd892ef4ed9ef4ddf344eb1616b48c250d3330d0c84d93fcaa79a5fb9a1530a491e780ef479609dd4e207650a26298fa51b587fa491b7de6fab43d5ca58b22
+ languageName: node
+ linkType: hard
+
"split2@npm:^3.0.0, split2@npm:^3.1.1":
version: 3.2.2
resolution: "split2@npm:3.2.2"
@@ -28804,7 +29108,7 @@ __metadata:
languageName: node
linkType: hard
-"tar-fs@npm:^2.0.0, tar-fs@npm:^2.1.1":
+"tar-fs@npm:2.1.1, tar-fs@npm:^2.0.0, tar-fs@npm:^2.1.1":
version: 2.1.1
resolution: "tar-fs@npm:2.1.1"
dependencies:
@@ -29013,6 +29317,13 @@ __metadata:
languageName: node
linkType: hard
+"third-party-web@npm:^0.17.1":
+ version: 0.17.1
+ resolution: "third-party-web@npm:0.17.1"
+ checksum: 10/046daea27121a11a78dc1c115178abed342c7696294b42d513edd5f8046a739c03dc54d32ae8961d48b91188608e09e603e81dc66bf4c65f43e088c4ab018e7e
+ languageName: node
+ linkType: hard
+
"thread-stream@npm:^2.0.0":
version: 2.4.1
resolution: "thread-stream@npm:2.4.1"
@@ -29621,6 +29932,15 @@ __metadata:
languageName: node
linkType: hard
+"typedarray-to-buffer@npm:^3.1.5":
+ version: 3.1.5
+ resolution: "typedarray-to-buffer@npm:3.1.5"
+ dependencies:
+ is-typedarray: "npm:^1.0.0"
+ checksum: 10/7c850c3433fbdf4d04f04edfc751743b8f577828b8e1eb93b95a3bce782d156e267d83e20fb32b3b47813e69a69ab5e9b5342653332f7d21c7d1210661a7a72c
+ languageName: node
+ linkType: hard
+
"typedarray@npm:^0.0.6":
version: 0.0.6
resolution: "typedarray@npm:0.0.6"
@@ -29682,6 +30002,13 @@ __metadata:
languageName: node
linkType: hard
+"ua-parser-js@npm:^1.0.2":
+ version: 1.0.37
+ resolution: "ua-parser-js@npm:1.0.37"
+ checksum: 10/56508f2428ebac64382c4d41da14189e5013e3e2a5f5918aff4bee3ba77df1f4eaad6f81f90c24999f1cf12cc1596764684497fec07e0ff5182ce9a323a8c05b
+ languageName: node
+ linkType: hard
+
"uc.micro@npm:^1.0.1, uc.micro@npm:^1.0.5":
version: 1.0.6
resolution: "uc.micro@npm:1.0.6"
@@ -29714,6 +30041,16 @@ __metadata:
languageName: node
linkType: hard
+"unbzip2-stream@npm:1.4.3":
+ version: 1.4.3
+ resolution: "unbzip2-stream@npm:1.4.3"
+ dependencies:
+ buffer: "npm:^5.2.1"
+ through: "npm:^2.3.8"
+ checksum: 10/4ffc0e14f4af97400ed0f37be83b112b25309af21dd08fa55c4513e7cb4367333f63712aec010925dbe491ef6e92db1248e1e306e589f9f6a8da8b3a9c4db90b
+ languageName: node
+ linkType: hard
+
"underscore@npm:^1.12.1":
version: 1.13.6
resolution: "underscore@npm:1.13.6"
@@ -30803,6 +31140,18 @@ __metadata:
languageName: node
linkType: hard
+"write-file-atomic@npm:^3.0.0":
+ version: 3.0.3
+ resolution: "write-file-atomic@npm:3.0.3"
+ dependencies:
+ imurmurhash: "npm:^0.1.4"
+ is-typedarray: "npm:^1.0.0"
+ signal-exit: "npm:^3.0.2"
+ typedarray-to-buffer: "npm:^3.1.5"
+ checksum: 10/0955ab94308b74d32bc252afe69d8b42ba4b8a28b8d79f399f3f405969f82623f981e35d13129a52aa2973450f342107c06d86047572637584e85a1c0c246bf3
+ languageName: node
+ linkType: hard
+
"write-file-atomic@npm:^4.0.2":
version: 4.0.2
resolution: "write-file-atomic@npm:4.0.2"
@@ -30823,6 +31172,21 @@ __metadata:
languageName: node
linkType: hard
+"ws@npm:8.5.0":
+ version: 8.5.0
+ resolution: "ws@npm:8.5.0"
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ checksum: 10/f0ee700970a0bf925b1ec213ca3691e84fb8b435a91461fe3caf52f58c6cec57c99ed5890fbf6978824c932641932019aafc55d864cad38ac32577496efd5d3a
+ languageName: node
+ linkType: hard
+
"ws@npm:^6.1.0":
version: 6.2.2
resolution: "ws@npm:6.2.2"
@@ -30832,6 +31196,21 @@ __metadata:
languageName: node
linkType: hard
+"ws@npm:^7.0.0":
+ version: 7.5.9
+ resolution: "ws@npm:7.5.9"
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ checksum: 10/171e35012934bd8788150a7f46f963e50bac43a4dc524ee714c20f258693ac4d3ba2abadb00838fdac42a47af9e958c7ae7e6f4bc56db047ba897b8a2268cf7c
+ languageName: node
+ linkType: hard
+
"ws@npm:^8.11.0, ws@npm:^8.13.0, ws@npm:^8.2.3":
version: 8.16.0
resolution: "ws@npm:8.16.0"
@@ -30847,6 +31226,13 @@ __metadata:
languageName: node
linkType: hard
+"xdg-basedir@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "xdg-basedir@npm:4.0.0"
+ checksum: 10/0073d5b59a37224ed3a5ac0dd2ec1d36f09c49f0afd769008a6e9cd3cd666bd6317bd1c7ce2eab47e1de285a286bad11a9b038196413cd753b79770361855f3c
+ languageName: node
+ linkType: hard
+
"xml-name-validator@npm:^4.0.0":
version: 4.0.0
resolution: "xml-name-validator@npm:4.0.0"
@@ -30980,7 +31366,7 @@ __metadata:
languageName: node
linkType: hard
-"yargs-parser@npm:21.1.1, yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1":
+"yargs-parser@npm:21.1.1, yargs-parser@npm:^21.0.0, yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1":
version: 21.1.1
resolution: "yargs-parser@npm:21.1.1"
checksum: 10/9dc2c217ea3bf8d858041252d43e074f7166b53f3d010a8c711275e09cd3d62a002969a39858b92bbda2a6a63a585c7127014534a560b9c69ed2d923d113406e