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

-
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