mirror of
https://github.com/facebook/docusaurus.git
synced 2025-04-28 09:47:48 +02:00
test: add visual regression tests with Argos CI (#8947)
This commit is contained in:
parent
7e09ae0c57
commit
44b5b06814
11 changed files with 403 additions and 13 deletions
|
@ -31,6 +31,7 @@
|
|||
"website/docusaurus.config.localized.json",
|
||||
"*.xyz",
|
||||
"*.docx",
|
||||
"*.gitignore",
|
||||
"versioned_docs",
|
||||
"*.min.*",
|
||||
"jest/vendor"
|
||||
|
|
39
.github/workflows/argos.yml
vendored
Normal file
39
.github/workflows/argos.yml
vendored
Normal file
|
@ -0,0 +1,39 @@
|
|||
name: Argos CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
take-screenshots:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
# A minimal fetch-depth of 2 is required
|
||||
# to automatically detect branch in @argos-ci/cli
|
||||
fetch-depth: 2
|
||||
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- name: Install dependencies
|
||||
run: yarn install --frozen-lockfile
|
||||
|
||||
- name: Install Playwright browsers
|
||||
run: npx playwright install --with-deps
|
||||
|
||||
- name: Build website fast
|
||||
run: yarn build:website:fast
|
||||
|
||||
- name: Take Argos screenshots
|
||||
run: yarn argos:screenshot
|
||||
|
||||
- name: Upload Argos screenshots
|
||||
continue-on-error: true
|
||||
run: yarn argos:upload
|
5
argos/.gitignore
vendored
Normal file
5
argos/.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
|
||||
/screenshots/
|
||||
/test-results/
|
||||
/playwright-report/
|
||||
/playwright/.cache/
|
21
argos/README.md
Normal file
21
argos/README.md
Normal file
|
@ -0,0 +1,21 @@
|
|||
# Argos visual regression tests
|
||||
|
||||
We use [Argos CI](https://argos-ci.com) to detect visual regressions on Docusaurus.
|
||||
|
||||
This workspace can be run manually, but is generally run through the [Argos GitHub Action](../.github/workflows/argos.yml).
|
||||
|
||||
The workflow execute those following steps:
|
||||
|
||||
- Build the website locally with `yarn build:website:fast`
|
||||
- Start the website server with `yarn serve:website` on [http://localhost:3000](http://localhost:3000)
|
||||
- Take screenshots of all pages found in `sitemap.xml` with Playwright
|
||||
- Upload all screenshots to [Argos CI](https://argos-ci.com)
|
||||
|
||||
This workflow runs for `main` and PR branches, and add a commit status to each PR with a visual diff that we can easily inspect.
|
||||
|
||||
---
|
||||
|
||||
Some additional capabilities:
|
||||
|
||||
- Use [./tests/screenshot.spec.ts](./tests/screenshot.spec.ts) to customize the screenshots we take, eventually filter out some useless sitemap pages like versioned docs
|
||||
- Use [./tests/screenshot.css](./tests/screenshot.css) to hide flaky CSS elements: iframe, video, gif...
|
18
argos/package.json
Normal file
18
argos/package.json
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"name": "argos",
|
||||
"version": "3.0.0-alpha.0",
|
||||
"description": "Argos visual diff tests",
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"screenshot": "playwright test",
|
||||
"upload": "npx @argos-ci/cli upload ./screenshots",
|
||||
"report": "playwright show-report"
|
||||
},
|
||||
"dependencies": {
|
||||
"@argos-ci/cli": "^0.4.4",
|
||||
"@argos-ci/playwright": "^0.0.4",
|
||||
"@playwright/test": "^1.30.0",
|
||||
"cheerio": "^1.0.0-rc.12"
|
||||
}
|
||||
}
|
36
argos/playwright.config.ts
Normal file
36
argos/playwright.config.ts
Normal file
|
@ -0,0 +1,36 @@
|
|||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
import {devices} from '@playwright/test';
|
||||
import type {PlaywrightTestConfig} from '@playwright/test';
|
||||
|
||||
/**
|
||||
* See https://playwright.dev/docs/test-configuration.
|
||||
*/
|
||||
const config: PlaywrightTestConfig = {
|
||||
testDir: './tests',
|
||||
|
||||
// Run website production built
|
||||
// Need to run "yarn website:build:fast" before
|
||||
webServer: {
|
||||
cwd: '..',
|
||||
port: 3000,
|
||||
command: 'yarn serve:website',
|
||||
},
|
||||
|
||||
// Browsers: only Chrome for now
|
||||
projects: [
|
||||
{
|
||||
name: 'chromium',
|
||||
use: {
|
||||
...devices['Desktop Chrome'],
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default config;
|
19
argos/tests/screenshot.css
Normal file
19
argos/tests/screenshot.css
Normal file
|
@ -0,0 +1,19 @@
|
|||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/*
|
||||
Things to hide in Argos screenshots because it's source of flakiness
|
||||
*/
|
||||
iframe,
|
||||
article.yt-lite,
|
||||
.theme-last-updated,
|
||||
.avatar__photo,
|
||||
img[src$='.gif'],
|
||||
h2#using-jsx-markup ~ div > div[class*='browserWindowBody']:has(b),
|
||||
[class*='playgroundPreview'] {
|
||||
visibility: hidden;
|
||||
}
|
91
argos/tests/screenshot.spec.ts
Normal file
91
argos/tests/screenshot.spec.ts
Normal file
|
@ -0,0 +1,91 @@
|
|||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
import * as fs from 'fs';
|
||||
import {test} from '@playwright/test';
|
||||
import {argosScreenshot} from '@argos-ci/playwright';
|
||||
import * as cheerio from 'cheerio';
|
||||
|
||||
const siteUrl = 'http://localhost:3000';
|
||||
const sitemapPath = '../website/build/sitemap.xml';
|
||||
const stylesheetPath = './tests/screenshot.css';
|
||||
|
||||
// eslint-disable-next-line no-restricted-properties
|
||||
const sitemap = fs.readFileSync(sitemapPath).toString();
|
||||
// eslint-disable-next-line no-restricted-properties
|
||||
const stylesheet = fs.readFileSync(stylesheetPath).toString();
|
||||
|
||||
function extractSitemapUrls() {
|
||||
const $ = cheerio.load(sitemap, {xmlMode: true});
|
||||
const urls: string[] = [];
|
||||
$('loc').each(function handleLoc() {
|
||||
urls.push($(this).text());
|
||||
});
|
||||
return urls;
|
||||
}
|
||||
|
||||
function isBlacklisted(pathname: string) {
|
||||
// Some paths explicitly blacklisted
|
||||
const BlacklistedPathnames: string[] = [
|
||||
'/feature-requests', // Flaky because of Canny widget
|
||||
'/community/canary', // Flaky because of dynamic canary version fetched from npm
|
||||
];
|
||||
|
||||
return (
|
||||
// changelog docs
|
||||
pathname.startsWith('/changelog') ||
|
||||
// versioned docs
|
||||
pathname.match(/^\/docs\/((\d\.\d\.\d)|(next))\//) ||
|
||||
// manually excluded urls
|
||||
BlacklistedPathnames.includes(pathname)
|
||||
);
|
||||
}
|
||||
|
||||
function getPathnames(): string[] {
|
||||
const urls = extractSitemapUrls();
|
||||
const pathnamesUnfiltered = urls.map((url) => new URL(url).pathname);
|
||||
const pathnames = pathnamesUnfiltered.filter(
|
||||
(pathname) => !isBlacklisted(pathname),
|
||||
);
|
||||
pathnames.sort();
|
||||
console.log('Pathnames:\n', JSON.stringify(pathnames, null, 2));
|
||||
console.log('Pathnames before filtering', pathnamesUnfiltered.length);
|
||||
console.log('Pathnames after filtering', pathnames.length);
|
||||
return pathnames;
|
||||
}
|
||||
|
||||
function pathnameToArgosName(pathname: string): string {
|
||||
function removeTrailingSlash(str: string): string {
|
||||
return str.endsWith('/') ? str.slice(0, -1) : str;
|
||||
}
|
||||
function removeLeadingSlash(str: string): string {
|
||||
return str.startsWith('/') ? str.slice(1) : str;
|
||||
}
|
||||
|
||||
pathname = removeTrailingSlash(pathname);
|
||||
pathname = removeLeadingSlash(pathname);
|
||||
|
||||
if (pathname === '') {
|
||||
return 'index';
|
||||
}
|
||||
|
||||
return pathname;
|
||||
}
|
||||
|
||||
function createPathnameTest(pathname: string) {
|
||||
test(`pathname ${pathname}`, async ({page}) => {
|
||||
const url = siteUrl + pathname;
|
||||
await page.goto(url);
|
||||
await page.addStyleTag({content: stylesheet});
|
||||
// await expect(page).toHaveScreenshot({ fullPage: true, ...options });
|
||||
await argosScreenshot(page, pathnameToArgosName(pathname));
|
||||
});
|
||||
}
|
||||
|
||||
test.describe('Docusaurus site screenshots', () => {
|
||||
const pathnames = getPathnames();
|
||||
pathnames.forEach(createPathnameTest);
|
||||
});
|
1
jest.config.mjs
vendored
1
jest.config.mjs
vendored
|
@ -26,6 +26,7 @@ const ignorePatterns = [
|
|||
'/packages/docusaurus-theme-common/lib',
|
||||
'/packages/docusaurus-migrate/lib',
|
||||
'/jest',
|
||||
'/argos',
|
||||
];
|
||||
|
||||
export default {
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
"private": true,
|
||||
"workspaces": [
|
||||
"packages/*",
|
||||
"argos",
|
||||
"website",
|
||||
"test-website-in-workspace",
|
||||
"packages/create-docusaurus/templates/*",
|
||||
|
@ -37,6 +38,8 @@
|
|||
"crowdin:upload:website": "crowdin upload sources --config ./crowdin-v2.yaml",
|
||||
"crowdin:download": "crowdin download --config ./crowdin-v2.yaml",
|
||||
"crowdin:download:website": "yarn crowdin:download --language fr --language ko --language pt-BR --language zh-CN --language ja",
|
||||
"argos:screenshot": "yarn workspace argos screenshot",
|
||||
"argos:upload": "yarn workspace argos upload",
|
||||
"canary": "yarn canary:bumpVersion && yarn canary:publish",
|
||||
"canary:version": "echo 0.0.0-`git rev-list --count HEAD`+`git rev-parse --short HEAD`",
|
||||
"canary:bumpVersion": "yarn lerna version `yarn --silent canary:version` --exact --no-push --yes",
|
||||
|
|
182
yarn.lock
182
yarn.lock
|
@ -147,6 +147,34 @@
|
|||
jsonpointer "^5.0.0"
|
||||
leven "^3.1.0"
|
||||
|
||||
"@argos-ci/cli@^0.4.4":
|
||||
version "0.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@argos-ci/cli/-/cli-0.4.4.tgz#e5c62ad377312861d90d56993556316415354523"
|
||||
integrity sha512-qthyP+ZSgbVgJXtBSc+4wKHRsQLAYoyMfgnkZYmfEEiISGmrMClEnZtbZa1KnEZDb8FlBae1RM6AZvjENgP9Og==
|
||||
dependencies:
|
||||
"@argos-ci/core" "^0.8.0"
|
||||
commander "^9.4.1"
|
||||
ora "^6.1.2"
|
||||
update-notifier "^6.0.2"
|
||||
|
||||
"@argos-ci/core@^0.8.0":
|
||||
version "0.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@argos-ci/core/-/core-0.8.0.tgz#d739fa46d6742211ceaab41be0fd24588cf1f34d"
|
||||
integrity sha512-MwCeTos8Fov5V+ybrkcFyMVWgsumDRHUokMOgyYt2gdJ5q0LdEp9wNz0VVIDAGSjyLTTbWqdkVCuaOkw5sz3LQ==
|
||||
dependencies:
|
||||
axios "1.1.2"
|
||||
convict "^6.2.3"
|
||||
debug "^4.3.4"
|
||||
env-ci "^7.3.0"
|
||||
fast-glob "^3.2.12"
|
||||
sharp "^0.31.1"
|
||||
tmp "^0.2.1"
|
||||
|
||||
"@argos-ci/playwright@^0.0.4":
|
||||
version "0.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@argos-ci/playwright/-/playwright-0.0.4.tgz#210bc9c7fc93908deadc6f9bb96a180654fbfa9e"
|
||||
integrity sha512-Aiqo7yFuhN+DDy4X6BJnW+0L1RDTjHaTTbAGIJCiQmXefDp3Ic7aqxmt3kOSLsi6KoltFqLbp06rL9XXaoRg9w==
|
||||
|
||||
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.8.3":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
|
||||
|
@ -2440,6 +2468,16 @@
|
|||
os-homedir "^1.0.1"
|
||||
regexpu-core "^4.5.4"
|
||||
|
||||
"@playwright/test@^1.30.0":
|
||||
version "1.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.33.0.tgz#669ef859efb81b143dfc624eef99d1dd92a81b67"
|
||||
integrity sha512-YunBa2mE7Hq4CfPkGzQRK916a4tuZoVx/EpLjeWlTVOnD4S2+fdaQZE0LJkbfhN5FTSKNLdcl7MoT5XB37bTkg==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
playwright-core "1.33.0"
|
||||
optionalDependencies:
|
||||
fsevents "2.3.2"
|
||||
|
||||
"@pnpm/config.env-replace@^1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.0.0.tgz#c76fa65847c9554e88d910f264c2ba9a1575e833"
|
||||
|
@ -4212,6 +4250,15 @@ axe-core@^4.6.2:
|
|||
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.3.tgz#fc0db6fdb65cc7a80ccf85286d91d64ababa3ece"
|
||||
integrity sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==
|
||||
|
||||
axios@1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.2.tgz#8b6f6c540abf44ab98d9904e8daf55351ca4a331"
|
||||
integrity sha512-bznQyETwElsXl2RK7HLLwb5GPpOLlycxHCtrpDR/4RqqBzjARaOTo3jz4IgtntWUYee7Ne4S8UHd92VCuzPaWA==
|
||||
dependencies:
|
||||
follow-redirects "^1.15.0"
|
||||
form-data "^4.0.0"
|
||||
proxy-from-env "^1.1.0"
|
||||
|
||||
axios@^0.27.2:
|
||||
version "0.27.2"
|
||||
resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972"
|
||||
|
@ -4419,6 +4466,15 @@ bl@^4.0.3, bl@^4.1.0:
|
|||
inherits "^2.0.4"
|
||||
readable-stream "^3.4.0"
|
||||
|
||||
bl@^5.0.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273"
|
||||
integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==
|
||||
dependencies:
|
||||
buffer "^6.0.3"
|
||||
inherits "^2.0.4"
|
||||
readable-stream "^3.4.0"
|
||||
|
||||
bluebird@~3.4.1:
|
||||
version "3.4.7"
|
||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3"
|
||||
|
@ -4559,6 +4615,14 @@ buffer@^5.5.0:
|
|||
base64-js "^1.3.1"
|
||||
ieee754 "^1.1.13"
|
||||
|
||||
buffer@^6.0.3:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
|
||||
integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
|
||||
dependencies:
|
||||
base64-js "^1.3.1"
|
||||
ieee754 "^1.2.1"
|
||||
|
||||
buffers@~0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb"
|
||||
|
@ -4769,7 +4833,7 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2:
|
|||
ansi-styles "^4.1.0"
|
||||
supports-color "^7.1.0"
|
||||
|
||||
chalk@^5.0.1:
|
||||
chalk@^5.0.0, chalk@^5.0.1:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3"
|
||||
integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==
|
||||
|
@ -4933,6 +4997,13 @@ cli-cursor@3.1.0, cli-cursor@^3.1.0:
|
|||
dependencies:
|
||||
restore-cursor "^3.1.0"
|
||||
|
||||
cli-cursor@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea"
|
||||
integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==
|
||||
dependencies:
|
||||
restore-cursor "^4.0.0"
|
||||
|
||||
cli-highlight@^2.1.11:
|
||||
version "2.1.11"
|
||||
resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf"
|
||||
|
@ -4950,10 +5021,10 @@ cli-spinners@2.6.1:
|
|||
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d"
|
||||
integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==
|
||||
|
||||
cli-spinners@^2.5.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a"
|
||||
integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==
|
||||
cli-spinners@^2.5.0, cli-spinners@^2.6.1:
|
||||
version "2.8.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.8.0.tgz#e97a3e2bd00e6d85aa0c13d7f9e3ce236f7787fc"
|
||||
integrity sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ==
|
||||
|
||||
cli-table3@^0.6.3:
|
||||
version "0.6.3"
|
||||
|
@ -5421,6 +5492,14 @@ convert-source-map@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
|
||||
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
|
||||
|
||||
convict@^6.2.3:
|
||||
version "6.2.4"
|
||||
resolved "https://registry.yarnpkg.com/convict/-/convict-6.2.4.tgz#be290672bf6397eec808d3b11fc5f71785b02a4b"
|
||||
integrity sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==
|
||||
dependencies:
|
||||
lodash.clonedeep "^4.5.0"
|
||||
yargs-parser "^20.2.7"
|
||||
|
||||
cookie-signature@1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
|
||||
|
@ -6650,6 +6729,15 @@ entities@^4.2.0, entities@^4.3.0, entities@^4.4.0:
|
|||
resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174"
|
||||
integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==
|
||||
|
||||
env-ci@^7.3.0:
|
||||
version "7.3.0"
|
||||
resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-7.3.0.tgz#737502bc7f7cc9d1863541681157b208b6683fa7"
|
||||
integrity sha512-L8vK54CSjKB4pwlwx0YaqeBdUSGufaLHl/pEgD+EqnMrYCVUA8HzMjURALSyvOlC57e953yN7KyXS63qDoc3Rg==
|
||||
dependencies:
|
||||
execa "^5.0.0"
|
||||
fromentries "^1.3.2"
|
||||
java-properties "^1.0.0"
|
||||
|
||||
env-paths@^2.2.0:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
|
||||
|
@ -7599,6 +7687,11 @@ fresh@0.5.2:
|
|||
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
|
||||
integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
|
||||
|
||||
fromentries@^1.3.2:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a"
|
||||
integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==
|
||||
|
||||
fs-constants@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
|
||||
|
@ -7647,7 +7740,7 @@ fs.realpath@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
|
||||
|
||||
fsevents@^2.3.2, fsevents@~2.3.2:
|
||||
fsevents@2.3.2, fsevents@^2.3.2, fsevents@~2.3.2:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
|
||||
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
|
||||
|
@ -8527,7 +8620,7 @@ idb@^7.0.1:
|
|||
resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b"
|
||||
integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==
|
||||
|
||||
ieee754@^1.1.13:
|
||||
ieee754@^1.1.13, ieee754@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
|
||||
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
|
||||
|
@ -8898,6 +8991,11 @@ is-interactive@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
|
||||
integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==
|
||||
|
||||
is-interactive@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90"
|
||||
integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==
|
||||
|
||||
is-lambda@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5"
|
||||
|
@ -9093,6 +9191,11 @@ is-unicode-supported@^0.1.0:
|
|||
resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
|
||||
integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
|
||||
|
||||
is-unicode-supported@^1.1.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714"
|
||||
integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==
|
||||
|
||||
is-weakmap@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2"
|
||||
|
@ -9212,6 +9315,11 @@ jake@^10.8.5:
|
|||
filelist "^1.0.1"
|
||||
minimatch "^3.0.4"
|
||||
|
||||
java-properties@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-1.0.2.tgz#ccd1fa73907438a5b5c38982269d0e771fe78211"
|
||||
integrity sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==
|
||||
|
||||
jest-changed-files@^29.5.0:
|
||||
version "29.5.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.5.0.tgz#e88786dca8bf2aa899ec4af7644e16d9dcf9b23e"
|
||||
|
@ -10182,6 +10290,11 @@ lodash-es@^4.17.21:
|
|||
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
|
||||
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
|
||||
|
||||
lodash.clonedeep@^4.5.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
|
||||
integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
|
||||
|
||||
lodash.curry@^4.0.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170"
|
||||
|
@ -10240,6 +10353,14 @@ log-symbols@^4.1.0:
|
|||
chalk "^4.1.0"
|
||||
is-unicode-supported "^0.1.0"
|
||||
|
||||
log-symbols@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.1.0.tgz#a20e3b9a5f53fac6aeb8e2bb22c07cf2c8f16d93"
|
||||
integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==
|
||||
dependencies:
|
||||
chalk "^5.0.0"
|
||||
is-unicode-supported "^1.1.0"
|
||||
|
||||
log-update@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1"
|
||||
|
@ -12008,6 +12129,21 @@ ora@^5.4.1:
|
|||
strip-ansi "^6.0.0"
|
||||
wcwidth "^1.0.1"
|
||||
|
||||
ora@^6.1.2:
|
||||
version "6.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ora/-/ora-6.3.0.tgz#a314600999f514a989a0904f5c17c8b7c1f7c878"
|
||||
integrity sha512-1/D8uRFY0ay2kgBpmAwmSA404w4OoPVhHMqRqtjvrcK/dnzcEZxMJ+V4DUbyICu8IIVRclHcOf5wlD1tMY4GUQ==
|
||||
dependencies:
|
||||
chalk "^5.0.0"
|
||||
cli-cursor "^4.0.0"
|
||||
cli-spinners "^2.6.1"
|
||||
is-interactive "^2.0.0"
|
||||
is-unicode-supported "^1.1.0"
|
||||
log-symbols "^5.1.0"
|
||||
stdin-discarder "^0.1.0"
|
||||
strip-ansi "^7.0.1"
|
||||
wcwidth "^1.0.1"
|
||||
|
||||
os-homedir@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
|
||||
|
@ -12503,6 +12639,11 @@ pkg-up@^3.1.0:
|
|||
dependencies:
|
||||
find-up "^3.0.0"
|
||||
|
||||
playwright-core@1.33.0:
|
||||
version "1.33.0"
|
||||
resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.33.0.tgz#269efe29a927cd6d144d05f3c2d2f72bd72447a1"
|
||||
integrity sha512-aizyPE1Cj62vAECdph1iaMILpT0WUDCq3E6rW6I+dleSbBoGbktvJtzS6VHkZ4DKNEOG9qJpiom/ZxO+S15LAw==
|
||||
|
||||
postcss-calc@^8.2.3:
|
||||
version "8.2.4"
|
||||
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5"
|
||||
|
@ -12853,9 +12994,9 @@ prelude-ls@~1.1.2:
|
|||
integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==
|
||||
|
||||
prettier@^2.8.4:
|
||||
version "2.8.4"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3"
|
||||
integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==
|
||||
version "2.8.8"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da"
|
||||
integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
|
||||
|
||||
pretty-bytes@^5.3.0, pretty-bytes@^5.6.0:
|
||||
version "5.6.0"
|
||||
|
@ -13955,6 +14096,14 @@ restore-cursor@^3.1.0:
|
|||
onetime "^5.1.0"
|
||||
signal-exit "^3.0.2"
|
||||
|
||||
restore-cursor@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9"
|
||||
integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==
|
||||
dependencies:
|
||||
onetime "^5.1.0"
|
||||
signal-exit "^3.0.2"
|
||||
|
||||
retry@^0.12.0:
|
||||
version "0.12.0"
|
||||
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
|
||||
|
@ -14298,7 +14447,7 @@ shallowequal@^1.1.0:
|
|||
resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
|
||||
integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
|
||||
|
||||
sharp@^0.31.3:
|
||||
sharp@^0.31.1, sharp@^0.31.3:
|
||||
version "0.31.3"
|
||||
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.31.3.tgz#60227edc5c2be90e7378a210466c99aefcf32688"
|
||||
integrity sha512-XcR4+FCLBFKw1bdB+GEhnUNXNXvnt0tDo4WsBsraKymuo/IAuPuCBVAL2wIkUw2r/dwFW5Q5+g66Kwl2dgDFVg==
|
||||
|
@ -14664,6 +14813,13 @@ std-env@^3.0.1:
|
|||
resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.3.2.tgz#af27343b001616015534292178327b202b9ee955"
|
||||
integrity sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==
|
||||
|
||||
stdin-discarder@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/stdin-discarder/-/stdin-discarder-0.1.0.tgz#22b3e400393a8e28ebf53f9958f3880622efde21"
|
||||
integrity sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==
|
||||
dependencies:
|
||||
bl "^5.0.0"
|
||||
|
||||
stop-iteration-iterator@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4"
|
||||
|
@ -15220,7 +15376,7 @@ tmp@^0.0.33:
|
|||
dependencies:
|
||||
os-tmpdir "~1.0.2"
|
||||
|
||||
tmp@^0.2.0, tmp@~0.2.1:
|
||||
tmp@^0.2.0, tmp@^0.2.1, tmp@~0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
|
||||
integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
|
||||
|
@ -16647,7 +16803,7 @@ yargs-parser@21.1.1, yargs-parser@^21.1.1:
|
|||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
|
||||
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
|
||||
|
||||
yargs-parser@^20.2.2, yargs-parser@^20.2.3:
|
||||
yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^20.2.7:
|
||||
version "20.2.9"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
|
||||
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
|
||||
|
|
Loading…
Add table
Reference in a new issue