diff --git a/.codesandbox/ci.json b/.codesandbox/ci.json
index 6610e457b..b24e32b2c 100644
--- a/.codesandbox/ci.json
+++ b/.codesandbox/ci.json
@@ -1,5 +1,5 @@
{
"packages": ["sandpack-client", "sandpack-react"],
- "sandboxes": ["sowx8r", "p9l5gn"],
+ "sandboxes": ["sowx8r"],
"node": "14"
}
diff --git a/.eslintignore b/.eslintignore
index 4bce95fdf..5971abb9a 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -2,5 +2,4 @@ dist/
esm/
sandpack/
file-resolver-protocol.ts
-examples/
-cypress/
\ No newline at end of file
+examples/
\ No newline at end of file
diff --git a/.eslintrc b/.eslintrc
index 0911add98..0a8eedaac 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -8,8 +8,7 @@
// TypeScript specific rules
"plugin:@typescript-eslint/recommended",
// Disable eslint rules that conflict with Prettier's formatting
- "prettier",
- "plugin:cypress/recommended"
+ "prettier"
],
"parser": "@typescript-eslint/parser",
"rules": {
diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml
index b29847dba..7a61be1c6 100644
--- a/.github/workflows/checks.yml
+++ b/.github/workflows/checks.yml
@@ -92,57 +92,10 @@ jobs:
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- chromatic-deployment:
- name: Chromatic deployment
- runs-on: ubuntu-latest
- timeout-minutes: 10
- needs: install
- steps:
- - name: Setup | Checkout
- uses: actions/checkout@v1
-
- - name: Setup | Node.js
- uses: actions/setup-node@v2
- with:
- node-version-file: .nvmrc
-
- - name: Setup | Cache node_modules
- uses: actions/cache@v3
- with:
- path: |
- node_modules
- packages/*/node_modules
- key: modules-${{ hashFiles('yarn.lock') }}
-
- - name: Setup | Restore react build
- uses: actions/download-artifact@v2
- with:
- name: sandpack-react-${{ github.sha }}
- path: sandpack-react/dist
-
- - name: Setup | Restore client build
- uses: actions/download-artifact@v2
- with:
- name: sandpack-client-${{ github.sha }}
- path: sandpack-client/dist
-
- - name: Setup | Restore theme build
- uses: actions/download-artifact@v2
- with:
- name: sandpack-themes-${{ github.sha }}
- path: sandpack-themes/dist
-
- - name: Publish to Chromatic
- uses: chromaui/action@v1
- with:
- token: ${{ secrets.GITHUB_TOKEN }}
- projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
- buildScriptName: "chromatic:react"
-
integration:
name: Integration tests
runs-on: ubuntu-latest
- timeout-minutes: 10
+ timeout-minutes: 20
needs: install
steps:
- name: Setup | Checkout
@@ -179,11 +132,18 @@ jobs:
name: sandpack-themes-${{ github.sha }}
path: sandpack-themes/dist
- - name: Cypress run
- uses: cypress-io/github-action@v2
+ - name: Install Playwright Browsers
+ run: npx playwright install --with-deps
+
+ - name: Run Playwright tests
+ run: cd sandpack-react && npx playwright test
+
+ - uses: actions/upload-artifact@v2
+ if: always()
with:
- start: yarn dev:react
- config: video=false
+ name: playwright-report
+ path: sandpack-react/playwright-report/
+ retention-days: 30
test:
name: Unit tests
diff --git a/.gitignore b/.gitignore
index b3564f6b6..2d5c7172b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -106,6 +106,3 @@ dist
# Mac
.DS_Store
-
-cypress/videos
-cypress/screenshots
\ No newline at end of file
diff --git a/cypress.json b/cypress.json
deleted file mode 100644
index 8aa304947..000000000
--- a/cypress.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "baseUrl": "http://localhost:6006",
- "snapshotFileName": "./cypress/snapshots.js",
- "chromeWebSecurity": false,
- "projectId": "n9y1sd"
-}
diff --git a/cypress/fixtures/example.json b/cypress/fixtures/example.json
deleted file mode 100644
index 02e425437..000000000
--- a/cypress/fixtures/example.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "Using fixtures to represent data",
- "email": "hello@cypress.io",
- "body": "Fixtures are a great way to mock data for responses to routes"
-}
diff --git a/cypress/integration/CodeMirror.spec.js b/cypress/integration/CodeMirror.spec.js
deleted file mode 100644
index a88085c5a..000000000
--- a/cypress/integration/CodeMirror.spec.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import * as mocks from "../../sandpack-react/src/components/CodeEditor/languages-mocks";
-
-describe("CodeMirror", () => {
- Object.keys(mocks).forEach((lang, index) => {
- it(`Should render a "${lang}" component with a proper syntax-highlight`, () => {
- cy.viewport(600, 1000).visit(
- `/iframe.html?id=components-codemirror--${lang}`
- );
- cy.get(".cm-content")
- .wait(index === 0 ? 400 : 0) // warm-up storybook
- .invoke("attr", "style", "tab-size: 4;")
- .snapshot();
- });
- });
-
- it("should render a decoration component properly", () => {
- cy.viewport(600, 1000).visit(
- `/iframe.html?id=components-code-viewer--decorators`
- );
-
- cy.get(".cm-content").invoke("attr", "style", "tab-size: 4;").snapshot();
- });
-
- it("should load the autocomplete CodeMirror extension", () => {
- cy.viewport(600, 1000).visit(
- `/iframe.html?id=components-code-editor--extension-autocomplete`
- );
-
- // Remove all content from element editable
- cy.get(".cm-content").type("{selectall}").type("{backspace}");
-
- // Trigger autocomplete keybinding
- cy.get(".cm-content").type("{ctrl} ");
-
- // Wait for the autocomplete modal appears and select the first item
- // eslint-disable-next-line cypress/no-unnecessary-waiting
- cy.wait(200).focused().type("{enter}");
-
- /**
- * Take a snapshot of the current editor state,
- * which should contains a snippet code:
- *
- * ```
- * class name {
- * constructor(params) {
- *
- * }
- * }
- * ```
- */
- cy.get(".cm-content").snapshot();
- });
-});
diff --git a/cypress/integration/CodeViewer.spec.js b/cypress/integration/CodeViewer.spec.js
deleted file mode 100644
index 41ff954bd..000000000
--- a/cypress/integration/CodeViewer.spec.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import "cypress-real-events/support";
-
-describe("CodeViewer", () => {
- it("should not be editable", () => {
- cy.viewport(600, 1000).visit(
- `/iframe.html?id=components-code-viewer--component`
- );
-
- cy.get(".cm-content").should("have.attr", "contenteditable", "false");
- });
-
- it("should not be able to cut the content", () => {
- cy.viewport(600, 1000).visit(
- `/iframe.html?id=components-code-viewer--component`
- );
-
- // Force select and Command+X: it should fail for non-ready-only component
- cy.get(".cm-content").trigger("mousedown").realPress(["Meta", "x"]);
-
- // content should still be there
- cy.get(".cm-content").snapshot();
- });
-});
diff --git a/cypress/integration/Issues.spec.js b/cypress/integration/Issues.spec.js
deleted file mode 100644
index c4c90ad1f..000000000
--- a/cypress/integration/Issues.spec.js
+++ /dev/null
@@ -1,20 +0,0 @@
-describe("Issue", () => {
- it("toggles read-only mode (#454)", () => {
- cy.viewport(600, 1000).visit(
- `/iframe.html?id=bug-reports-issues--issue-454`
- );
-
- // 1. it's editable
- cy.get(".cm-content").should("have.attr", "contenteditable", "true");
-
- // 2. click on button and set read-only as true
- cy.get(".trigger").click();
-
- // 3. it's not editable
- cy.get(".cm-content").should("have.attr", "contenteditable", "false");
-
- // 4. make sure the editor is mount
- cy.get(".cm-editor").should("exist");
- cy.get(".pre-placeholder").should("not.exist");
- });
-});
diff --git a/cypress/integration/Sandpack.spec.js b/cypress/integration/Sandpack.spec.js
deleted file mode 100644
index eb6fed9f9..000000000
--- a/cypress/integration/Sandpack.spec.js
+++ /dev/null
@@ -1,24 +0,0 @@
-const accessPage = (wait) => {
- // eslint-disable-next-line cypress/no-unnecessary-waiting
- cy.viewport(600, 1000)
- .visit(`/iframe.html?id=bug-reports-issues--file-tab`)
- .wait(wait ? 10000 : 0); // warm-up sandbox
-};
-
-describe("Sandpack", () => {
- it(`Should be able to navigate between files`, () => {
- accessPage();
-
- cy.get(".cm-content").should(
- "have.text",
- `export default function App() { return
Hello World
}`
- );
-
- cy.get(".sp-tabs-scrollable-container [title='/styles.css']").click();
-
- cy.get(".cm-content").should(
- "have.text",
- `body { font-family: sans-serif; -webkit-font-smoothing: auto; -moz-font-smoothing: auto; -moz-osx-font-smoothing: grayscale; font-smoothing: auto; text-rendering: optimizeLegibility; font-smooth: always; -webkit-tap-highlight-color: transparent; -webkit-touch-callout: none;}h1 { font-size: 1.5rem;}`
- );
- });
-});
diff --git a/cypress/integration/Templates.spec.js b/cypress/integration/Templates.spec.js
deleted file mode 100644
index 1c5b929c8..000000000
--- a/cypress/integration/Templates.spec.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import { SANDBOX_TEMPLATES } from "../../sandpack-react/src/templates";
-
-const accessPage = (template) => {
- const timeout = template === "solid" ? 20000 : 10000;
- // eslint-disable-next-line cypress/no-unnecessary-waiting
- cy.viewport(600, 1000)
- .visit(`/iframe.html?id=presets-template--${template}`)
- .wait(timeout); // warm-up sandbox
-};
-const getIframeDocument = () => {
- return cy.get(".sp-preview-iframe").its("0.contentDocument");
-};
-
-const getIframeBody = () => {
- return getIframeDocument()
- .its("body")
- .should("not.be.undefined")
- .then(cy.wrap);
-};
-
-describe("Templates", () => {
- Object.keys(SANDBOX_TEMPLATES).forEach((template) => {
- if (template === "test-ts") return null; // tests there is no preview
-
- it(`Should run the ${template} template`, () => {
- accessPage(template);
-
- getIframeBody().find("h1").should("have.text", "Hello World");
- });
- });
-});
diff --git a/cypress/plugins/index.js b/cypress/plugins/index.js
deleted file mode 100644
index 8229063ad..000000000
--- a/cypress/plugins/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-///
-// ***********************************************************
-// This example plugins/index.js can be used to load plugins
-//
-// You can change the location of this file or turn off loading
-// the plugins file with the 'pluginsFile' configuration option.
-//
-// You can read more here:
-// https://on.cypress.io/plugins-guide
-// ***********************************************************
-
-// This function is called when a project is opened or re-opened (e.g. due to
-// the project's config changing)
-
-/**
- * @type {Cypress.PluginConfig}
- */
-// eslint-disable-next-line no-unused-vars
-module.exports = (on, config) => {
- // `on` is used to hook into various events Cypress emits
- // `config` is the resolved Cypress config
-};
diff --git a/cypress/snapshots.js b/cypress/snapshots.js
deleted file mode 100644
index b1b676361..000000000
--- a/cypress/snapshots.js
+++ /dev/null
@@ -1,34 +0,0 @@
-module.exports = {
- __version: "9.6.1",
- CodeMirror: {
- 'Should render a "html" component with a proper syntax-highlight': {
- 1: '\n
\n
<!DOCTYPE html>
\n
<html lang="en">
\n
<head>
\n
<meta charset="UTF-8">
\n
<meta name="viewport" content="width=device-width,\n initial-scale=1.0">\n
\n
<meta http-equiv="X-UA-Compatible" content="ie=edge">
\n
<title>HTML 5 Boilerplate</title>
\n
<link rel="stylesheet" href="style.css">
\n
</head>
\n
<body>
\n
<script src="index.js"></script>
\n
</body>
\n
</html>
\n
\n
',
- },
- 'Should render a "js" component with a proper syntax-highlight': {
- 1: '\n
function Greeting({ name }) {
\n
return <h1>Hello, {name}!</h1>;
\n
}
\n
\n
export default function App() {
\n
return (
\n
<div>
\n
<Greeting name="Divyesh" />
\n
<Greeting name="Sarah" />
\n
<Greeting name="Taylor" />
\n
</div>
\n
);
\n
}
\n
',
- },
- 'Should render a "jsx" component with a proper syntax-highlight': {
- 1: '\n
function Greeting({ name }) {
\n
return <h1>Hello, {name}!</h1>;
\n
}
\n
\n
export default function App() {
\n
return (
\n
<div>
\n
<Greeting name="Divyesh" />
\n
<Greeting name="Sarah" />
\n
<Greeting name="Taylor" />
\n
</div>
\n
);
\n
}
\n
',
- },
- 'Should render a "css" component with a proper syntax-highlight': {
- 1: '\n
body\n {
\n
background-color: lightblue;
\n
}
\n
\n
h1 {
\n
color: white;
\n
text-align: center;
\n
}
\n
\n
p {
\n
font-family: verdana;
\n
font-size: 20px;
\n
}
\n
',
- },
- 'Should render a "less" component with a proper syntax-highlight': {
- 1: '\n
@width: 10px;
\n
@height: @width + 10px;
\n
\n
#header {\n
\n
width: @width;
\n
height: @height;
\n
}
\n
',
- },
- 'Should render a "vue" component with a proper syntax-highlight': {
- 1: '\n
<template>
\n
<div class="column is-12">
\n
<label class="label" for="email">Email</label>
\n
<p :class="{\n \'control\': true }">\n
\n
<input v-validate="\'required|email\'" :class="{\'input\': true, \'is-danger\': errors.has(\'email\')\n }" name="email" type="text" placeholder="Email">
\n
<span v-show="errors.has(\'email\')" class="help is-danger">{{ errors.first(\'email\') }}</span>
\n
</p>
\n
</div>
\n
</template>
\n
\n
<script>
\n
export default {
\n
name: \'basic-example\'
\n
};
\n
</script>
\n
',
- },
- "should render a decoration component properly": {
- 1: '\n
const\n people = [{
\n
id: 0,
\n
name: \'Creola Katherine Johnson\',
\n
profession: \'mathematician\',
\n
}, {
\n
id: 1,
\n
name: \'Mario José Molina-Pasquel Henríquez\',
\n
profession: \'chemist\',
\n
}];
\n
\n
export default function List() {
\n
const [text, setText] = useState("")
\n
const listItems = people.map(person =>
\n
<li>{person}</li>
\n
);
\n
return <ul>{listItems}</ul>;
\n
}
\n
',
- },
- "should load the autocomplete CodeMirror extension": {
- 1: '',
- },
- },
- CodeViewer: {
- "should not be able to cut the content": {
- 1: '\n
import "./styles.css";
\n
\n
document.getElementById("app").innerHTML = `
\n
<h1>Hello\n World</h1>
\n
<div>
\n
We use the same\n configuration as Parcel to bundle this sandbox, you can find more\n
\n
info about Parcel \n
\n
<a\n href="https://parceljs.org" target="_blank" rel="noopener\n noreferrer">here</a>.
\n
</div>
\n
`;
\n
\n
',
- },
- },
-};
diff --git a/cypress/support/commands.js b/cypress/support/commands.js
deleted file mode 100644
index ac61dbcc1..000000000
--- a/cypress/support/commands.js
+++ /dev/null
@@ -1 +0,0 @@
-require("@cypress/snapshot").register();
diff --git a/cypress/support/index.js b/cypress/support/index.js
deleted file mode 100644
index d076cec9f..000000000
--- a/cypress/support/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// ***********************************************************
-// This example support/index.js is processed and
-// loaded automatically before your test files.
-//
-// This is a great place to put global configuration and
-// behavior that modifies Cypress.
-//
-// You can change the location of this file or turn off
-// automatically serving support files with the
-// 'supportFile' configuration option.
-//
-// You can read more here:
-// https://on.cypress.io/configuration
-// ***********************************************************
-
-// Import commands.js using ES2015 syntax:
-import "./commands";
-
-// Alternatively you can use CommonJS syntax:
-// require('./commands')
diff --git a/package.json b/package.json
index 7813d221a..cd08fd6d8 100644
--- a/package.json
+++ b/package.json
@@ -19,17 +19,14 @@
"lint": "eslint '**/*.ts?(x)' --fix",
"format:check": "prettier --check '**/*.{ts,tsx}'",
"format": "prettier --write '**/*.{ts,tsx,js,jsx}'",
- "test": "TEST_ENV=true jest sandpack-react sandpack-client --transformIgnorePatterns \"node_modules/(?!@codemirror)/\"",
- "cy:open": "cypress open",
- "cy:run": "cypress run",
+ "test": "TEST_ENV=true jest sandpack-react sandpack-client --transformIgnorePatterns \"node_modules/(?!@codemirror)/\" --modulePathIgnorePatterns \"e2e\"",
"build": "yarn workspace @codesandbox/sandpack-client build && yarn workspace @codesandbox/sandpack-react build && yarn workspace @codesandbox/sandpack-themes build",
"prepare": "husky install",
"clean": "yarn workspaces run clean",
"dev:docs": "yarn workspace sandpack-docs start",
"dev:react": "yarn workspace @codesandbox/sandpack-react storybook",
"dev:landing": "yarn workspace sandpack-landing dev -p 3001",
- "dev:theme": "yarn workspace sandpack-theme dev -p 3002",
- "chromatic:react": "yarn workspace @codesandbox/sandpack-react build-storybook"
+ "dev:theme": "yarn workspace sandpack-theme dev -p 3002"
},
"repository": {
"type": "git",
@@ -41,19 +38,16 @@
"@babel/preset-env": "^7.16.5",
"@babel/preset-react": "^7.16.5",
"@babel/preset-typescript": "^7.16.5",
- "@cypress/snapshot": "^2.1.7",
"@octokit/rest": "^18.12.0",
"@types/jest": "^27.4.0",
"@typescript-eslint/eslint-plugin": "^4.0.0",
"@typescript-eslint/parser": "^4.0.0",
"babel-eslint": "^10.0.0",
"babel-jest": "^27.4.5",
- "cypress": "^9.1.1",
"esbuild": "^0.12.21",
"eslint": "^7.5.0",
"eslint-config-prettier": "^8.1.0",
"eslint-config-react-app": "^6.0.0",
- "eslint-plugin-cypress": "^2.12.1",
"eslint-plugin-flowtype": "^5.2.0",
"eslint-plugin-import": "^2.22.0",
"eslint-plugin-jsx-a11y": "^6.3.1",
@@ -67,7 +61,6 @@
"lint-staged": "^10.5.4",
"package-build-stats": "7.3.6",
"prettier": "^2.2.1",
- "react-test-renderer": "^18.1.0",
- "cypress-real-events": "^1.7.0"
+ "react-test-renderer": "^18.1.0"
}
}
diff --git a/sandpack-react/.gitignore b/sandpack-react/.gitignore
index 9419f1618..9fedbad73 100644
--- a/sandpack-react/.gitignore
+++ b/sandpack-react/.gitignore
@@ -3,3 +3,7 @@ storybook-static
.rpt2_cache
dist
.env
+node_modules/
+/test-results/
+/playwright-report/
+/playwright/.cache/
diff --git a/sandpack-react/e2e/codeviewer.spec.ts b/sandpack-react/e2e/codeviewer.spec.ts
new file mode 100644
index 000000000..5fcec2db3
--- /dev/null
+++ b/sandpack-react/e2e/codeviewer.spec.ts
@@ -0,0 +1,29 @@
+import { test, expect } from "@playwright/test";
+
+test.beforeEach(async ({ page }) => {
+ await page.goto(
+ "http://localhost:6006/iframe.html?id=components-code-viewer--component"
+ );
+});
+
+test.describe("CodeViewer", () => {
+ test("should not be editable", async ({ page }) => {
+ const content = page.locator(".cm-content");
+
+ // ✅
+ await expect(content).toHaveAttribute("contenteditable", "false");
+ });
+
+ test("should not be able to cut the content", async ({ page }) => {
+ await page.locator(".cm-content").click();
+
+ // Force select and Command+X: it should fail for non-ready-only component
+ page.keyboard.press("Meta+x");
+
+ // ✅ content should still be there
+ const content = await page.innerText(".cm-content");
+ expect(content).toContain(
+ `We use the same configuration as Parcel to bundle this sandbox, you can find more`
+ );
+ });
+});
diff --git a/sandpack-react/e2e/console.spec.ts b/sandpack-react/e2e/console.spec.ts
new file mode 100644
index 000000000..b225185ea
--- /dev/null
+++ b/sandpack-react/e2e/console.spec.ts
@@ -0,0 +1,23 @@
+import { test, expect } from "@playwright/test";
+
+test.describe("Console", () => {
+ test("should print the log on SandpackConsole component", async ({
+ page,
+ }) => {
+ await page.goto(
+ "http://localhost:6006/iframe.html?id=components-console--main"
+ );
+
+ // Dispatch a log
+ await page.frameLocator("iframe").locator("text=string").click();
+
+ // wait for console dispatch
+ await page.waitForTimeout(1000);
+
+ // ✅ find the console.log message
+ const consoleComponentText = await page
+ .locator(".sp-console pre")
+ .innerText();
+ expect(consoleComponentText).toContain('"Lorem ipsum"');
+ });
+});
diff --git a/sandpack-react/e2e/issues.spec.ts b/sandpack-react/e2e/issues.spec.ts
new file mode 100644
index 000000000..16af60ca1
--- /dev/null
+++ b/sandpack-react/e2e/issues.spec.ts
@@ -0,0 +1,28 @@
+import { test, expect } from "@playwright/test";
+
+test.describe("Issue", () => {
+ test("toggles read-only mode (#454)", async ({ page }) => {
+ await page.goto(
+ "http://localhost:6006/iframe.html?id=bug-reports-issues--issue-454"
+ );
+
+ // 1. it is not editable
+ await expect(page.locator(".cm-content")).toHaveAttribute(
+ "contenteditable",
+ "true"
+ );
+
+ // 2. click on button and set read-only as true
+ await page.locator(".trigger").click();
+
+ // 3. it's not editable
+ await expect(page.locator(".cm-content")).toHaveAttribute(
+ "contenteditable",
+ "false"
+ );
+
+ // ✅ 4. make sure the editor is mount
+ await expect(page.locator(".cm-editor")).toHaveCount(1);
+ await expect(page.locator(".pre-placeholder")).toHaveCount(0);
+ });
+});
diff --git a/sandpack-react/e2e/sandpack.spec.ts b/sandpack-react/e2e/sandpack.spec.ts
new file mode 100644
index 000000000..0a70bcbc1
--- /dev/null
+++ b/sandpack-react/e2e/sandpack.spec.ts
@@ -0,0 +1,76 @@
+import { test, expect } from "@playwright/test";
+
+test.describe("Sandpack", () => {
+ test("Should be able to run a sandbox and edit the content", async ({
+ page,
+ }) => {
+ await page.goto(
+ `http://localhost:6006/iframe.html?id=presets-template--react`
+ );
+
+ test.setTimeout(30000 * 3); // triple default
+
+ const headingIframe = await page
+ .frameLocator("iframe")
+ .locator("h1")
+ .innerText();
+
+ // ✅ Initial state
+ expect(headingIframe).toBe("Hello World");
+
+ // Insert new content
+ await page.locator(".cm-content").fill(`export default function App() {
+ return Hello Sandpack
+ }`);
+
+ // Wait to the bundler applies changes
+ await page.waitForTimeout(2000);
+
+ // ✅ Asset new content on iframe
+ const newHeadingIframe = await page
+ .frameLocator("iframe")
+ .locator("h1")
+ .innerText();
+ expect(newHeadingIframe).toBe("Hello Sandpack");
+ });
+
+ test("Should be able to navigate between files", async ({ page }) => {
+ await page.goto(
+ "http://localhost:6006/iframe.html?id=bug-reports-issues--file-tab"
+ );
+
+ const mainFileContent = await page.innerText("div.cm-content");
+
+ // ✅ Initial file
+ expect(mainFileContent).toBe(
+ `export default function App() {
+ return Hello World
+}
+
+`
+ );
+
+ // Change file
+ await page
+ .locator(".sp-tabs-scrollable-container [title='/styles.css']")
+ .click();
+
+ const secondFileContent = await page.innerText("div.cm-content");
+
+ // ✅ Second file
+ expect(secondFileContent).toContain(
+ `body {
+ font-family: sans-serif;
+ -webkit-font-smoothing: auto;
+ -moz-font-smoothing: auto;
+ -moz-osx-font-smoothing: grayscale;
+ font-smoothing: auto;
+ text-rendering: optimizeLegibility;
+ font-smooth: always;
+ -webkit-tap-highlight-color: transparent;
+ -webkit-touch-callout: none;
+}
+`
+ );
+ });
+});
diff --git a/sandpack-react/e2e/templates.spec.ts b/sandpack-react/e2e/templates.spec.ts
new file mode 100644
index 000000000..caa3f2183
--- /dev/null
+++ b/sandpack-react/e2e/templates.spec.ts
@@ -0,0 +1,25 @@
+import { test, expect } from "@playwright/test";
+
+import { SANDBOX_TEMPLATES } from "../src/templates";
+
+test.describe("Templates", () => {
+ Object.keys(SANDBOX_TEMPLATES).forEach((template) => {
+ if (template === "test-ts") return null; // tests there is no preview
+
+ test(`Should run the ${template} template`, async ({ page }) => {
+ await page.goto(
+ `http://localhost:6006/iframe.html?id=presets-template--${template}`
+ );
+
+ test.setTimeout(30000 * 3); // triple default
+
+ const headingIframe = await page
+ .frameLocator("iframe")
+ .locator("h1")
+ .innerText();
+
+ // ✅ find the "hello world" message
+ expect(headingIframe).toBe("Hello World");
+ });
+ });
+});
diff --git a/sandpack-react/package.json b/sandpack-react/package.json
index 052e80858..9e5c4b6aa 100644
--- a/sandpack-react/package.json
+++ b/sandpack-react/package.json
@@ -22,10 +22,9 @@
"build:publish": "yarn build",
"build:types": "tsc -p tsconfig.json",
"start": "tsc -p tsconfig.esm.json --watch",
- "storybook": "start-storybook -p 6006 --no-dll",
- "build-storybook": "build-storybook --no-dll",
+ "storybook": "start-storybook -p 6006 --no-dll --quiet",
"typecheck": "tsc",
- "chromatic": "chromatic --project-token CHROMATIC_PROJECT_TOKEN"
+ "test:e2e": "yarn storybook && yarn playwright test"
},
"files": [
"dist",
@@ -63,6 +62,7 @@
"@codemirror/legacy-modes": "^0.19.1",
"@codemirror/stream-parser": "^0.19.9",
"@codesandbox/sandpack-themes": "^1.6.0",
+ "@playwright/test": "^1.26.1",
"@storybook/addon-actions": "^6.1.9",
"@storybook/addon-essentials": "^6.1.9",
"@storybook/addon-knobs": "^6.1.9",
@@ -76,7 +76,6 @@
"@types/react": "^18.0.9",
"autoprefixer": "^10.2.4",
"babel-loader": "^7.1.5",
- "chromatic": "^6.3.3",
"cross-env": "^5.1.3",
"cssnano": "^4.1.10",
"dotenv": "^8.2.0",
diff --git a/sandpack-react/playwright.config.ts b/sandpack-react/playwright.config.ts
new file mode 100644
index 000000000..6892601d2
--- /dev/null
+++ b/sandpack-react/playwright.config.ts
@@ -0,0 +1,106 @@
+import type { PlaywrightTestConfig } from "@playwright/test";
+import { devices } from "@playwright/test";
+
+/**
+ * Read environment variables from file.
+ * https://github.com/motdotla/dotenv
+ */
+// require('dotenv').config();
+
+/**
+ * See https://playwright.dev/docs/test-configuration.
+ */
+const config: PlaywrightTestConfig = {
+ testDir: "./e2e",
+ /* Maximum time one test can run for. */
+ timeout: 30 * 1000,
+ expect: {
+ /**
+ * Maximum time expect() should wait for the condition to be met.
+ * For example in `await expect(locator).toHaveText();`
+ */
+ timeout: 5000,
+ },
+ /* Run tests in files in parallel */
+ fullyParallel: true,
+ /* Fail the build on CI if you accidentally left test.only in the source code. */
+ forbidOnly: !!process.env.CI,
+ /* Retry on CI only */
+ retries: process.env.CI ? 2 : 0,
+ /* Opt out of parallel tests on CI. */
+ workers: process.env.CI ? 1 : undefined,
+ /* Reporter to use. See https://playwright.dev/docs/test-reporters */
+ reporter: "html",
+ /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
+ use: {
+ /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */
+ actionTimeout: 0,
+ /* Base URL to use in actions like `await page.goto('/')`. */
+ // baseURL: 'http://localhost:3000',
+
+ /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
+ trace: "on-first-retry",
+ },
+
+ /* Configure projects for major browsers */
+ projects: [
+ {
+ name: "chromium",
+ use: {
+ ...devices["Desktop Chrome"],
+ },
+ },
+
+ {
+ name: "firefox",
+ use: {
+ ...devices["Desktop Firefox"],
+ },
+ },
+
+ {
+ name: "webkit",
+ use: {
+ ...devices["Desktop Safari"],
+ },
+ },
+
+ /* Test against mobile viewports. */
+ // {
+ // name: 'Mobile Chrome',
+ // use: {
+ // ...devices['Pixel 5'],
+ // },
+ // },
+ // {
+ // name: 'Mobile Safari',
+ // use: {
+ // ...devices['iPhone 12'],
+ // },
+ // },
+
+ /* Test against branded browsers. */
+ // {
+ // name: 'Microsoft Edge',
+ // use: {
+ // channel: 'msedge',
+ // },
+ // },
+ // {
+ // name: 'Google Chrome',
+ // use: {
+ // channel: 'chrome',
+ // },
+ // },
+ ],
+
+ /* Folder for test artifacts such as screenshots, videos, traces, etc. */
+ // outputDir: 'test-results/',
+
+ webServer: {
+ command: "yarn storybook",
+ port: 6006,
+ },
+};
+
+export default config;
diff --git a/sandpack-react/src/Issues.stories.tsx b/sandpack-react/src/Issues.stories.tsx
index 9b7730a72..0003e2021 100644
--- a/sandpack-react/src/Issues.stories.tsx
+++ b/sandpack-react/src/Issues.stories.tsx
@@ -78,11 +78,7 @@ export const Issue454 = (): JSX.Element => {
export const FileTab = (): JSX.Element => {
return (
);
diff --git a/sandpack-react/src/components/FileTabs/FileTabs.test.tsx b/sandpack-react/src/components/FileTabs/FileTabs.test.tsx
index 526496c19..f415b9675 100644
--- a/sandpack-react/src/components/FileTabs/FileTabs.test.tsx
+++ b/sandpack-react/src/components/FileTabs/FileTabs.test.tsx
@@ -26,4 +26,29 @@ describe("FileTabs", () => {
expect(buttonsTex).toEqual(["foo/App.js", "App.js", "baz/App.js"]);
});
+
+ it("render the visible files", () => {
+ const component = create(
+
+
+
+ ).root;
+
+ const buttons = component.findAll((el) =>
+ el.props.className?.includes("sp-tab-button")
+ );
+ const buttonsTex = buttons.map((item) => item.props.children[0]);
+
+ expect(buttonsTex).toEqual(["baz/App.js", "App.js"]);
+ });
});
diff --git a/sandpack-react/src/contexts/sandpackContext.tsx b/sandpack-react/src/contexts/sandpackContext.tsx
index e6e9b4dbe..ccca360d5 100644
--- a/sandpack-react/src/contexts/sandpackContext.tsx
+++ b/sandpack-react/src/contexts/sandpackContext.tsx
@@ -72,6 +72,7 @@ export class SandpackProviderClass extends React.PureComponent<
template: props.template,
files: props.files,
customSetup: props.customSetup,
+ options: props.options,
});
this.state = {
@@ -280,6 +281,7 @@ export class SandpackProviderClass extends React.PureComponent<
template: this.props.template,
files: this.props.files,
customSetup: this.props.customSetup,
+ options: this.props.options,
});
/**
@@ -612,6 +614,7 @@ export class SandpackProviderClass extends React.PureComponent<
template: this.props.template,
files: this.props.files,
customSetup: this.props.customSetup,
+ options: this.props.options,
});
this.setState(
@@ -627,6 +630,7 @@ export class SandpackProviderClass extends React.PureComponent<
template: this.props.template,
files: this.props.files,
customSetup: this.props.customSetup,
+ options: this.props.options,
});
this.setState({ files }, this.updateClients);
diff --git a/yarn.lock b/yarn.lock
index 7dabec9ed..778a89d2c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1640,52 +1640,6 @@
resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-1.0.0.tgz#91c560df2ed8d9700e4c7ed4ac21a3a322c9d975"
integrity sha512-RkYG5KiGNX0fJ5YoI0f4Wfq2Yo74D25Hru4fxTOioYdQvHBxcrrtTTyT5Ozzh2ejcNrhFy7IEts2WyEY7yi5yw==
-"@cypress/request@^2.88.10":
- version "2.88.10"
- resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce"
- integrity sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==
- dependencies:
- aws-sign2 "~0.7.0"
- aws4 "^1.8.0"
- caseless "~0.12.0"
- combined-stream "~1.0.6"
- extend "~3.0.2"
- forever-agent "~0.6.1"
- form-data "~2.3.2"
- http-signature "~1.3.6"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.19"
- performance-now "^2.1.0"
- qs "~6.5.2"
- safe-buffer "^5.1.2"
- tough-cookie "~2.5.0"
- tunnel-agent "^0.6.0"
- uuid "^8.3.2"
-
-"@cypress/snapshot@^2.1.7":
- version "2.1.7"
- resolved "https://registry.yarnpkg.com/@cypress/snapshot/-/snapshot-2.1.7.tgz#e7360eb628b062f28f03036382619ec72cfb1831"
- integrity sha512-f8AcfIg7wOOHSdBODlIwCJE/rG5Yb+kUY+WVTKynB2pLLoDy9nc8CtcazqX19q2Lh++nTJLNRihpbbWvk33mbg==
- dependencies:
- "@wildpeaks/snapshot-dom" "1.6.0"
- am-i-a-dependency "1.1.2"
- check-more-types "2.24.0"
- its-name "1.0.0"
- js-beautify "1.10.3"
- lazy-ass "1.6.0"
- snap-shot-compare "2.8.3"
- snap-shot-store "1.2.3"
-
-"@cypress/xvfb@^1.2.4":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a"
- integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==
- dependencies:
- debug "^3.1.0"
- lodash.once "^4.1.1"
-
"@discoveryjs/json-ext@^0.5.3":
version "0.5.7"
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
@@ -4870,6 +4824,14 @@
chrome-trace-event "^1.0.2"
nullthrows "^1.1.1"
+"@playwright/test@^1.26.1":
+ version "1.26.1"
+ resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.26.1.tgz#73ada4e70f618bca69ba7509c4ba65b5a41c4b10"
+ integrity sha512-bNxyZASVt2adSZ9gbD7NCydzcb5JaI0OR9hc7s+nmPeH604gwp0zp17NNpwXY4c8nvuBGQQ9oGDx72LE+cUWvw==
+ dependencies:
+ "@types/node" "*"
+ playwright-core "1.26.1"
+
"@pmmmwh/react-refresh-webpack-plugin@^0.4.3":
version "0.4.3"
resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766"
@@ -6548,7 +6510,7 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.1.tgz#0611b37db4246c937feef529ddcc018cf8e35708"
integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==
-"@types/node@^14.0.10", "@types/node@^14.14.31":
+"@types/node@^14.0.10":
version "14.18.18"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.18.tgz#5c9503030df484ccffcbb935ea9a9e1d6fad1a20"
integrity sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==
@@ -6760,16 +6722,6 @@
dependencies:
"@types/node" "*"
-"@types/sinonjs__fake-timers@8.1.1":
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3"
- integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==
-
-"@types/sizzle@^2.3.2":
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef"
- integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==
-
"@types/sockjs@^0.3.33":
version "0.3.33"
resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f"
@@ -6899,13 +6851,6 @@
dependencies:
"@types/yargs-parser" "*"
-"@types/yauzl@^2.9.1":
- version "2.10.0"
- resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599"
- integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==
- dependencies:
- "@types/node" "*"
-
"@types/yoga-layout@1.9.2":
version "1.9.2"
resolved "https://registry.yarnpkg.com/@types/yoga-layout/-/yoga-layout-1.9.2.tgz#efaf9e991a7390dc081a0b679185979a83a9639a"
@@ -7647,11 +7592,6 @@
"@webassemblyjs/wast-parser" "1.9.0"
"@xtuc/long" "4.2.2"
-"@wildpeaks/snapshot-dom@1.6.0":
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/@wildpeaks/snapshot-dom/-/snapshot-dom-1.6.0.tgz#83297612bf93b97983beafbe6ae71672642ac884"
- integrity sha512-fCM5tYK6VZ1nhbk3Q11lkf6UOJlOCRU0oScQ8NV8OYBPC58wQmQaOF9g+rk+yhNYf3beybOBr+ZuiNen3B0Bxw==
-
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
@@ -7908,11 +7848,6 @@ alphanum-sort@^1.0.0:
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
integrity sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==
-am-i-a-dependency@1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/am-i-a-dependency/-/am-i-a-dependency-1.1.2.tgz#f9d3422304d6f642f821e4c407565035f6167f1f"
- integrity sha512-h9Wm0GBuTJVKbtwDHBzdJr932O9iTR5lAgebGSke1b3V4pqzbwOsa1R3bYhff89Ch3+v3A4EgbX3vem+5Rl6Zg==
-
amdefine@>=0.0.4:
version "1.0.1"
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
@@ -8013,7 +7948,7 @@ ansi-regex@^6.0.1:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
-ansi-styles@^2.0.1, ansi-styles@^2.2.1:
+ansi-styles@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==
@@ -8132,7 +8067,7 @@ aproba@^1.0.3, aproba@^1.1.1:
resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc"
integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==
-arch@^2.1.1, arch@^2.2.0:
+arch@^2.1.1:
version "2.2.0"
resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11"
integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==
@@ -8481,7 +8416,7 @@ async@1.5.2:
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==
-async@3.2.3, async@^3.2.0, async@^3.2.3:
+async@3.2.3, async@^3.2.3:
version "3.2.3"
resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
@@ -9048,11 +8983,6 @@ bl@^4.0.0, bl@^4.0.3:
inherits "^2.0.4"
readable-stream "^3.4.0"
-blob-util@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb"
- integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==
-
blob@0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683"
@@ -9342,11 +9272,6 @@ buble-jsx-only@^0.19.8:
minimist "^1.2.0"
regexpu-core "^4.5.4"
-buffer-crc32@~0.2.3:
- version "0.2.13"
- resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
- integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
-
buffer-equal-constant-time@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
@@ -9381,7 +9306,7 @@ buffer@^4.3.0:
ieee754 "^1.1.4"
isarray "^1.0.0"
-buffer@^5.2.0, buffer@^5.5.0, buffer@^5.6.0, buffer@^5.7.0:
+buffer@^5.2.0, buffer@^5.5.0, buffer@^5.7.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
@@ -9573,11 +9498,6 @@ cacheable-request@^7.0.1, cacheable-request@^7.0.2:
normalize-url "^6.0.1"
responselike "^2.0.0"
-cachedir@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8"
- integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==
-
call-bind@^1.0.0, call-bind@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
@@ -9833,11 +9753,6 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
-check-more-types@2.24.0, check-more-types@^2.24.0:
- version "2.24.0"
- resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
- integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==
-
check-types@^11.1.1:
version "11.1.2"
resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f"
@@ -9933,11 +9848,6 @@ chownr@^2.0.0:
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
-chromatic@^6.3.3:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/chromatic/-/chromatic-6.5.4.tgz#2e1beb7a8f6b84e7575456fe484201a3b4327ee1"
- integrity sha512-/yunI/+rdc56C6x0IhpPmdfK/DRMOvQ2hoNyAe6uuU9rdWRoAH72lYatr2NcpdsOdHGOcV5DKgIaKgVdPfUk1w==
-
chrome-trace-event@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
@@ -10036,7 +9946,7 @@ cli-highlight@^2.1.11:
parse5-htmlparser2-tree-adapter "^6.0.0"
yargs "^16.0.0"
-cli-table3@^0.6.1, cli-table3@^0.6.2, cli-table3@~0.6.1:
+cli-table3@^0.6.1, cli-table3@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a"
integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==
@@ -11460,59 +11370,6 @@ cyclist@^1.0.1:
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
-cypress-real-events@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/cypress-real-events/-/cypress-real-events-1.7.0.tgz#ad6a78de33af3af0e6437f5c713e30691c44472c"
- integrity sha512-iyXp07j0V9sG3YClVDcvHN2DAQDgr+EjTID82uWDw6OZBlU3pXEBqTMNYqroz3bxlb0k+F74U81aZwzMNaKyew==
-
-cypress@^9.1.1:
- version "9.6.1"
- resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.6.1.tgz#a7d6b5a53325b3dc4960181f5800a5ade0f085eb"
- integrity sha512-ECzmV7pJSkk+NuAhEw6C3D+RIRATkSb2VAHXDY6qGZbca/F9mv5pPsj2LO6Ty6oIFVBTrwCyL9agl28MtJMe2g==
- dependencies:
- "@cypress/request" "^2.88.10"
- "@cypress/xvfb" "^1.2.4"
- "@types/node" "^14.14.31"
- "@types/sinonjs__fake-timers" "8.1.1"
- "@types/sizzle" "^2.3.2"
- arch "^2.2.0"
- blob-util "^2.0.2"
- bluebird "^3.7.2"
- buffer "^5.6.0"
- cachedir "^2.3.0"
- chalk "^4.1.0"
- check-more-types "^2.24.0"
- cli-cursor "^3.1.0"
- cli-table3 "~0.6.1"
- commander "^5.1.0"
- common-tags "^1.8.0"
- dayjs "^1.10.4"
- debug "^4.3.2"
- enquirer "^2.3.6"
- eventemitter2 "^6.4.3"
- execa "4.1.0"
- executable "^4.1.1"
- extract-zip "2.0.1"
- figures "^3.2.0"
- fs-extra "^9.1.0"
- getos "^3.2.1"
- is-ci "^3.0.0"
- is-installed-globally "~0.4.0"
- lazy-ass "^1.6.0"
- listr2 "^3.8.3"
- lodash "^4.17.21"
- log-symbols "^4.0.0"
- minimist "^1.2.6"
- ospath "^1.2.2"
- pretty-bytes "^5.6.0"
- proxy-from-env "1.0.0"
- request-progress "^3.0.0"
- semver "^7.3.2"
- supports-color "^8.1.1"
- tmp "~0.2.1"
- untildify "^4.0.0"
- yauzl "^2.10.0"
-
d@1, d@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
@@ -11596,11 +11453,6 @@ dayjs@1.10.7:
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468"
integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==
-dayjs@^1.10.4:
- version "1.11.2"
- resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.2.tgz#fa0f5223ef0d6724b3d8327134890cfe3d72fbe5"
- integrity sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw==
-
de-indent@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
@@ -11632,13 +11484,6 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, d
dependencies:
ms "2.1.2"
-debug@4.1.1, debug@~4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
- integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
- dependencies:
- ms "^2.1.1"
-
debug@4.3.3:
version "4.3.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
@@ -11653,6 +11498,13 @@ debug@^3.0.0, debug@^3.1.0, debug@^3.2.6, debug@^3.2.7:
dependencies:
ms "^2.1.1"
+debug@~4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
+ integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
+ dependencies:
+ ms "^2.1.1"
+
debuglog@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
@@ -11992,11 +11844,6 @@ diff-sequences@^27.5.1:
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327"
integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==
-diff@^1.3.2:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf"
- integrity sha1-fyjS657nsVqX79ic5j3P2qPMur8=
-
diff@^3.1.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
@@ -12030,14 +11877,6 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"
-disparity@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/disparity/-/disparity-2.0.0.tgz#57ddacb47324ae5f58d2cc0da886db4ce9eeb718"
- integrity sha1-V92stHMkrl9Y0swNqIbbTOnutxg=
- dependencies:
- ansi-styles "^2.0.1"
- diff "^1.3.2"
-
dlv@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
@@ -13022,13 +12861,6 @@ eslint-module-utils@^2.7.3:
debug "^3.2.7"
find-up "^2.1.0"
-eslint-plugin-cypress@^2.12.1:
- version "2.12.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz#9aeee700708ca8c058e00cdafe215199918c2632"
- integrity sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==
- dependencies:
- globals "^11.12.0"
-
eslint-plugin-flowtype@^5.10.0, eslint-plugin-flowtype@^5.2.0:
version "5.10.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.10.0.tgz#7764cc63940f215bf3f0bd2d9a1293b2b9b2b4bb"
@@ -13401,11 +13233,6 @@ event-target-shim@^5.0.0:
resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
-eventemitter2@^6.4.3:
- version "6.4.5"
- resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655"
- integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==
-
eventemitter3@^3.1.0:
version "3.1.2"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
@@ -13434,7 +13261,20 @@ exec-sh@^0.3.2:
resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc"
integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==
-execa@4.1.0, execa@^4.1.0:
+execa@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
+ integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+ dependencies:
+ cross-spawn "^6.0.0"
+ get-stream "^4.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+execa@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
@@ -13449,19 +13289,6 @@ execa@4.1.0, execa@^4.1.0:
signal-exit "^3.0.2"
strip-final-newline "^2.0.0"
-execa@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
- integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
- dependencies:
- cross-spawn "^6.0.0"
- get-stream "^4.0.0"
- is-stream "^1.1.0"
- npm-run-path "^2.0.0"
- p-finally "^1.0.0"
- signal-exit "^3.0.0"
- strip-eof "^1.0.0"
-
execa@^5.0.0, execa@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
@@ -13477,13 +13304,6 @@ execa@^5.0.0, execa@^5.1.1:
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
-executable@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c"
- integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==
- dependencies:
- pify "^2.2.0"
-
exif-parser@^0.1.12:
version "0.1.12"
resolved "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922"
@@ -13729,17 +13549,6 @@ extract-files@9.0.0:
resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a"
integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==
-extract-zip@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
- integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
- dependencies:
- debug "^4.1.1"
- get-stream "^5.1.0"
- yauzl "^2.10.0"
- optionalDependencies:
- "@types/yauzl" "^2.9.1"
-
extsprintf@1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
@@ -13883,13 +13692,6 @@ fbjs@^3.0.0, fbjs@^3.0.1:
setimmediate "^1.0.5"
ua-parser-js "^0.7.30"
-fd-slicer@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
- integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
- dependencies:
- pend "~1.2.0"
-
fd@~0.0.2:
version "0.0.3"
resolved "https://registry.yarnpkg.com/fd/-/fd-0.0.3.tgz#b3240de86dbf5a345baae7382a07d4713566ff0c"
@@ -13932,7 +13734,7 @@ figures@^2.0.0:
dependencies:
escape-string-regexp "^1.0.5"
-figures@^3.0.0, figures@^3.2.0:
+figures@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
@@ -14186,16 +13988,6 @@ flux@^4.0.1:
fbemitter "^3.0.0"
fbjs "^3.0.1"
-folktale@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/folktale/-/folktale-2.0.1.tgz#6dc26a65565aefdef9520223e022dddf5b8d8462"
- integrity sha512-3kDSWVkSlErHIt/dC73vu+5zRqbW1mlnL46s2QfYN7Ps0JcS9MVtuLCrDQOBa7sanA+d9Fd8F+bn0VcyNe68Jw==
-
-folktale@2.3.2:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/folktale/-/folktale-2.3.2.tgz#38231b039e5ef36989920cbf805bf6b227bf4fd4"
- integrity sha512-+8GbtQBwEqutP0v3uajDDoN64K2ehmHd0cjlghhxh0WpcfPzAIjPA03e1VvHlxL02FVGR0A6lwXsNQKn3H1RNQ==
-
follow-redirects@^1.0.0, follow-redirects@^1.14.0, follow-redirects@^1.14.7:
version "1.15.0"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.0.tgz#06441868281c86d0dda4ad8bdaead2d02dca89d4"
@@ -14994,13 +14786,6 @@ get-value@^2.0.3, get-value@^2.0.6:
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
-getos@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5"
- integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==
- dependencies:
- async "^3.2.0"
-
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
@@ -15230,7 +15015,7 @@ global@^4.4.0, global@~4.4.0:
min-document "^2.19.0"
process "^0.11.10"
-globals@^11.1.0, globals@^11.12.0:
+globals@^11.1.0:
version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
@@ -16182,15 +15967,6 @@ http-signature@~1.2.0:
jsprim "^1.2.2"
sshpk "^1.7.0"
-http-signature@~1.3.6:
- version "1.3.6"
- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9"
- integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==
- dependencies:
- assert-plus "^1.0.0"
- jsprim "^2.0.2"
- sshpk "^1.14.1"
-
http-status-codes@2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/http-status-codes/-/http-status-codes-2.2.0.tgz#bb2efe63d941dfc2be18e15f703da525169622be"
@@ -16723,13 +16499,6 @@ is-ci@^2.0.0:
dependencies:
ci-info "^2.0.0"
-is-ci@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867"
- integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==
- dependencies:
- ci-info "^3.2.0"
-
is-color-stop@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
@@ -16914,7 +16683,7 @@ is-installed-globally@^0.3.2:
global-dirs "^2.0.1"
is-path-inside "^3.0.1"
-is-installed-globally@^0.4.0, is-installed-globally@~0.4.0:
+is-installed-globally@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520"
integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==
@@ -17416,11 +17185,6 @@ iterate-value@^1.0.2:
es-get-iterator "^1.0.2"
iterate-iterator "^1.0.1"
-its-name@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/its-name/-/its-name-1.0.0.tgz#2065f1883ecb568c65f7112ddbf123401fae4af0"
- integrity sha1-IGXxiD7LVoxl9xEt2/EjQB+uSvA=
-
jake@^10.8.5:
version "10.8.5"
resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46"
@@ -17987,17 +17751,6 @@ js-base64@^2.1.8:
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4"
integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
-js-beautify@1.10.3:
- version "1.10.3"
- resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.10.3.tgz#c73fa10cf69d3dfa52d8ed624f23c64c0a6a94c1"
- integrity sha512-wfk/IAWobz1TfApSdivH5PJ0miIHgDoYb1ugSqHcODPmaYu46rYe5FVuIEkhjg8IQiv6rDNPyhsqbsohI/C2vQ==
- dependencies:
- config-chain "^1.1.12"
- editorconfig "^0.15.3"
- glob "^7.1.3"
- mkdirp "~0.5.1"
- nopt "~4.0.1"
-
js-beautify@^1.8.8:
version "1.14.3"
resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.3.tgz#3dd11c949178de7f3bdf3f6f752778d3bed95150"
@@ -18236,16 +17989,6 @@ jsprim@^1.2.2:
json-schema "0.4.0"
verror "1.10.0"
-jsprim@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d"
- integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==
- dependencies:
- assert-plus "1.0.0"
- extsprintf "1.3.0"
- json-schema "0.4.0"
- verror "1.10.0"
-
jstransformer@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3"
@@ -18380,11 +18123,6 @@ latest-version@5.1.0, latest-version@^5.1.0:
dependencies:
package-json "^6.3.0"
-lazy-ass@1.6.0, lazy-ass@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
- integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM=
-
lazy-universal-dotenv@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz#a6c8938414bca426ab8c9463940da451a911db38"
@@ -18612,7 +18350,7 @@ listr-verbose-renderer@^0.5.0:
date-fns "^1.27.2"
figures "^2.0.0"
-listr2@^3.2.2, listr2@^3.8.3:
+listr2@^3.2.2:
version "3.14.0"
resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e"
integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==
@@ -18988,7 +18726,7 @@ lodash.merge@^4.4.0, lodash.merge@^4.6.2:
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
-lodash.once@^4.0.0, lodash.once@^4.1.1:
+lodash.once@^4.0.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=
@@ -20400,7 +20138,7 @@ node-sass@^4.14.1:
dependencies:
abbrev "1"
-nopt@^4.0.1, nopt@~4.0.1:
+nopt@^4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==
@@ -20997,11 +20735,6 @@ osenv@0, osenv@^0.1.4:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"
-ospath@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b"
- integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=
-
overlayscrollbars@^1.13.1:
version "1.13.1"
resolved "https://registry.yarnpkg.com/overlayscrollbars/-/overlayscrollbars-1.13.1.tgz#0b840a88737f43a946b9d87875a2f9e421d0338a"
@@ -21649,11 +21382,6 @@ peek-readable@^4.1.0:
resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72"
integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==
-pend@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
- integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
-
performance-now@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
@@ -21684,7 +21412,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatc
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-pify@^2.0.0, pify@^2.2.0, pify@^2.3.0:
+pify@^2.0.0, pify@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
@@ -21816,6 +21544,11 @@ platform@^1.3.6:
resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7"
integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==
+playwright-core@1.26.1:
+ version "1.26.1"
+ resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.26.1.tgz#a162f476488312dcf12638d97685144de6ada512"
+ integrity sha512-hzFchhhxnEiPc4qVPs9q2ZR+5eKNifY2hQDHtg1HnTTUuphYCBP8ZRb2si+B1TR7BHirgXaPi48LIye5SgrLAA==
+
please-upgrade-node@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
@@ -22822,7 +22555,7 @@ prettier-bytes@1.0.4:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032"
integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==
-pretty-bytes@^5.3.0, pretty-bytes@^5.4.1, pretty-bytes@^5.6.0:
+pretty-bytes@^5.3.0, pretty-bytes@^5.4.1:
version "5.6.0"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
@@ -23018,11 +22751,6 @@ proxy-addr@~2.0.5, proxy-addr@~2.0.7:
forwarded "0.2.0"
ipaddr.js "1.9.1"
-proxy-from-env@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee"
- integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=
-
prr@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
@@ -23305,11 +23033,6 @@ raf@^3.4.1:
dependencies:
performance-now "^2.1.0"
-ramda@0.25.0:
- version "0.25.0"
- resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9"
- integrity sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==
-
ramda@^0.28.0:
version "0.28.0"
resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.28.0.tgz#acd785690100337e8b063cab3470019be427cc97"
@@ -24478,13 +24201,6 @@ replace-homedir@^1.0.0:
is-absolute "^1.0.0"
remove-trailing-separator "^1.1.0"
-request-progress@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe"
- integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=
- dependencies:
- throttleit "^1.0.0"
-
request@2.88.0:
version "2.88.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
@@ -25544,30 +25260,6 @@ snake-case@^3.0.4:
dot-case "^3.0.4"
tslib "^2.0.3"
-snap-shot-compare@2.8.3:
- version "2.8.3"
- resolved "https://registry.yarnpkg.com/snap-shot-compare/-/snap-shot-compare-2.8.3.tgz#b4982fb7b4e9cd4fa0b03a40a100b5f005b2d515"
- integrity sha512-dznYMQAYMcQ4crFduIX5sST/Ex35l414hVCL6sXFi84OPuwG5eXgRBfBqbgz7mi3rC/r7VWDn2ADF8FTV/wbCw==
- dependencies:
- check-more-types "2.24.0"
- debug "4.1.1"
- disparity "2.0.0"
- folktale "2.3.2"
- lazy-ass "1.6.0"
- strip-ansi "5.2.0"
- variable-diff "1.1.0"
-
-snap-shot-store@1.2.3:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/snap-shot-store/-/snap-shot-store-1.2.3.tgz#4aab0b95ec24cb68eddf90b1c478617ded85f2d2"
- integrity sha512-KLSUkdXvSfoPGPSo5Qk97jYEpME96WECOuIOpW91OGYt/fX2g2xOvXA35EJziI32PlDbRfi36JxzUcSsh59Ykw==
- dependencies:
- check-more-types "2.24.0"
- debug "3.1.0"
- folktale "2.0.1"
- lazy-ass "1.6.0"
- ramda "0.25.0"
-
snapdragon-node@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
@@ -25937,7 +25629,7 @@ sprintf-js@~1.0.2:
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-sshpk@^1.14.1, sshpk@^1.7.0:
+sshpk@^1.7.0:
version "1.17.0"
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5"
integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==
@@ -26301,13 +25993,6 @@ stringify-object@^3.3.0:
is-obj "^1.0.1"
is-regexp "^1.0.0"
-strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
- integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
- dependencies:
- ansi-regex "^4.1.0"
-
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
@@ -26322,6 +26007,13 @@ strip-ansi@^4.0.0:
dependencies:
ansi-regex "^3.0.0"
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
@@ -26512,7 +26204,7 @@ supports-color@^7.0.0, supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
-supports-color@^8.0.0, supports-color@^8.1.1:
+supports-color@^8.0.0:
version "8.1.1"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
@@ -26916,11 +26608,6 @@ throttle-debounce@^3.0.1:
resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb"
integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==
-throttleit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"
- integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=
-
through2-filter@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254"
@@ -27013,7 +26700,7 @@ tmp@^0.0.33:
dependencies:
os-tmpdir "~1.0.2"
-tmp@^0.2.1, 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==
@@ -27827,11 +27514,6 @@ unset-value@^1.0.0:
has-value "^0.3.1"
isobject "^3.0.0"
-untildify@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
- integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
-
upath@^1.1.1, upath@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
@@ -28116,14 +27798,6 @@ values.js@^2.0.0:
parse-css-color "0.2.0"
pure-color "1.3.0"
-variable-diff@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/variable-diff/-/variable-diff-1.1.0.tgz#d2bd5c66db76c13879d96e6a306edc989df978da"
- integrity sha1-0r1cZtt2wTh52W5qMG7cmJ35eNo=
- dependencies:
- chalk "^1.1.1"
- object-assign "^4.0.1"
-
vary@^1, vary@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
@@ -29391,14 +29065,6 @@ yargs@^7.1.0:
y18n "^3.2.1"
yargs-parser "^5.0.1"
-yauzl@^2.10.0:
- version "2.10.0"
- resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
- integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
- dependencies:
- buffer-crc32 "~0.2.3"
- fd-slicer "~1.1.0"
-
yeast@0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"