diff --git a/.github/workflows/buildAndTest.yaml b/.github/workflows/buildAndTest.yaml
index 0061b2c5..edbb5438 100644
--- a/.github/workflows/buildAndTest.yaml
+++ b/.github/workflows/buildAndTest.yaml
@@ -14,6 +14,12 @@ on:
- checks_requested
workflow_dispatch:
+permissions:
+ contents: read
+ issues: read
+ checks: write
+ pull-requests: write
+
jobs:
build:
runs-on: ubuntu-latest
@@ -60,22 +66,21 @@ jobs:
- run: yarn run build:vue-json-form
- run: yarn test:unit
working-directory: ./vue-json-form
- - name: Cypress run
- uses: cypress-io/github-action@v6
- with:
- working-directory: ./vue-json-form
- build: yarn run build
- start: yarn dev
- wait-on: 'http://localhost:5173'
- record: true
- env:
- # pass GitHub token to allow accurately detecting a build vs a re-run build
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- # Cypress
- CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
- CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
+ - name: Install Playwright Browsers
+ run: yarn playwright install --with-deps chromium
+ working-directory: ./vue-json-form
+ - name: Run Playwright tests
+ run: yarn test:e2e
+ working-directory: ./vue-json-form
- uses: actions/upload-artifact@v4
if: always()
with:
- name: cypress-screenshots
- path: cypress/screenshots
+ name: playwright-report
+ path: vue-json-form/playwright-report/
+ retention-days: 30
+ - name: Publish Test Results
+ uses: EnricoMi/publish-unit-test-result-action@v2
+ if: (!cancelled())
+ with:
+ files: |
+ vue-json-form/test-results/**/*.xml
diff --git a/.gitignore b/.gitignore
index 248c9dc3..2e4eb413 100644
--- a/.gitignore
+++ b/.gitignore
@@ -149,3 +149,7 @@ dist
# and uncomment the following lines
.pnp.*
+# Playwright
+playwright-report/
+test-results/
+playwright/.cache/
diff --git a/.junie/guidelines.md b/.junie/guidelines.md
index 92c55289..ec79c1c7 100644
--- a/.junie/guidelines.md
+++ b/.junie/guidelines.md
@@ -1,6 +1,6 @@
Project-specific development guidelines for vue-json-form (monorepo)
-Audience: Advanced contributors familiar with Yarn workspaces, Vite, Vue 3, TypeScript, Vitest, and Cypress.
+Audience: Advanced contributors familiar with Yarn workspaces, Vite, Vue 3, TypeScript, Vitest, and Playwright.
1) Monorepo overview and prerequisites
- Package manager: Yarn 4 (Berry). Confirm with node -v (CI uses Node 20/22/24). Use the same major Node versions for reproducibility.
@@ -45,22 +45,22 @@ Audience: Advanced contributors familiar with Yarn workspaces, Vite, Vue 3, Type
- Run: yarn workspace @educorvi/vue-json-form vitest run src/MapperFunctions/yourFunction.test.ts
- Remove temporary files when done if they are only for demonstration.
-4) Testing: end-to-end (Cypress)
-- Location: vue-json-form/cypress/e2e/*.cy.ts
-- Dev server + Cypress (CI parity):
- - CI does: build deps, then in ./vue-json-form runs build, starts dev, wait-on http://localhost:5173, then runs Cypress.
+4) Testing: end-to-end (Playwright)
+- Location: vue-json-form/tests/e2e/*.spec.ts
+- Dev server + Playwright (CI parity):
+ - CI does: build deps, then in ./vue-json-form installs Playwright browsers, runs Playwright tests.
- Local equivalent from repo root:
- yarn install --immutable
- yarn build:vue-json-form
- cd vue-json-form
- - yarn build
- - In one terminal: yarn dev # Vite at http://localhost:5173
- - In another terminal: yarn cypress # Opens Cypress runner
- - Headless run:
- - From vue-json-form: npx cypress run
+ - npx playwright install --with-deps chromium # First time only
+ - yarn test:e2e # Runs tests headless
+ - Interactive mode:
+ - From vue-json-form: yarn playwright # Opens Playwright UI
- Tips
- - Keep e2e fixtures and example schemas under vue-json-form/src/exampleSchemas for reproducible scenarios; CI records and uploads screenshots on failures.
- - When adjusting ports/hosts, update wait-on in .github/workflows/buildAndTest.yaml and local commands accordingly.
+ - Playwright automatically starts the dev server before running tests (configured in playwright.config.ts).
+ - Keep e2e fixtures and example schemas under vue-json-form/src/exampleSchemas for reproducible scenarios; CI uploads test reports on failures.
+ - When adjusting ports/hosts, update baseURL in playwright.config.ts and webServer settings accordingly.
5) Coding standards and project conventions
- Languages/stack: TypeScript, Vue 3, Vite, Pinia, Sass. Typings for schemas are provided by @educorvi/vue-json-form-schemas.
@@ -93,5 +93,5 @@ Audience: Advanced contributors familiar with Yarn workspaces, Vite, Vue 3, Type
- yarn install --immutable && yarn build
- Iterate on vue-json-form only:
- yarn build:vue-json-form && yarn workspace @educorvi/vue-json-form dev
-- Run Cypress like CI does:
- - yarn build:vue-json-form && (cd vue-json-form && yarn build && yarn dev) in one terminal, and in another terminal run yarn cypress from vue-json-form
+- Run Playwright like CI does:
+ - yarn build:vue-json-form && (cd vue-json-form && yarn test:e2e)
diff --git a/demo/cypress.config.ts b/demo/cypress.config.ts
deleted file mode 100644
index c8fac129..00000000
--- a/demo/cypress.config.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { defineConfig } from 'cypress'
-
-export default defineConfig({
- e2e: {
- specPattern: 'cypress/e2e/**/*.{cy,spec}.{js,jsx,ts,tsx}',
- baseUrl: 'http://localhost:4173'
- },
- component: {
- specPattern: 'src/**/__tests__/*.{cy,spec}.{js,ts,jsx,tsx}',
- devServer: {
- framework: 'vue',
- bundler: 'vite'
- }
- }
-})
diff --git a/demo/cypress/e2e/example.cy.ts b/demo/cypress/e2e/example.cy.ts
deleted file mode 100644
index 7554c35d..00000000
--- a/demo/cypress/e2e/example.cy.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-// https://on.cypress.io/api
-
-describe('My First Test', () => {
- it('visits the app root url', () => {
- cy.visit('/')
- cy.contains('h1', 'You did it!')
- })
-})
diff --git a/demo/cypress/e2e/tsconfig.json b/demo/cypress/e2e/tsconfig.json
deleted file mode 100644
index 37748feb..00000000
--- a/demo/cypress/e2e/tsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "extends": "@vue/tsconfig/tsconfig.dom.json",
- "include": ["./**/*", "../support/**/*"],
- "compilerOptions": {
- "isolatedModules": false,
- "target": "es5",
- "lib": ["es5", "dom"],
- "types": ["cypress"]
- }
-}
diff --git a/demo/cypress/fixtures/example.json b/demo/cypress/fixtures/example.json
deleted file mode 100644
index 02e42543..00000000
--- a/demo/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/demo/cypress/support/commands.ts b/demo/cypress/support/commands.ts
deleted file mode 100644
index 9b7bb8e2..00000000
--- a/demo/cypress/support/commands.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-///
-// ***********************************************
-// This example commands.ts shows you how to
-// create various custom commands and overwrite
-// existing commands.
-//
-// For more comprehensive examples of custom
-// commands please read more here:
-// https://on.cypress.io/custom-commands
-// ***********************************************
-//
-//
-// -- This is a parent command --
-// Cypress.Commands.add('login', (email, password) => { ... })
-//
-//
-// -- This is a child command --
-// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
-//
-//
-// -- This is a dual command --
-// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
-//
-//
-// -- This will overwrite an existing command --
-// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
-//
-// declare global {
-// namespace Cypress {
-// interface Chainable {
-// login(email: string, password: string): Chainable
-// drag(subject: string, options?: Partial): Chainable
-// dismiss(subject: string, options?: Partial): Chainable
-// visit(originalFn: CommandOriginalFn, url: string, options: Partial): Chainable
-// }
-// }
-// }
-
-export {}
diff --git a/demo/cypress/support/component-index.html b/demo/cypress/support/component-index.html
deleted file mode 100644
index 5f9622ae..00000000
--- a/demo/cypress/support/component-index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- Components App
-
-
-
-
-
diff --git a/demo/cypress/support/component.ts b/demo/cypress/support/component.ts
deleted file mode 100644
index b53dfc04..00000000
--- a/demo/cypress/support/component.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-// ***********************************************************
-// This example support/component.ts 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')
-
-// Import global styles
-import '../../src/assets/main.scss'
-
-import { mount } from 'cypress/vue'
-
-// Augment the Cypress namespace to include type definitions for
-// your custom command.
-// Alternatively, can be defined in cypress/support/component.d.ts
-// with a at the top of your spec.
-/* eslint-disable @typescript-eslint/no-namespace */
-declare global {
- namespace Cypress {
- interface Chainable {
- mount: typeof mount
- }
- }
-}
-
-Cypress.Commands.add('mount', mount)
-
-// Example use:
-// cy.mount(MyComponent)
diff --git a/demo/cypress/support/e2e.ts b/demo/cypress/support/e2e.ts
deleted file mode 100644
index d68db96d..00000000
--- a/demo/cypress/support/e2e.ts
+++ /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/demo/package.json b/demo/package.json
index 3a219b21..5ca44528 100644
--- a/demo/package.json
+++ b/demo/package.json
@@ -8,11 +8,9 @@
"pre-commit": "echo 'No pre commit configured for demo'",
"build": "vite build",
"preview": "vite preview",
- "test:e2e": "start-server-and-test preview http://localhost:4173 'cypress run --e2e'",
- "test:e2e:dev": "start-server-and-test 'vite dev --port 4173' http://localhost:4173 'cypress open --e2e'",
- "test:unit": "cypress run --component",
- "test:unit:dev": "cypress open --component",
- "check-types": "vue-tsc --noEmit -p tsconfig.cypress-ct.json --composite false"
+ "test:e2e": "playwright test",
+ "test:e2e:dev": "playwright test --ui",
+ "check-types": "vue-tsc --noEmit -p tsconfig.app.json --composite false"
},
"publishConfig": {
"access": "public"
@@ -29,17 +27,17 @@
"vue-router": "^4.6.3"
},
"devDependencies": {
+ "@playwright/test": "^1.57.0",
"@semantic-release/exec": "^7.1.0",
"@tsconfig/node18": "^18.2.4",
"@types/node": "^24.9.2",
"@vitejs/plugin-vue": "^6.0.1",
"@vue/tsconfig": "^0.8.1",
- "cypress": "^15.5.0",
"npm-run-all": "^4.1.5",
+ "playwright": "^1.57.0",
"semantic-release": "^25.0.1",
"semantic-release-monorepo": "^8.0.2",
"semantic-release-yarn": "^3.0.2",
- "start-server-and-test": "^2.1.2",
"typescript": "~5.9.3",
"unplugin-vue-components": "^30.0.0",
"vite": "^7.1.12",
diff --git a/demo/playwright.config.ts b/demo/playwright.config.ts
new file mode 100644
index 00000000..11a183a6
--- /dev/null
+++ b/demo/playwright.config.ts
@@ -0,0 +1,40 @@
+import { defineConfig, devices } from '@playwright/test';
+
+/**
+ * See https://playwright.dev/docs/test-configuration.
+ */
+export default defineConfig({
+ testDir: './tests',
+ /* 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: {
+ /* Base URL to use in actions like `await page.goto('/')`. */
+ baseURL: 'http://localhost:4173',
+ /* 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'] },
+ },
+ ],
+
+ /* Run your local dev server before starting the tests */
+ webServer: {
+ command: 'yarn preview',
+ url: 'http://localhost:4173',
+ reuseExistingServer: !process.env.CI,
+ },
+});
diff --git a/demo/tests/e2e/example.spec.ts b/demo/tests/e2e/example.spec.ts
new file mode 100644
index 00000000..3d3a48b8
--- /dev/null
+++ b/demo/tests/e2e/example.spec.ts
@@ -0,0 +1,8 @@
+import { test, expect } from '@playwright/test';
+
+test.describe('My First Test', () => {
+ test('visits the app root url', async ({ page }) => {
+ await page.goto('/');
+ await expect(page.locator('h1')).toContainText('You did it!');
+ });
+});
diff --git a/demo/tsconfig.cypress-ct.json b/demo/tsconfig.cypress-ct.json
deleted file mode 100644
index b21f0843..00000000
--- a/demo/tsconfig.cypress-ct.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "extends": "./tsconfig.app.json",
- "include": [
- "env.d.ts",
- "src/**/*",
- "src/**/*.vue",
- "cypress/support/component.*",
- "cypress/support/commands.ts"
- ],
- "exclude": [],
- "compilerOptions": {
- "composite": true
- }
-}
diff --git a/demo/tsconfig.json b/demo/tsconfig.json
index 27e23a60..66b5e570 100644
--- a/demo/tsconfig.json
+++ b/demo/tsconfig.json
@@ -6,9 +6,6 @@
},
{
"path": "./tsconfig.app.json"
- },
- {
- "path": "./tsconfig.cypress-ct.json"
}
]
}
diff --git a/vue-json-form/cypress.config.ts b/vue-json-form/cypress.config.ts
deleted file mode 100644
index 4602aebe..00000000
--- a/vue-json-form/cypress.config.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { defineConfig } from 'cypress';
-import { plugin as cypressGrepPlugin } from '@cypress/grep/plugin';
-
-const registerCommonTasks = (
- on: Cypress.PluginEvents,
- config: Cypress.PluginConfigOptions
-) => {
- on('task', {
- log(message) {
- console.log(message);
- return null;
- },
- table(data) {
- console.table(data);
- return null;
- },
- });
-
- return config;
-};
-
-export default defineConfig({
- projectId: 'ecbo8x',
- component: {
- devServer: {
- framework: 'vue',
- bundler: 'vite',
- },
- setupNodeEvents(on, config) {
- return registerCommonTasks(on, config);
- },
- },
-
- e2e: {
- setupNodeEvents(on, config) {
- cypressGrepPlugin(config);
- return registerCommonTasks(on, config);
- },
- },
-});
diff --git a/vue-json-form/cypress/e2e/accessibility.cy.ts b/vue-json-form/cypress/e2e/accessibility.cy.ts
deleted file mode 100644
index f843f9f4..00000000
--- a/vue-json-form/cypress/e2e/accessibility.cy.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-///
-///
-function terminalLog(violations: any) {
- cy.task(
- 'log',
- `${violations.length} accessibility violation${
- violations.length === 1 ? '' : 's'
- } ${violations.length === 1 ? 'was' : 'were'} detected`
- );
- // pluck specific keys to keep the table readable
- const violationData = violations.map(
- ({ id, impact, description, nodes }) => ({
- id,
- impact,
- description,
- nodes: nodes.length,
- })
- );
-
- cy.task('table', violationData);
-}
-
-describe('Check for accessibility issues', () => {
- const axeOptions = {
- rules: {
- 'page-has-heading-one': { enabled: false },
- },
- };
-
- it('Showcase', () => {
- cy.visit('http://localhost:5173/showcase?nonav=true');
- cy.injectAxe();
- cy.checkA11y(null, axeOptions, terminalLog);
- });
- it('Reproduce', () => {
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- cy.injectAxe();
- cy.checkA11y(null, axeOptions, terminalLog);
- });
-});
diff --git a/vue-json-form/cypress/e2e/helpers.ts b/vue-json-form/cypress/e2e/helpers.ts
deleted file mode 100644
index e69de29b..00000000
diff --git a/vue-json-form/cypress/e2e/reproduce.cy.ts b/vue-json-form/cypress/e2e/reproduce.cy.ts
deleted file mode 100644
index 2bda0609..00000000
--- a/vue-json-form/cypress/e2e/reproduce.cy.ts
+++ /dev/null
@@ -1,505 +0,0 @@
-///
-import { register as registerCypressGrep } from '@cypress/grep';
-registerCypressGrep();
-
-function submitForm() {
- cy.get('button[type="submit"]').eq(-3).click();
-}
-
-const WAIT_TIME = 150;
-
-const expectSelectOptions = (selector: string, expectedValues: string[]) => {
- cy.get(`${selector} option`)
- .should('have.length', expectedValues.length)
- .each(($option, index) => {
- expect($option.attr('value')).to.equal(expectedValues[index]);
- });
-};
-
-it('JSO-43', () => {
- const BOOL_FIELD = '#vjf_control_for__properties_jso-43_properties_bool';
- const HALLO_FIELD =
- '#vjf_control_for__properties_jso-43_properties_hallo input[value="du"]';
- const HALLO_FIELD_ICH =
- '#vjf_control_for__properties_jso-43_properties_hallo input[value="ich"]';
- const REQUIRED_FIELD =
- '#vjf_control_for__properties_jso-43_properties_abhaengiges-feld';
- const REQUIRED_LABEL =
- 'label[for="vjf_control_for__properties_jso-43_properties_abhaengiges-feld"]';
-
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- cy.get(REQUIRED_FIELD).should('not.exist');
-
- cy.get(BOOL_FIELD).check({ force: true });
- cy.get(REQUIRED_FIELD).should('exist').and('have.attr', 'required');
- cy.get(REQUIRED_LABEL).should('contain.text', '*');
-
- cy.get(BOOL_FIELD).uncheck({ force: true });
- cy.get(HALLO_FIELD_ICH).check({ force: true });
- cy.get(REQUIRED_FIELD).should('not.exist');
-
- cy.get(HALLO_FIELD).check({ force: true });
- cy.get(REQUIRED_FIELD).should('exist').and('have.attr', 'required');
- cy.get(REQUIRED_LABEL).should('contain.text', '*');
-
- cy.get(REQUIRED_FIELD).type('Hallo Pflichtfeld');
- submitForm();
- cy.get('#result-container').then((el) => {
- const res = JSON.parse(el.text());
- expect(res['jso-43']['abhaengiges-feld']).to.equal('Hallo Pflichtfeld');
- expect(res['jso-43']['hallo']).to.equal('du');
- });
-});
-
-it('JSO-79 (I)', () => {
- const FIRST_SELECT = '#vjf_control_for__properties_jso-79_properties_first';
- const SECOND_SELECT =
- '#vjf_control_for__properties_jso-79_properties_second';
-
- cy.visit('http://localhost:5173/reproduce?nonav=true');
-
- // Initial state: all options should be available
- expectSelectOptions(SECOND_SELECT, ['a1', 'a2', 'b1']);
-
- // Select 'A': only 'a' options should be available
- cy.get(FIRST_SELECT).select('A');
- cy.wait(WAIT_TIME);
- expectSelectOptions(SECOND_SELECT, ['a1', 'a2']);
-
- // Select 'B': only 'b' options should be available
- cy.get(FIRST_SELECT).select('B');
- cy.wait(WAIT_TIME);
- expectSelectOptions(SECOND_SELECT, ['b1']);
-
- cy.get(FIRST_SELECT).select('A');
- cy.get(SECOND_SELECT).select('a1');
- cy.get(FIRST_SELECT).select('B');
- cy.wait(WAIT_TIME);
- submitForm();
- cy.get('#result-container').then((el) => {
- let res = JSON.parse(el.text());
- expect(res['jso-79']['second']).to.be.undefined;
- });
-});
-
-it('JSO-79-II', () => {
- const BASE = '#vjf_control_for__properties_jso-79-ii_properties';
- const INDEPENDENT_SELECT = `${BASE}_unabhaengige-frage`;
- const DEPENDENT_SELECT = `${BASE}_abhaengige-frage`;
- const NAME_SELECT = `${BASE}_wie-heisst-du`;
-
- cy.visit('http://localhost:5173/reproduce?nonav=true');
-
- expectSelectOptions(DEPENDENT_SELECT, ['1', '2', '3']);
-
- cy.get(INDEPENDENT_SELECT).select('a');
- cy.wait(WAIT_TIME);
- expectSelectOptions(DEPENDENT_SELECT, ['1', '3']);
-
- cy.get(DEPENDENT_SELECT).select('1');
-
- cy.get(NAME_SELECT).select('Henrik');
- cy.wait(WAIT_TIME);
- expectSelectOptions(DEPENDENT_SELECT, ['2', '3']);
- cy.get(DEPENDENT_SELECT).should('have.value', null);
-
- cy.get(DEPENDENT_SELECT).select('3');
- submitForm();
- cy.get('#result-container').then((el) => {
- const res = JSON.parse(el.text());
- expect(res['jso-79-ii']['unabhaengige-frage']).to.equal('a');
- expect(res['jso-79-ii']['wie-heisst-du']).to.equal('Henrik');
- expect(res['jso-79-ii']['abhaengige-frage']).to.equal('3');
- });
-});
-
-it('JSO-79-III', () => {
- const BASE = '#vjf_control_for__properties_jso-79-iii_properties';
- const INDEPENDENT_GROUP = `${BASE}_unabhaengige-frage`;
- const DEPENDENT_SELECT = `${BASE}_abhaengige-frage`;
- const NAME_SELECT = `${BASE}_wie-heisst-du`;
-
- const toggleIndependent = (value: string, checked: boolean) => {
- const selector = `${INDEPENDENT_GROUP} input[value="${value}"]`;
- if (checked) {
- cy.get(selector).check({ force: true });
- } else {
- cy.get(selector).uncheck({ force: true });
- }
- };
-
- cy.visit('http://localhost:5173/reproduce?nonav=true');
-
- expectSelectOptions(DEPENDENT_SELECT, ['3']);
-
- toggleIndependent('a', true);
- cy.wait(WAIT_TIME);
- expectSelectOptions(DEPENDENT_SELECT, ['3', '1']);
-
- cy.get(NAME_SELECT).select('Henrik');
- cy.wait(WAIT_TIME);
- expectSelectOptions(DEPENDENT_SELECT, ['2', '3', '1']);
-
- toggleIndependent('a', false);
- cy.wait(WAIT_TIME);
- expectSelectOptions(DEPENDENT_SELECT, ['2', '3', '1']);
-
- toggleIndependent('b', true);
- toggleIndependent('c', true);
- cy.wait(WAIT_TIME);
- expectSelectOptions(DEPENDENT_SELECT, ['2', '3', '1', '4']);
-
- cy.get(DEPENDENT_SELECT).select('4');
- submitForm();
- cy.get('#result-container').then((el) => {
- const res = JSON.parse(el.text());
- expect(res['jso-79-iii']['unabhaengige-frage']).to.deep.equal([
- 'b',
- 'c',
- ]);
- expect(res['jso-79-iii']['wie-heisst-du']).to.equal('Henrik');
- expect(res['jso-79-iii']['abhaengige-frage']).to.equal('4');
- });
-});
-
-it('JSO-79-IV', () => {
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- cy.get('#vjf_control_for__properties_string-dep-required-2').should(
- 'not.have.attr',
- 'required'
- );
- cy.get(
- 'label[for="vjf_control_for__properties_string-dep-required-2"] span'
- ).should('not.include.text', '*');
-
- cy.get('#vjf_control_for__properties_string-dep-required').type('Test');
- cy.get('#vjf_control_for__properties_string-dep-required-2').should(
- 'have.attr',
- 'required'
- );
- cy.get(
- 'label[for="vjf_control_for__properties_string-dep-required-2"] span'
- ).should('include.text', '*');
-
- cy.get('#vjf_control_for__properties_string-dep-required').clear();
- cy.get('#vjf_control_for__properties_string-dep-required-2').should(
- 'not.have.attr',
- 'required'
- );
- cy.get(
- 'label[for="vjf_control_for__properties_string-dep-required-2"] span'
- ).should('not.include.text', '*');
-});
-
-it('JSO-68', () => {
- const ARRAY_CONTAINER = '#vjf_control_for__properties_multiFileUpload1';
- const SINGLE_UPLOAD = '#vjf_control_for__properties_multiFileUpload2';
-
- cy.visit('http://localhost:5173/reproduce?nonav=true');
-
- cy.get(ARRAY_CONTAINER).should('exist').and('have.class', 'vjf_array');
- cy.get(`${ARRAY_CONTAINER} button[aria-label="Add Item"]`).should('exist');
-
- cy.get(SINGLE_UPLOAD)
- .should('exist')
- .and('have.attr', 'type', 'file')
- .and('have.attr', 'multiple');
- cy.get(SINGLE_UPLOAD)
- .parents('.vjf_control')
- .find('.vjf_array')
- .should('not.exist');
-});
-
-it('Pattern string', () => {
- cy.visit('http://localhost:5173/reproduce?nonav=true');
-
- cy.get("input[name='/properties/patternString']").type('abc');
- submitForm();
- cy.get('#result-container').then((el) => {
- let res = JSON.parse(el.text());
- expect('patternString' in res).to.equal(false);
- cy.get("input[name='/properties/patternString']").clear();
- cy.get("input[name='/properties/patternString']").type('mystring-abc');
- submitForm();
- cy.get('#result-container').then((el) => {
- let res = JSON.parse(el.text());
- expect(res['patternString']).to.equal('mystring-abc');
- });
- });
-});
-
-// JSO-64 Skipped for now
-
-it('Edit Symbols', () => {
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- cy.get('input[name="/properties/obj-l/properties/auswahlfeld"]')
- .parent()
- .parent()
- .parent()
- .children()
- .eq(0)
- .then((el) => {
- expect(el).has.class('vjf_htmlRenderer');
- const chs = el.children().eq(0).children().get();
- chs.forEach((h) => {
- expect(h).has.attr('aria-label');
- });
- });
-});
-
-it('JSO-58', () => {
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- cy.get('input[name="/properties/bool-mit-hilfe"]')
- .siblings()
- .eq(0)
- .children()
- .eq(1)
- .should('have.text', 'i');
-});
-
-it('JSO-51', () => {
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- cy.get('div[name="/properties/jso-51-arr"] .vjf_htmlRenderer')
- .eq(0)
- .should('have.text', 'Pre html');
- cy.get('div[name="/properties/jso-51-arr"] .vjf_htmlRenderer')
- .eq(1)
- .should('have.text', 'Post html');
-});
-
-it('JSO-31', () => {
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- submitForm();
- cy.get('#result-container').then((el) => {
- let res = JSON.parse(el.text());
- expect(res['arrInArrPres']).to.deep.equal([
- ['item1', 'item2'],
- ['item3', 'item4'],
- ]);
- expect(res['arrInArrDef']).to.deep.equal([
- ['item1', 'item2'],
- ['item3', 'item4'],
- ]);
- });
-});
-
-it('JSO-44', () => {
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- cy.get('div[name="/properties/abhaengiges-array"]').should('not.exist');
- cy.get('input[name="/properties/auswahlfeld"]').check();
- cy.get('div[name="/properties/abhaengiges-array"]').should('exist');
- cy.get(
- 'div[name="/properties/abhaengiges-array"] input[type="text"]'
- ).should('not.exist');
- cy.get(
- 'div[name="/properties/abhaengiges-array"] input[type="checkbox"]'
- ).check();
- cy.get(
- 'div[name="/properties/abhaengiges-array"] input[type="text"]'
- ).should('exist');
-});
-
-it('JSO-37', () => {
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- cy.get('input[name="/properties/jso-37-field1"]').should('exist');
- cy.get('input[name="/properties/jso-37-field2"]').should('not.exist');
- cy.get('input[name="/properties/jso-37-field3"]').should('not.exist');
-
- cy.get('input[name="/properties/jso-37-field1"]').type('a');
-
- cy.get('input[name="/properties/jso-37-field1"]').should('exist');
- cy.get('input[name="/properties/jso-37-field2"]').should('exist');
- cy.get('input[name="/properties/jso-37-field3"]').should('not.exist');
-
- cy.get('input[name="/properties/jso-37-field2"]').type('a');
-
- cy.get('input[name="/properties/jso-37-field1"]').should('exist');
- cy.get('input[name="/properties/jso-37-field2"]').should('exist');
- cy.get('input[name="/properties/jso-37-field3"]').should('exist');
-
- cy.get('input[name="/properties/jso-37-field1"]').clear();
- cy.get('input[name="/properties/jso-37-field1"]').should('exist');
- cy.get('input[name="/properties/jso-37-field2"]').should('not.exist');
- cy.get('input[name="/properties/jso-37-field3"]').should('not.exist');
-
- cy.get('input[name="/properties/jso-37-field1"]').type('a');
- cy.get('input[name="/properties/jso-37-field2"]').type('a');
-
- cy.get('input[name="/properties/jso-37-field1"]').should('exist');
- cy.get('input[name="/properties/jso-37-field2"]').should('exist');
- cy.get('input[name="/properties/jso-37-field3"]').should('exist');
-
- cy.get('input[name="/properties/jso-37-field2"]').clear();
-
- cy.get('input[name="/properties/jso-37-field1"]').should('exist');
- cy.get('input[name="/properties/jso-37-field2"]').should('exist');
- cy.get('input[name="/properties/jso-37-field3"]').should('not.exist');
-});
-
-it('JSO-39', () => {
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- submitForm();
- cy.get('#result-container').then((el) => {
- let res = JSON.parse(el.text());
- expect(res['jso-39-multiselect']).to.deep.equal([
- 'option 2',
- 'option 3',
- ]);
- expect(res['jso-39-object']).to.deep.equal({
- test: 'ABC',
- number: 14,
- });
- expect(res['jso-39-string']).to.equal('Test');
- });
-});
-
-it('JSO-34', () => {
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > button'
- ).click();
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > button'
- ).click();
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > .list-group > div:first button.btn-outline-primary'
- ).click();
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > .list-group > div:first button.btn-outline-primary'
- ).click();
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > .list-group > div:nth-child(2) button.btn-outline-primary'
- ).click();
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > .list-group > div:nth-child(2) button.btn-outline-primary'
- ).click();
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c input[type="text"]'
- ).should('not.exist');
-
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > .list-group > div:first .list-group > div:first input[type="checkbox"]'
- ).check();
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > .list-group > div:first .list-group > div:first input[type="text"]'
- ).should('exist');
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > .list-group > div:first .list-group > div:nth-child(2) input[type="text"]'
- ).should('not.exist');
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > .list-group > div:nth-child(2) .list-group > div:nth-child(1) input[type="text"]'
- ).should('not.exist');
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > .list-group > div:nth-child(2) .list-group > div:nth-child(2) input[type="text"]'
- ).should('not.exist');
-
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > .list-group > div:nth-child(2) .list-group > div:nth-child(2) input[type="checkbox"]'
- ).check();
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > .list-group > div:first .list-group > div:first input[type="text"]'
- ).should('exist');
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > .list-group > div:first .list-group > div:nth-child(2) input[type="text"]'
- ).should('not.exist');
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > .list-group > div:nth-child(2) .list-group > div:nth-child(1) input[type="text"]'
- ).should('not.exist');
- cy.get(
- '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c > .list-group > div:nth-child(2) .list-group > div:nth-child(2) input[type="text"]'
- ).should('exist');
-});
-
-it('JSO-17', () => {
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- submitForm();
- cy.get('#result-container').then((el) => {
- let res = JSON.parse(el.text());
- expect(res['arrayWithDefaults']).to.deep.equal([
- 'default1',
- 'default2',
- ]);
- });
-});
-
-it('JSO-23 & JSO-24', () => {
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- cy.get('.vjf_showOnWrapper button[type="submit"].btn-primary').should(
- 'exist'
- );
- cy.get('.vjf_showOnWrapper button[type="reset"].btn-danger').should(
- 'exist'
- );
-
- cy.get(
- 'div[name="/properties/array-11d6266e4c57d4363b1f4ef6d72025f3a"] button[aria-label="Add Item"]'
- ).click();
- cy.get(
- 'div[name="/properties/array-11d6266e4c57d4363b1f4ef6d72025f3a"] button[aria-label="Add Item"]'
- ).click();
- cy.get(
- 'div[name="/properties/array-11d6266e4c57d4363b1f4ef6d72025f3a"] input[type="text"]'
- ).should('not.exist');
- cy.get(
- 'div[name="/properties/array-11d6266e4c57d4363b1f4ef6d72025f3a"] .list-group > div:nth-child(2) input[type="checkbox"]'
- ).check();
- cy.get(
- 'div[name="/properties/array-11d6266e4c57d4363b1f4ef6d72025f3a"] input[type="text"]'
- ).should('not.exist');
- cy.get(
- 'div[name="/properties/array-11d6266e4c57d4363b1f4ef6d72025f3a"] .list-group > div:nth-child(1) input[type="checkbox"]'
- ).check();
- cy.get(
- 'div[name="/properties/array-11d6266e4c57d4363b1f4ef6d72025f3a"] .list-group > div:nth-child(1) input[type="text"]'
- ).should('exist');
- cy.get(
- 'div[name="/properties/array-11d6266e4c57d4363b1f4ef6d72025f3a"] .list-group > div:nth-child(2) input[type="text"]'
- ).should('exist');
-});
-
-// JSO-25 & JSO-12 skipped for redundancy
-
-it('JSO-11', () => {
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- cy.get(
- 'input[name="/properties/upload-field-in-formcd69370e0708472482997b3da12ad3cc"]'
- ).should('not.exist');
- cy.get(
- 'input[name="/properties/textline-in-form736e3a96a17d436996e5c8489cb9d102"]'
- ).type('abc');
- cy.get(
- 'input[name="/properties/upload-field-in-formcd69370e0708472482997b3da12ad3cc"]'
- ).should('exist');
- cy.reload();
- cy.get(
- 'input[name="/properties/upload-field-in-formcd69370e0708472482997b3da12ad3cc"]'
- ).should('not.exist');
- cy.get(
- 'input[name="/properties/selectionfield-in-formad0995330a9343efbb2e5488ab28e4a8"][text="option 11"]'
- ).check();
- cy.get(
- 'input[name="/properties/upload-field-in-formcd69370e0708472482997b3da12ad3cc"]'
- ).should('exist');
-});
-
-// JSO-14 skipped for redundancy
-
-it('JSO-7', () => {
- // Incomplete
- cy.visit('http://localhost:5173/reproduce?nonav=true');
- cy.get('input[name="/properties/email"]').type('test');
- submitForm();
- cy.get('#result-container').then((el) => {
- let res = JSON.parse(el.text());
- expect('email' in res).to.equal(false);
-
- cy.get('input[name="/properties/email"]').clear();
- cy.get('input[name="/properties/email"]').type('test@example.com');
- submitForm();
-
- cy.get('#result-container').then((el) => {
- let res = JSON.parse(el.text());
- expect(res['email']).to.equal('test@example.com');
- });
- });
-});
diff --git a/vue-json-form/cypress/e2e/showcase.cy.ts b/vue-json-form/cypress/e2e/showcase.cy.ts
deleted file mode 100644
index 334e31d0..00000000
--- a/vue-json-form/cypress/e2e/showcase.cy.ts
+++ /dev/null
@@ -1,311 +0,0 @@
-///
-describe('Structure', () => {
- function checkRadios(containerID: string, values: string[]) {
- cy.get(containerID).children().should('have.length', values.length);
- values.forEach((value, index) => {
- cy.get(containerID)
- .children()
- .eq(index)
- .children()
- .first()
- .should('have.value', value)
- .should('have.attr', 'type', 'radio');
- });
- }
-
- beforeEach(() => {
- cy.visit('http://localhost:5173/showcase?nonav=true');
- });
-
- it('Switch', () => {
- const checkbox = cy.get('#vjf_control_for__properties_done');
- checkbox.should('exist');
- // check if is checkbox
- checkbox.should('have.attr', 'type', 'checkbox');
- });
- it('Title', () => {
- const id = 'select#vjf_control_for__properties_title';
- cy.get(id).should('exist');
- cy.get(id).children().should('have.length', 4);
- cy.get(id).children().eq(0).should('have.value', 'Mrs.');
- cy.get(id).children().eq(1).should('have.value', 'Mr.');
- cy.get(id).children().eq(2).should('have.value', 'Ms.');
- cy.get(id).children().eq(3).should('have.value', 'Dr.');
- });
- it('Fanciness', () => {
- const id = 'div#vjf_control_for__properties_fanciness';
- cy.get(id).should('exist');
-
- checkRadios(id, ['fancy', 'fancier', 'fanciest', 'unicorn']);
- });
- it('Fileupload', () => {
- const id = 'input#vjf_control_for__properties_fileupload';
- cy.get(id).should('exist');
- cy.get(id).should('have.attr', 'type', 'file');
- });
- it('Group selector', () => {
- const id = '#vjf_control_for__properties_group_selector';
- cy.get(id).should('exist');
- cy.get(`${id} > label`).should('exist');
- });
- describe('Group', () => {
- it('dueDate', () => {
- const id = 'input#vjf_control_for__properties_due_date';
- cy.get(id).should('exist');
- cy.get(id).should('have.attr', 'type', 'datetime-local');
- });
- it('Rating', () => {
- const id = 'input#vjf_control_for__properties_rating';
- cy.get(id).should('exist');
- cy.get(id).should('have.attr', 'type', 'range');
- cy.get(id).should('have.attr', 'min', '0');
- cy.get(id).should('have.attr', 'max', '5');
- cy.get(id).should('have.attr', 'step', '1');
- cy.get(id).should('have.value', 3);
- });
- it('Description', () => {
- const id = 'textarea#vjf_control_for__properties_description';
- cy.get(id).should('exist');
- cy.get(id).should(
- 'have.value',
- 'This good text was set as default'
- );
- cy.get(id).should('have.attr', 'rows', '2');
- });
- it('Teststring', () => {
- const id = 'input#vjf_control_for__properties_teststring';
- cy.get(id).should('exist');
- cy.get(id).should('have.attr', 'type', 'text');
- });
- it('Weekdays', () => {
- const id = 'div#vjf_control_for__properties_weekdays';
- cy.get(id).should('exist');
- cy.get(id).children().should('have.length', 7);
-
- const weekdays = [
- 'Monday',
- 'Tuesday',
- 'Wednesday',
- 'Thursday',
- 'Friday',
- 'Saturday',
- 'Sunday',
- ];
- weekdays.forEach((day, index) => {
- cy.get(id)
- .children()
- .eq(index)
- .children()
- .first()
- .should('have.value', day)
- .should('have.attr', 'type', 'checkbox');
- });
- });
- it('RecurrenceInterval', () => {
- const id = 'input#vjf_control_for__properties_recurrence_interval';
- cy.get(id).should('exist');
- cy.get(id).should('have.attr', 'type', 'number');
- cy.get(id).should('have.attr', 'step', '1');
- cy.get(id).siblings().eq(0).should('have.text', 'Weeks');
- });
- it('TestArray', () => {
- const id = 'div[name="/properties/testArray"]';
- cy.get(id).should('exist');
- cy.get(`${id} input`).should('exist');
- cy.get(`${id} input`).should(
- 'have.attr',
- 'placeholder',
- 'This is a placeholder'
- );
- cy.get(`${id} button[aria-label='Add Item']`).should('exist');
- });
- });
- describe('Object', () => {
- beforeEach(() => {
- cy.get('#vjf_control_for__properties_group_selector')
- .children()
- .eq(3)
- .click();
- });
-
- it('name', () => {
- const id =
- 'input#vjf_control_for__properties_testObject_properties_petName';
- cy.get(id).should('exist');
- cy.get(id).should('have.attr', 'type', 'text');
- });
-
- it('age', () => {
- const id =
- 'input#vjf_control_for__properties_testObject_properties_age';
- cy.get(id).should('exist');
- cy.get(id).should('have.attr', 'type', 'number');
- cy.get(id).should('have.attr', 'step', '1');
- cy.get(id).should('have.attr', 'min', '0');
- cy.get(id).should('have.attr', 'max', '100');
- cy.get(id).should('have.value', 10);
- });
-
- it('flauschig', () => {
- const id =
- 'input#vjf_control_for__properties_testObject_properties_flauschig';
- cy.get(id).should('exist');
- cy.get(id).should('have.attr', 'type', 'checkbox');
- });
- });
-
- it('HTML text', () => {
- const id = 'span.vjf_htmlRenderer > p ';
- cy.get(id).should('exist');
- cy.get(id).should(
- 'have.html',
- 'Ich bin ein HTML Text'
- );
- });
-
- it('Form Buttons', () => {
- cy.get('button[type="submit"]').should('exist');
- cy.get('button[type="reset"]').should('exist');
- });
-
- it('Fancy Unicorn', () => {
- cy.get('#vjf_control_for__properties_fanciness input').eq(3).check();
- cy.get('input[type=range]#vjf_control_for__properties_rating')
- .invoke('val', 4)
- .trigger('input');
- const id = 'span.vjf_htmlRenderer > h3';
- cy.get(id).should(
- 'have.html',
- 'You are a very fancy unicorn my friend...'
- );
- cy.get(id).should(
- 'have.attr',
- 'style',
- 'background-image:linear-gradient(to left, violet, indigo, blue, green, yellow, orange, red);-webkit-background-clip:text;color:transparent'
- );
- });
-});
-
-describe('Button functions', () => {
- beforeEach(() => {
- cy.visit('http://localhost:5173/showcase?nonav=true');
- });
-
- it('submit with missing fields', () => {
- cy.get('#vjf_control_for__properties_name').type('Test User');
- cy.get('button[type="submit"]:not([formnovalidate])').click();
- cy.get('#result-container').then(($el) => {
- const rawText = $el.text();
- const json = JSON.parse(rawText);
-
- expect(json).to.deep.equal({});
- });
- });
- it('submit with missing fields and novalidate', () => {
- cy.get('#vjf_control_for__properties_name').type('Test User');
- cy.get('button[type="submit"][formnovalidate]').click();
- cy.get('#result-container').then(($el) => {
- const rawText = $el.text();
- const json = JSON.parse(rawText);
-
- expect(json['name']).to.equal('Test User');
- });
- });
- it('reset form', () => {
- cy.get('#vjf_control_for__properties_name').type('Test User');
- cy.get('button[type="reset"]').click();
- cy.get('#vjf_control_for__properties_name').should('have.value', '');
- });
-
- it('submit with data (group)', function () {
- cy.get('#vjf_control_for__properties_done').check();
- cy.get('#vjf_control_for__properties_title').select('Mr.');
- cy.get('#vjf_control_for__properties_name').type('Test User 2');
- cy.get('#vjf_control_for__properties_fanciness input').eq(3).check();
- cy.get('#vjf_control_for__properties_due_date').type(
- '2000-12-11T14:24'
- );
- cy.get('#vjf_control_for__properties_description').click();
- cy.get('#vjf_control_for__properties_teststring').type('test');
- cy.get('#vjf_control_for__properties_weekdays input').eq(0).check();
- cy.get('#vjf_control_for__properties_weekdays input').eq(4).check();
- cy.get('#vjf_control_for__properties_recurrence_interval').type('4');
- cy.get('#vjf_control_for__properties_testArray input')
- .eq(0)
- .type('Hello');
- cy.get('#vjf_control_for__properties_testArray input')
- .eq(1)
- .type('World');
- cy.get(
- '#vjf_control_for__properties_testArray > .btn-outline-primary'
- ).click();
- cy.get('#vjf_control_for__properties_testArray input')
- .eq(2)
- .type('I am third!');
- cy.get('.btn-primary').click();
-
- cy.get('#result-container').then(($el) => {
- const rawText = $el.text();
- const json = JSON.parse(rawText);
-
- expect(json['done']).to.equal(true);
- expect(json['title']).to.equal('Mr.');
- expect(json['name']).to.equal('Test User 2');
- expect(json['fanciness']).to.equal('unicorn');
- expect(json['due_date']).to.equal('2000-12-11T14:24');
- expect(json['description']).to.equal(
- 'This good text was set as default'
- );
- expect(json['teststring']).to.equal('test');
- expect(json['weekdays']).to.deep.equal(['Monday', 'Friday']);
- expect(json['recurrence_interval']).to.equal(4);
- expect(json['testArray']).to.deep.equal([
- 'Hello',
- 'World',
- 'I am third!',
- ]);
- });
- });
-
- it('submit with data (object)', function () {
- cy.get('#vjf_control_for__properties_done').check();
- cy.get('#vjf_control_for__properties_title').select('Mr.');
- cy.get('#vjf_control_for__properties_name').type('Test User 2');
- cy.get('#vjf_control_for__properties_fanciness input').eq(3).check();
-
- cy.get('#vjf_control_for__properties_group_selector label')
- .eq(1)
- .click();
-
- cy.get(
- '#vjf_control_for__properties_testObject_properties_petName'
- ).type('Richie');
- cy.get(
- '#vjf_control_for__properties_testObject_properties_age'
- ).clear();
- cy.get('#vjf_control_for__properties_testObject_properties_age').type(
- '15'
- );
- cy.get(
- '#vjf_control_for__properties_testObject_properties_flauschig'
- ).check();
-
- cy.get('.btn-primary').click();
-
- cy.get('#result-container').then(($el) => {
- const rawText = $el.text();
- const json = JSON.parse(rawText);
-
- expect(json['done']).to.equal(true);
- expect(json['title']).to.equal('Mr.');
- expect(json['name']).to.equal('Test User 2');
- expect(json['fanciness']).to.equal('unicorn');
-
- expect(json['testObject']).to.deep.equal({
- petName: 'Richie',
- age: 15,
- flauschig: true,
- });
- });
- });
-});
diff --git a/vue-json-form/cypress/fixtures/example.json b/vue-json-form/cypress/fixtures/example.json
deleted file mode 100644
index 02e42543..00000000
--- a/vue-json-form/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/vue-json-form/cypress/support/commands.ts b/vue-json-form/cypress/support/commands.ts
deleted file mode 100644
index 698b01a4..00000000
--- a/vue-json-form/cypress/support/commands.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-///
-// ***********************************************
-// This example commands.ts shows you how to
-// create various custom commands and overwrite
-// existing commands.
-//
-// For more comprehensive examples of custom
-// commands please read more here:
-// https://on.cypress.io/custom-commands
-// ***********************************************
-//
-//
-// -- This is a parent command --
-// Cypress.Commands.add('login', (email, password) => { ... })
-//
-//
-// -- This is a child command --
-// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
-//
-//
-// -- This is a dual command --
-// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
-//
-//
-// -- This will overwrite an existing command --
-// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
-//
-// declare global {
-// namespace Cypress {
-// interface Chainable {
-// login(email: string, password: string): Chainable
-// drag(subject: string, options?: Partial): Chainable
-// dismiss(subject: string, options?: Partial): Chainable
-// visit(originalFn: CommandOriginalFn, url: string, options: Partial): Chainable
-// }
-// }
-// }
\ No newline at end of file
diff --git a/vue-json-form/cypress/support/component-index.html b/vue-json-form/cypress/support/component-index.html
deleted file mode 100644
index ac6e79fd..00000000
--- a/vue-json-form/cypress/support/component-index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- Components App
-
-
-
-
-
\ No newline at end of file
diff --git a/vue-json-form/cypress/support/component.ts b/vue-json-form/cypress/support/component.ts
deleted file mode 100644
index 9b33d4a5..00000000
--- a/vue-json-form/cypress/support/component.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-// ***********************************************************
-// This example support/component.ts 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')
-
-import { mount } from 'cypress/vue'
-
-// Augment the Cypress namespace to include type definitions for
-// your custom command.
-// Alternatively, can be defined in cypress/support/component.d.ts
-// with a at the top of your spec.
-declare global {
- namespace Cypress {
- interface Chainable {
- mount: typeof mount
- }
- }
-}
-
-Cypress.Commands.add('mount', mount)
-
-// Example use:
-// cy.mount(MyComponent)
\ No newline at end of file
diff --git a/vue-json-form/cypress/support/e2e.ts b/vue-json-form/cypress/support/e2e.ts
deleted file mode 100644
index 6d551238..00000000
--- a/vue-json-form/cypress/support/e2e.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-// ***********************************************************
-// This example support/e2e.ts 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';
-import 'cypress-axe';
-// Alternatively you can use CommonJS syntax:
-// require('./commands')
diff --git a/vue-json-form/package.json b/vue-json-form/package.json
index 8c73fafb..400c638e 100644
--- a/vue-json-form/package.json
+++ b/vue-json-form/package.json
@@ -40,14 +40,14 @@
"preview": "vite preview",
"test": "run-p 'test:**'",
"test:unit": "vitest --run",
- "test:e2e": "cypress run",
+ "test:e2e": "playwright test",
+ "test:e2e:ui": "playwright test --ui",
"build": "vite build",
"check-types": "vue-tsc --noEmit -p tsconfig.app.json --composite false",
"pre-commit": "echo ''",
"lint": "eslint src --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore --exit-on-fatal-error",
"format": "prettier --write src/",
- "prepare": "husky",
- "cypress": "cypress open"
+ "prepare": "husky"
},
"dependencies": {
"@educorvi/rita": "^5.5.0",
@@ -66,8 +66,9 @@
"vuedraggable": "^4.1.0"
},
"devDependencies": {
- "@cypress/grep": "^5.0.0",
+ "@axe-core/playwright": "^4.11.0",
"@educorvi/vue-json-form-ajv-validator": "workspace:^",
+ "@playwright/test": "^1.57.0",
"@rushstack/eslint-patch": "^1.14.1",
"@semantic-release/exec": "^7.1.0",
"@tsconfig/node18": "^18.2.4",
@@ -84,14 +85,13 @@
"@vue/test-utils": "^2.4.6",
"@vue/tsconfig": "^0.8.1",
"axe-core": "^4.11.0",
- "cypress": "^15.5.0",
- "cypress-axe": "^1.7.0",
"eslint": "^9.38.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-vue": "^10.5.1",
"jsdom": "^27.0.1",
"lightningcss": "^1.30.2",
"npm-run-all": "^4.1.5",
+ "playwright": "^1.57.0",
"prettier": "^3.6.2",
"semantic-release": "^25.0.1",
"semantic-release-monorepo": "^8.0.2",
diff --git a/vue-json-form/playwright.config.ts b/vue-json-form/playwright.config.ts
new file mode 100644
index 00000000..ea5ef41c
--- /dev/null
+++ b/vue-json-form/playwright.config.ts
@@ -0,0 +1,44 @@
+import { defineConfig, devices, PlaywrightTestConfig } from '@playwright/test';
+
+const reporter: PlaywrightTestConfig['reporter'] = [['list'], ['html']];
+const reporterCI: PlaywrightTestConfig['reporter'] = [
+ ['github'],
+ ['junit', { outputFile: 'test-results/results.xml' }],
+];
+
+/**
+ * See https://playwright.dev/docs/test-configuration.
+ */
+export default defineConfig({
+ testDir: './tests',
+ /* 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,
+ /* Opt out of parallel tests on CI. */
+ // workers: process.env.CI ? 1 : undefined,
+ /* Reporter to use. See https://playwright.dev/docs/test-reporters */
+ reporter: process.env.CI ? reporterCI : reporter,
+ /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
+ use: {
+ /* Base URL to use in actions like `await page.goto('/')`. */
+ baseURL: 'http://localhost:5173',
+ /* 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'] },
+ },
+ ],
+
+ /* Run your local dev server before starting the tests */
+ webServer: {
+ command: 'yarn dev',
+ url: 'http://localhost:5173',
+ reuseExistingServer: !process.env.CI,
+ },
+});
diff --git a/vue-json-form/tests/e2e/accessibility.spec.ts b/vue-json-form/tests/e2e/accessibility.spec.ts
new file mode 100644
index 00000000..78c15d19
--- /dev/null
+++ b/vue-json-form/tests/e2e/accessibility.spec.ts
@@ -0,0 +1,28 @@
+import { test, expect } from '@playwright/test';
+import AxeBuilder from '@axe-core/playwright';
+
+test.describe('Check for accessibility issues', () => {
+ const axeOptions = {
+ rules: {
+ 'page-has-heading-one': { enabled: false },
+ },
+ };
+
+ test('Showcase', async ({ page }) => {
+ await page.goto('http://localhost:5173/showcase?nonav=true');
+ const accessibilityScanResults = await new AxeBuilder({ page })
+ .options(axeOptions)
+ .analyze();
+
+ expect(accessibilityScanResults.violations).toEqual([]);
+ });
+
+ test('Reproduce', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+ const accessibilityScanResults = await new AxeBuilder({ page })
+ .options(axeOptions)
+ .analyze();
+
+ expect(accessibilityScanResults.violations).toEqual([]);
+ });
+});
diff --git a/vue-json-form/tests/e2e/reproduce.spec.ts b/vue-json-form/tests/e2e/reproduce.spec.ts
new file mode 100644
index 00000000..ff42265c
--- /dev/null
+++ b/vue-json-form/tests/e2e/reproduce.spec.ts
@@ -0,0 +1,625 @@
+import { test, expect } from '@playwright/test';
+
+function submitForm(page) {
+ return page.locator('button[type="submit"]').nth(-3).click();
+}
+
+const WAIT_TIME = 150;
+
+const expectSelectOptions = async (
+ page,
+ selector: string,
+ expectedValues: string[]
+) => {
+ const options = page.locator(`${selector} option`);
+ await expect(options).toHaveCount(expectedValues.length);
+
+ for (let index = 0; index < expectedValues.length; index++) {
+ await expect(options.nth(index)).toHaveAttribute(
+ 'value',
+ expectedValues[index]
+ );
+ }
+};
+
+test('JSO-43', async ({ page }) => {
+ const BOOL_FIELD = '#vjf_control_for__properties_jso-43_properties_bool';
+ const HALLO_FIELD =
+ '#vjf_control_for__properties_jso-43_properties_hallo input[value="du"]';
+ const HALLO_FIELD_ICH =
+ '#vjf_control_for__properties_jso-43_properties_hallo input[value="ich"]';
+ const REQUIRED_FIELD =
+ '#vjf_control_for__properties_jso-43_properties_abhaengiges-feld';
+ const REQUIRED_LABEL =
+ 'label[for="vjf_control_for__properties_jso-43_properties_abhaengiges-feld"]';
+
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+ await expect(page.locator(REQUIRED_FIELD)).not.toBeVisible();
+
+ await page.locator(BOOL_FIELD).check({ force: true });
+ await expect(page.locator(REQUIRED_FIELD)).toBeVisible();
+ await expect(page.locator(REQUIRED_FIELD)).toHaveAttribute('required', '');
+ await expect(page.locator(REQUIRED_LABEL)).toContainText('*');
+
+ await page.locator(BOOL_FIELD).uncheck({ force: true });
+ await page.locator(HALLO_FIELD_ICH).check({ force: true });
+ await expect(page.locator(REQUIRED_FIELD)).not.toBeVisible();
+
+ await page.locator(HALLO_FIELD).check({ force: true });
+ await expect(page.locator(REQUIRED_FIELD)).toBeVisible();
+ await expect(page.locator(REQUIRED_FIELD)).toHaveAttribute('required', '');
+ await expect(page.locator(REQUIRED_LABEL)).toContainText('*');
+
+ await page.locator(REQUIRED_FIELD).fill('Hallo Pflichtfeld');
+ await submitForm(page);
+
+ const resultText = await page.locator('#result-container').textContent();
+ const res = JSON.parse(resultText || '');
+ expect(res['jso-43']['abhaengiges-feld']).toEqual('Hallo Pflichtfeld');
+ expect(res['jso-43']['hallo']).toEqual('du');
+});
+
+test('JSO-79 (I)', async ({ page }) => {
+ const FIRST_SELECT = '#vjf_control_for__properties_jso-79_properties_first';
+ const SECOND_SELECT =
+ '#vjf_control_for__properties_jso-79_properties_second';
+
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ // Initial state: all options should be available
+ await expectSelectOptions(page, SECOND_SELECT, ['a1', 'a2', 'b1']);
+
+ // Select 'A': only 'a' options should be available
+ await page.locator(FIRST_SELECT).selectOption('A');
+ await page.waitForTimeout(WAIT_TIME);
+ await expectSelectOptions(page, SECOND_SELECT, ['a1', 'a2']);
+
+ // Select 'B': only 'b' options should be available
+ await page.locator(FIRST_SELECT).selectOption('B');
+ await page.waitForTimeout(WAIT_TIME);
+ await expectSelectOptions(page, SECOND_SELECT, ['b1']);
+
+ await page.locator(FIRST_SELECT).selectOption('A');
+ await page.locator(SECOND_SELECT).selectOption('a1');
+ await page.locator(FIRST_SELECT).selectOption('B');
+ await page.waitForTimeout(WAIT_TIME);
+ await submitForm(page);
+
+ const resultText = await page.locator('#result-container').textContent();
+ const res = JSON.parse(resultText || '');
+ expect(res['jso-79']['second']).toBeUndefined();
+});
+
+test('JSO-79-II', async ({ page }) => {
+ const BASE = '#vjf_control_for__properties_jso-79-ii_properties';
+ const INDEPENDENT_SELECT = `${BASE}_unabhaengige-frage`;
+ const DEPENDENT_SELECT = `${BASE}_abhaengige-frage`;
+ const NAME_SELECT = `${BASE}_wie-heisst-du`;
+
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ await expectSelectOptions(page, DEPENDENT_SELECT, ['1', '2', '3']);
+
+ await page.locator(INDEPENDENT_SELECT).selectOption('a');
+ await page.waitForTimeout(WAIT_TIME);
+ await expectSelectOptions(page, DEPENDENT_SELECT, ['1', '3']);
+
+ await page.locator(DEPENDENT_SELECT).selectOption('1');
+
+ await page.locator(NAME_SELECT).selectOption('Henrik');
+ await page.waitForTimeout(WAIT_TIME);
+ await expectSelectOptions(page, DEPENDENT_SELECT, ['2', '3']);
+ await expect(page.locator(DEPENDENT_SELECT)).toHaveValue('');
+
+ await page.locator(DEPENDENT_SELECT).selectOption('3');
+ await submitForm(page);
+
+ const resultText = await page.locator('#result-container').textContent();
+ const res = JSON.parse(resultText || '');
+ expect(res['jso-79-ii']['unabhaengige-frage']).toEqual('a');
+ expect(res['jso-79-ii']['wie-heisst-du']).toEqual('Henrik');
+ expect(res['jso-79-ii']['abhaengige-frage']).toEqual('3');
+});
+
+test('JSO-79-III', async ({ page }) => {
+ const BASE = '#vjf_control_for__properties_jso-79-iii_properties';
+ const INDEPENDENT_GROUP = `${BASE}_unabhaengige-frage`;
+ const DEPENDENT_SELECT = `${BASE}_abhaengige-frage`;
+ const NAME_SELECT = `${BASE}_wie-heisst-du`;
+
+ const toggleIndependent = async (value: string, checked: boolean) => {
+ const selector = `${INDEPENDENT_GROUP} input[value="${value}"]`;
+ if (checked) {
+ await page.locator(selector).check({ force: true });
+ } else {
+ await page.locator(selector).uncheck({ force: true });
+ }
+ };
+
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ await expectSelectOptions(page, DEPENDENT_SELECT, ['3']);
+
+ await toggleIndependent('a', true);
+ await page.waitForTimeout(WAIT_TIME);
+ await expectSelectOptions(page, DEPENDENT_SELECT, ['3', '1']);
+
+ await page.locator(NAME_SELECT).selectOption('Henrik');
+ await page.waitForTimeout(WAIT_TIME);
+ await expectSelectOptions(page, DEPENDENT_SELECT, ['2', '3', '1']);
+
+ await toggleIndependent('a', false);
+ await page.waitForTimeout(WAIT_TIME);
+ await expectSelectOptions(page, DEPENDENT_SELECT, ['2', '3', '1']);
+
+ await toggleIndependent('b', true);
+ await toggleIndependent('c', true);
+ await page.waitForTimeout(WAIT_TIME);
+ await expectSelectOptions(page, DEPENDENT_SELECT, ['2', '3', '1', '4']);
+
+ await page.locator(DEPENDENT_SELECT).selectOption('4');
+ await submitForm(page);
+
+ const resultText = await page.locator('#result-container').textContent();
+ const res = JSON.parse(resultText || '');
+ expect(res['jso-79-iii']['unabhaengige-frage']).toEqual(['b', 'c']);
+ expect(res['jso-79-iii']['wie-heisst-du']).toEqual('Henrik');
+ expect(res['jso-79-iii']['abhaengige-frage']).toEqual('4');
+});
+
+test('JSO-79-IV', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ await expect(
+ page.locator('#vjf_control_for__properties_string-dep-required-2')
+ ).not.toHaveAttribute('required', '');
+ await expect(
+ page.locator(
+ 'label[for="vjf_control_for__properties_string-dep-required-2"] span'
+ )
+ ).not.toContainText('*');
+
+ await page
+ .locator('#vjf_control_for__properties_string-dep-required')
+ .fill('Test');
+ await expect(
+ page.locator('#vjf_control_for__properties_string-dep-required-2')
+ ).toHaveAttribute('required', '');
+ await expect(
+ page.locator(
+ 'label[for="vjf_control_for__properties_string-dep-required-2"] span'
+ )
+ ).toContainText('*');
+
+ await page
+ .locator('#vjf_control_for__properties_string-dep-required')
+ .clear();
+ await expect(
+ page.locator('#vjf_control_for__properties_string-dep-required-2')
+ ).not.toHaveAttribute('required', '');
+ await expect(
+ page.locator(
+ 'label[for="vjf_control_for__properties_string-dep-required-2"] span'
+ )
+ ).not.toContainText('*');
+});
+
+test('JSO-68', async ({ page }) => {
+ const ARRAY_CONTAINER = '#vjf_control_for__properties_multiFileUpload1';
+ const SINGLE_UPLOAD = '#vjf_control_for__properties_multiFileUpload2';
+
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ await expect(page.locator(ARRAY_CONTAINER)).toBeVisible();
+ await expect(page.locator(ARRAY_CONTAINER)).toHaveClass(/vjf_array/);
+ await expect(
+ page.locator(`${ARRAY_CONTAINER} button[aria-label="Add Item"]`)
+ ).toBeVisible();
+
+ await expect(page.locator(SINGLE_UPLOAD)).toBeVisible();
+ await expect(page.locator(SINGLE_UPLOAD)).toHaveAttribute('type', 'file');
+ await expect(page.locator(SINGLE_UPLOAD)).toHaveAttribute('multiple', '');
+
+ const parent = page
+ .locator(SINGLE_UPLOAD)
+ .locator('xpath=ancestor::div[@class="vjf_control"]');
+ await expect(parent.locator('.vjf_array')).not.toBeVisible();
+});
+
+test('Pattern string', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ await page.locator('input[name="/properties/patternString"]').fill('abc');
+ await submitForm(page);
+
+ let resultText = await page.locator('#result-container').textContent();
+ let res = JSON.parse(resultText || '');
+ expect('patternString' in res).toEqual(false);
+
+ await page.locator('input[name="/properties/patternString"]').clear();
+ await page
+ .locator('input[name="/properties/patternString"]')
+ .fill('mystring-abc');
+ await submitForm(page);
+
+ resultText = await page.locator('#result-container').textContent();
+ res = JSON.parse(resultText || '');
+ expect(res['patternString']).toEqual('mystring-abc');
+});
+
+test('Edit Symbols', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ const parent = page
+ .locator('input[name="/properties/obj-l/properties/auswahlfeld"]')
+ .locator('xpath=ancestor::*[3]');
+ const firstChild = parent.locator('> *').first();
+
+ await expect(firstChild).toHaveClass(/vjf_htmlRenderer/);
+
+ const icons = firstChild.locator('> * > *');
+ const count = await icons.count();
+
+ for (let i = 0; i < count; i++) {
+ await expect(icons.nth(i)).toHaveAttribute('aria-label', /.+/);
+ }
+});
+
+test('JSO-58', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ const helpText = page
+ .locator('input[name="/properties/bool-mit-hilfe"]')
+ .locator('xpath=following-sibling::*[1]')
+ .locator('> *')
+ .nth(1);
+
+ await expect(helpText).toHaveText('i');
+});
+
+test('JSO-51', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ await expect(
+ page
+ .locator('div[name="/properties/jso-51-arr"] .vjf_htmlRenderer')
+ .nth(0)
+ ).toHaveText('Pre html');
+ await expect(
+ page
+ .locator('div[name="/properties/jso-51-arr"] .vjf_htmlRenderer')
+ .nth(1)
+ ).toHaveText('Post html');
+});
+
+test('JSO-31', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+ await submitForm(page);
+
+ const resultText = await page.locator('#result-container').textContent();
+ const res = JSON.parse(resultText || '');
+ expect(res['arrInArrPres']).toEqual([
+ ['item1', 'item2'],
+ ['item3', 'item4'],
+ ]);
+ expect(res['arrInArrDef']).toEqual([
+ ['item1', 'item2'],
+ ['item3', 'item4'],
+ ]);
+});
+
+test('JSO-44', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ await expect(
+ page.locator('div[name="/properties/abhaengiges-array"]')
+ ).not.toBeVisible();
+ await page.locator('input[name="/properties/auswahlfeld"]').check();
+ await expect(
+ page.locator('div[name="/properties/abhaengiges-array"]')
+ ).toBeVisible();
+ await expect(
+ page.locator(
+ 'div[name="/properties/abhaengiges-array"] input[type="text"]'
+ )
+ ).not.toBeVisible();
+ await page
+ .locator(
+ 'div[name="/properties/abhaengiges-array"] input[type="checkbox"]'
+ )
+ .check();
+ await expect(
+ page.locator(
+ 'div[name="/properties/abhaengiges-array"] input[type="text"]'
+ )
+ ).toBeVisible();
+});
+
+test('JSO-37', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ await expect(
+ page.locator('input[name="/properties/jso-37-field1"]')
+ ).toBeVisible();
+ await expect(
+ page.locator('input[name="/properties/jso-37-field2"]')
+ ).not.toBeVisible();
+ await expect(
+ page.locator('input[name="/properties/jso-37-field3"]')
+ ).not.toBeVisible();
+
+ await page.locator('input[name="/properties/jso-37-field1"]').fill('a');
+
+ await expect(
+ page.locator('input[name="/properties/jso-37-field1"]')
+ ).toBeVisible();
+ await expect(
+ page.locator('input[name="/properties/jso-37-field2"]')
+ ).toBeVisible();
+ await expect(
+ page.locator('input[name="/properties/jso-37-field3"]')
+ ).not.toBeVisible();
+
+ await page.locator('input[name="/properties/jso-37-field2"]').fill('a');
+
+ await expect(
+ page.locator('input[name="/properties/jso-37-field1"]')
+ ).toBeVisible();
+ await expect(
+ page.locator('input[name="/properties/jso-37-field2"]')
+ ).toBeVisible();
+ await expect(
+ page.locator('input[name="/properties/jso-37-field3"]')
+ ).toBeVisible();
+
+ await page.locator('input[name="/properties/jso-37-field1"]').clear();
+ await expect(
+ page.locator('input[name="/properties/jso-37-field1"]')
+ ).toBeVisible();
+ await expect(
+ page.locator('input[name="/properties/jso-37-field2"]')
+ ).not.toBeVisible();
+ await expect(
+ page.locator('input[name="/properties/jso-37-field3"]')
+ ).not.toBeVisible();
+
+ await page.locator('input[name="/properties/jso-37-field1"]').fill('a');
+ await page.locator('input[name="/properties/jso-37-field2"]').fill('a');
+
+ await expect(
+ page.locator('input[name="/properties/jso-37-field1"]')
+ ).toBeVisible();
+ await expect(
+ page.locator('input[name="/properties/jso-37-field2"]')
+ ).toBeVisible();
+ await expect(
+ page.locator('input[name="/properties/jso-37-field3"]')
+ ).toBeVisible();
+
+ await page.locator('input[name="/properties/jso-37-field2"]').clear();
+
+ await expect(
+ page.locator('input[name="/properties/jso-37-field1"]')
+ ).toBeVisible();
+ await expect(
+ page.locator('input[name="/properties/jso-37-field2"]')
+ ).toBeVisible();
+ await expect(
+ page.locator('input[name="/properties/jso-37-field3"]')
+ ).not.toBeVisible();
+});
+
+test('JSO-39', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+ await submitForm(page);
+
+ const resultText = await page.locator('#result-container').textContent();
+ const res = JSON.parse(resultText || '');
+ expect(res['jso-39-multiselect']).toEqual(['option 2', 'option 3']);
+ expect(res['jso-39-object']).toEqual({
+ test: 'ABC',
+ number: 14,
+ });
+ expect(res['jso-39-string']).toEqual('Test');
+});
+
+test('JSO-34', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ const containerId =
+ '#vjf_control_for__properties_array141d1d356e40b4062ac2b1476ff52648c';
+
+ await page.locator(`${containerId} > button`).click();
+ await page.locator(`${containerId} > button`).click();
+ await page
+ .locator(
+ `${containerId} > .list-group > div:first-child button.btn-outline-primary`
+ )
+ .click();
+ await page
+ .locator(
+ `${containerId} > .list-group > div:first-child button.btn-outline-primary`
+ )
+ .click();
+ await page
+ .locator(
+ `${containerId} > .list-group > div:nth-child(2) button.btn-outline-primary`
+ )
+ .click();
+ await page
+ .locator(
+ `${containerId} > .list-group > div:nth-child(2) button.btn-outline-primary`
+ )
+ .click();
+
+ await expect(
+ page.locator(`${containerId} input[type="text"]`)
+ ).not.toBeVisible();
+
+ await page
+ .locator(
+ `${containerId} > .list-group > div:first-child .list-group > div:first-child input[type="checkbox"]`
+ )
+ .check();
+ await expect(
+ page.locator(
+ `${containerId} > .list-group > div:first-child .list-group > div:first-child input[type="text"]`
+ )
+ ).toBeVisible();
+ await expect(
+ page.locator(
+ `${containerId} > .list-group > div:first-child .list-group > div:nth-child(2) input[type="text"]`
+ )
+ ).not.toBeVisible();
+ await expect(
+ page.locator(
+ `${containerId} > .list-group > div:nth-child(2) .list-group > div:nth-child(1) input[type="text"]`
+ )
+ ).not.toBeVisible();
+ await expect(
+ page.locator(
+ `${containerId} > .list-group > div:nth-child(2) .list-group > div:nth-child(2) input[type="text"]`
+ )
+ ).not.toBeVisible();
+
+ await page
+ .locator(
+ `${containerId} > .list-group > div:nth-child(2) .list-group > div:nth-child(2) input[type="checkbox"]`
+ )
+ .check();
+ await expect(
+ page.locator(
+ `${containerId} > .list-group > div:first-child .list-group > div:first-child input[type="text"]`
+ )
+ ).toBeVisible();
+ await expect(
+ page.locator(
+ `${containerId} > .list-group > div:first-child .list-group > div:nth-child(2) input[type="text"]`
+ )
+ ).not.toBeVisible();
+ await expect(
+ page.locator(
+ `${containerId} > .list-group > div:nth-child(2) .list-group > div:nth-child(1) input[type="text"]`
+ )
+ ).not.toBeVisible();
+ await expect(
+ page.locator(
+ `${containerId} > .list-group > div:nth-child(2) .list-group > div:nth-child(2) input[type="text"]`
+ )
+ ).toBeVisible();
+});
+
+test('JSO-17', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+ await submitForm(page);
+
+ const resultText = await page.locator('#result-container').textContent();
+ const res = JSON.parse(resultText || '');
+ expect(res['arrayWithDefaults']).toEqual(['default1', 'default2']);
+});
+
+test('JSO-23 & JSO-24', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ await expect(
+ page.locator(
+ '.vjf_group .vjf_showOnWrapper button[type="submit"].btn-primary'
+ )
+ ).toBeVisible();
+ await expect(
+ page.locator(
+ '.vjf_group .vjf_showOnWrapper button[type="reset"].btn-danger'
+ )
+ ).toBeVisible();
+
+ const arrayId =
+ 'div[name="/properties/array-11d6266e4c57d4363b1f4ef6d72025f3a"]';
+
+ await page.locator(`${arrayId} button[aria-label="Add Item"]`).click();
+ await page.locator(`${arrayId} button[aria-label="Add Item"]`).click();
+ await expect(
+ page.locator(`${arrayId} input[type="text"]`)
+ ).not.toBeVisible();
+ await page
+ .locator(
+ `${arrayId} .list-group > div:nth-child(2) input[type="checkbox"]`
+ )
+ .check();
+ await expect(
+ page.locator(`${arrayId} input[type="text"]`)
+ ).not.toBeVisible();
+ await page
+ .locator(
+ `${arrayId} .list-group > div:nth-child(1) input[type="checkbox"]`
+ )
+ .check();
+ await expect(
+ page.locator(
+ `${arrayId} .list-group > div:nth-child(1) input[type="text"]`
+ )
+ ).toBeVisible();
+ await expect(
+ page.locator(
+ `${arrayId} .list-group > div:nth-child(2) input[type="text"]`
+ )
+ ).toBeVisible();
+});
+
+test('JSO-11', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ await expect(
+ page.locator(
+ 'input[name="/properties/upload-field-in-formcd69370e0708472482997b3da12ad3cc"]'
+ )
+ ).not.toBeVisible();
+ await page
+ .locator(
+ 'input[name="/properties/textline-in-form736e3a96a17d436996e5c8489cb9d102"]'
+ )
+ .fill('abc');
+ await expect(
+ page.locator(
+ 'input[name="/properties/upload-field-in-formcd69370e0708472482997b3da12ad3cc"]'
+ )
+ ).toBeVisible();
+
+ await page.reload();
+
+ await expect(
+ page.locator(
+ 'input[name="/properties/upload-field-in-formcd69370e0708472482997b3da12ad3cc"]'
+ )
+ ).not.toBeVisible();
+ await page
+ .locator(
+ 'input[name="/properties/selectionfield-in-formad0995330a9343efbb2e5488ab28e4a8"][value="option 11"]'
+ )
+ .check();
+ await expect(
+ page.locator(
+ 'input[name="/properties/upload-field-in-formcd69370e0708472482997b3da12ad3cc"]'
+ )
+ ).toBeVisible();
+});
+
+test('JSO-7', async ({ page }) => {
+ await page.goto('http://localhost:5173/reproduce?nonav=true');
+
+ await page.locator('input[name="/properties/email"]').fill('test');
+ await submitForm(page);
+
+ let resultText = await page.locator('#result-container').textContent();
+ let res = JSON.parse(resultText || '');
+ expect('email' in res).toEqual(false);
+
+ await page.locator('input[name="/properties/email"]').clear();
+ await page
+ .locator('input[name="/properties/email"]')
+ .fill('test@example.com');
+ await submitForm(page);
+
+ resultText = await page.locator('#result-container').textContent();
+ res = JSON.parse(resultText || '');
+ expect(res['email']).toEqual('test@example.com');
+});
diff --git a/vue-json-form/tests/e2e/showcase.spec.ts b/vue-json-form/tests/e2e/showcase.spec.ts
new file mode 100644
index 00000000..4e674bcf
--- /dev/null
+++ b/vue-json-form/tests/e2e/showcase.spec.ts
@@ -0,0 +1,407 @@
+import { test, expect } from '@playwright/test';
+
+test.describe('Structure', () => {
+ async function checkRadios(page, containerID: string, values: string[]) {
+ const container = page.locator(containerID);
+ await expect(container.locator('> *')).toHaveCount(values.length);
+
+ for (let index = 0; index < values.length; index++) {
+ const radio = container
+ .locator('> *')
+ .nth(index)
+ .locator('input')
+ .first();
+ await expect(radio).toHaveValue(values[index]);
+ await expect(radio).toHaveAttribute('type', 'radio');
+ }
+ }
+
+ test.beforeEach(async ({ page }) => {
+ await page.goto('http://localhost:5173/showcase?nonav=true');
+ });
+
+ test('Switch', async ({ page }) => {
+ const checkbox = page.locator('#vjf_control_for__properties_done');
+ await expect(checkbox).toBeVisible();
+ await expect(checkbox).toHaveAttribute('type', 'checkbox');
+ });
+
+ test('Title', async ({ page }) => {
+ const id = 'select#vjf_control_for__properties_title';
+ const select = page.locator(id);
+ await expect(select).toBeVisible();
+ await expect(select.locator('option')).toHaveCount(4);
+ await expect(select.locator('option').nth(0)).toHaveAttribute(
+ 'value',
+ 'Mrs.'
+ );
+ await expect(select.locator('option').nth(1)).toHaveAttribute(
+ 'value',
+ 'Mr.'
+ );
+ await expect(select.locator('option').nth(2)).toHaveAttribute(
+ 'value',
+ 'Ms.'
+ );
+ await expect(select.locator('option').nth(3)).toHaveAttribute(
+ 'value',
+ 'Dr.'
+ );
+ });
+
+ test('Fanciness', async ({ page }) => {
+ const id = 'div#vjf_control_for__properties_fanciness';
+ await expect(page.locator(id)).toBeVisible();
+ await checkRadios(page, id, [
+ 'fancy',
+ 'fancier',
+ 'fanciest',
+ 'unicorn',
+ ]);
+ });
+
+ test('Fileupload', async ({ page }) => {
+ const id = 'input#vjf_control_for__properties_fileupload';
+ await expect(page.locator(id)).toBeVisible();
+ await expect(page.locator(id)).toHaveAttribute('type', 'file');
+ });
+
+ test('Group selector', async ({ page }) => {
+ const id = '#vjf_control_for__properties_group_selector';
+ await expect(page.locator(id)).toBeVisible();
+ const labels = page.locator(`${id} > label`);
+ await expect(labels).toHaveCount(2);
+ await expect(labels.first()).toBeVisible();
+ await expect(labels.last()).toBeVisible();
+ });
+
+ test.describe('Group', () => {
+ test('dueDate', async ({ page }) => {
+ const id = 'input#vjf_control_for__properties_due_date';
+ await expect(page.locator(id)).toBeVisible();
+ await expect(page.locator(id)).toHaveAttribute(
+ 'type',
+ 'datetime-local'
+ );
+ });
+
+ test('Rating', async ({ page }) => {
+ const id = 'input#vjf_control_for__properties_rating';
+ const rating = page.locator(id);
+ await expect(rating).toBeVisible();
+ await expect(rating).toHaveAttribute('type', 'range');
+ await expect(rating).toHaveAttribute('min', '0');
+ await expect(rating).toHaveAttribute('max', '5');
+ await expect(rating).toHaveAttribute('step', '1');
+ await expect(rating).toHaveValue('3');
+ });
+
+ test('Description', async ({ page }) => {
+ const id = 'textarea#vjf_control_for__properties_description';
+ const description = page.locator(id);
+ await expect(description).toBeVisible();
+ await expect(description).toHaveValue(
+ 'This good text was set as default'
+ );
+ await expect(description).toHaveAttribute('rows', '2');
+ });
+
+ test('Teststring', async ({ page }) => {
+ const id = 'input#vjf_control_for__properties_teststring';
+ await expect(page.locator(id)).toBeVisible();
+ await expect(page.locator(id)).toHaveAttribute('type', 'text');
+ });
+
+ test('Weekdays', async ({ page }) => {
+ const id = 'div#vjf_control_for__properties_weekdays';
+ const container = page.locator(id);
+ await expect(container).toBeVisible();
+ await expect(container.locator('> *')).toHaveCount(7);
+
+ const weekdays = [
+ 'Monday',
+ 'Tuesday',
+ 'Wednesday',
+ 'Thursday',
+ 'Friday',
+ 'Saturday',
+ 'Sunday',
+ ];
+
+ for (let index = 0; index < weekdays.length; index++) {
+ const checkbox = container
+ .locator('> *')
+ .nth(index)
+ .locator('input')
+ .first();
+ await expect(checkbox).toHaveValue(weekdays[index]);
+ await expect(checkbox).toHaveAttribute('type', 'checkbox');
+ }
+ });
+
+ test('RecurrenceInterval', async ({ page }) => {
+ const id = 'input#vjf_control_for__properties_recurrence_interval';
+ const input = page.locator(id);
+ await expect(input).toBeVisible();
+ await expect(input).toHaveAttribute('type', 'number');
+ await expect(input).toHaveAttribute('step', '1');
+ const sibling = await input.locator(
+ 'xpath=following-sibling::*[1]'
+ );
+ await expect(sibling).toHaveText('Weeks');
+ });
+
+ test('TestArray', async ({ page }) => {
+ const id = 'div[name="/properties/testArray"]';
+ const container = page.locator(id);
+ await expect(container).toBeVisible();
+ await expect(container.locator('input')).toHaveCount(2);
+ await expect(container.locator('input').first()).toBeVisible();
+ await expect(container.locator('input').first()).toHaveAttribute(
+ 'placeholder',
+ 'This is a placeholder'
+ );
+ await expect(
+ container.locator('button[aria-label="Add Item"]')
+ ).toBeVisible();
+ });
+ });
+
+ test.describe('Object', () => {
+ test.beforeEach(async ({ page }) => {
+ await page
+ .locator('#vjf_control_for__properties_group_selector')
+ .locator('> *')
+ .nth(3)
+ .click();
+ });
+
+ test('name', async ({ page }) => {
+ const id =
+ 'input#vjf_control_for__properties_testObject_properties_petName';
+ await expect(page.locator(id)).toBeVisible();
+ await expect(page.locator(id)).toHaveAttribute('type', 'text');
+ });
+
+ test('age', async ({ page }) => {
+ const id =
+ 'input#vjf_control_for__properties_testObject_properties_age';
+ const age = page.locator(id);
+ await expect(age).toBeVisible();
+ await expect(age).toHaveAttribute('type', 'number');
+ await expect(age).toHaveAttribute('step', '1');
+ await expect(age).toHaveAttribute('min', '0');
+ await expect(age).toHaveAttribute('max', '100');
+ await expect(age).toHaveValue('10');
+ });
+
+ test('flauschig', async ({ page }) => {
+ const id =
+ 'input#vjf_control_for__properties_testObject_properties_flauschig';
+ await expect(page.locator(id)).toBeVisible();
+ await expect(page.locator(id)).toHaveAttribute('type', 'checkbox');
+ });
+ });
+
+ test('HTML text', async ({ page }) => {
+ const id = 'span.vjf_htmlRenderer > p';
+ await expect(page.locator(id)).toBeVisible();
+ expect(await page.locator(id).innerHTML()).toBe(
+ 'Ich bin ein HTML Text'
+ );
+ });
+
+ test('Form Buttons', async ({ page }) => {
+ await expect(
+ page.locator('button[type="submit"]:not([formnovalidate])')
+ ).toBeVisible();
+ await expect(
+ page.locator('button[type="submit"][formnovalidate]')
+ ).toBeVisible();
+ await expect(page.locator('button[type="reset"]')).toBeVisible();
+ });
+
+ test('Fancy Unicorn', async ({ page }) => {
+ await page
+ .locator('#vjf_control_for__properties_fanciness input')
+ .nth(3)
+ .check();
+ await page
+ .locator('input[type=range]#vjf_control_for__properties_rating')
+ .fill('4');
+
+ const id = 'span.vjf_htmlRenderer > h3';
+ await expect(page.locator(id)).toHaveText(
+ 'You are a very fancy unicorn my friend...'
+ );
+ await expect(page.locator(id)).toHaveAttribute(
+ 'style',
+ 'background-image:linear-gradient(to left, violet, indigo, blue, green, yellow, orange, red);-webkit-background-clip:text;color:transparent'
+ );
+ });
+});
+
+test.describe('Button functions', () => {
+ test.beforeEach(async ({ page }) => {
+ await page.goto('http://localhost:5173/showcase?nonav=true');
+ });
+
+ test('submit with missing fields', async ({ page }) => {
+ await page
+ .locator('#vjf_control_for__properties_name')
+ .fill('Test User');
+ await page
+ .locator('button[type="submit"]:not([formnovalidate])')
+ .click();
+
+ const resultText = await page
+ .locator('#result-container')
+ .textContent();
+ const json = JSON.parse(resultText || '');
+ expect(json).toEqual({});
+ });
+
+ test('submit with missing fields and novalidate', async ({ page }) => {
+ await page
+ .locator('#vjf_control_for__properties_name')
+ .fill('Test User');
+ await page.locator('button[type="submit"][formnovalidate]').click();
+
+ const resultText = await page
+ .locator('#result-container')
+ .textContent();
+ const json = JSON.parse(resultText || '');
+ expect(json['name']).toEqual('Test User');
+ });
+
+ test('reset form', async ({ page }) => {
+ await page
+ .locator('#vjf_control_for__properties_name')
+ .fill('Test User');
+ await page.locator('button[type="reset"]').click();
+ await expect(
+ page.locator('#vjf_control_for__properties_name')
+ ).toHaveValue('');
+ });
+
+ test('submit with data (group)', async ({ page }) => {
+ await page.locator('#vjf_control_for__properties_done').check();
+ await page
+ .locator('#vjf_control_for__properties_title')
+ .selectOption('Mr.');
+ await page
+ .locator('#vjf_control_for__properties_name')
+ .fill('Test User 2');
+ await page
+ .locator('#vjf_control_for__properties_fanciness input')
+ .nth(3)
+ .check();
+ await page
+ .locator('#vjf_control_for__properties_due_date')
+ .fill('2000-12-11T14:24');
+ await page.locator('#vjf_control_for__properties_description').click();
+ await page
+ .locator('#vjf_control_for__properties_teststring')
+ .fill('test');
+ await page
+ .locator('#vjf_control_for__properties_weekdays input')
+ .nth(0)
+ .check();
+ await page
+ .locator('#vjf_control_for__properties_weekdays input')
+ .nth(4)
+ .check();
+ await page
+ .locator('#vjf_control_for__properties_recurrence_interval')
+ .fill('4');
+ await page
+ .locator('#vjf_control_for__properties_testArray input')
+ .nth(0)
+ .fill('Hello');
+ await page
+ .locator('#vjf_control_for__properties_testArray input')
+ .nth(1)
+ .fill('World');
+ await page
+ .locator(
+ '#vjf_control_for__properties_testArray > .btn-outline-primary'
+ )
+ .click();
+ await page
+ .locator('#vjf_control_for__properties_testArray input')
+ .nth(2)
+ .fill('I am third!');
+ await page.locator('.btn-primary').click();
+
+ const resultText = await page
+ .locator('#result-container')
+ .textContent();
+ const json = JSON.parse(resultText || '');
+
+ expect(json['done']).toEqual(true);
+ expect(json['title']).toEqual('Mr.');
+ expect(json['name']).toEqual('Test User 2');
+ expect(json['fanciness']).toEqual('unicorn');
+ expect(json['due_date']).toEqual('2000-12-11T14:24');
+ expect(json['description']).toEqual(
+ 'This good text was set as default'
+ );
+ expect(json['teststring']).toEqual('test');
+ expect(json['weekdays']).toEqual(['Monday', 'Friday']);
+ expect(json['recurrence_interval']).toEqual(4);
+ expect(json['testArray']).toEqual(['Hello', 'World', 'I am third!']);
+ });
+
+ test('submit with data (object)', async ({ page }) => {
+ await page.locator('#vjf_control_for__properties_done').check();
+ await page
+ .locator('#vjf_control_for__properties_title')
+ .selectOption('Mr.');
+ await page
+ .locator('#vjf_control_for__properties_name')
+ .fill('Test User 2');
+ await page
+ .locator('#vjf_control_for__properties_fanciness input')
+ .nth(3)
+ .check();
+
+ await page
+ .locator('#vjf_control_for__properties_group_selector label')
+ .nth(1)
+ .click();
+
+ await page
+ .locator(
+ '#vjf_control_for__properties_testObject_properties_petName'
+ )
+ .fill('Richie');
+ await page
+ .locator('#vjf_control_for__properties_testObject_properties_age')
+ .clear();
+ await page
+ .locator('#vjf_control_for__properties_testObject_properties_age')
+ .fill('15');
+ await page
+ .locator(
+ '#vjf_control_for__properties_testObject_properties_flauschig'
+ )
+ .check();
+
+ await page.locator('.btn-primary').click();
+
+ const resultText = await page
+ .locator('#result-container')
+ .textContent();
+ const json = JSON.parse(resultText || '');
+
+ expect(json['done']).toEqual(true);
+ expect(json['title']).toEqual('Mr.');
+ expect(json['name']).toEqual('Test User 2');
+ expect(json['fanciness']).toEqual('unicorn');
+ expect(json['testObject']).toEqual({
+ petName: 'Richie',
+ age: 15,
+ flauschig: true,
+ });
+ });
+});
diff --git a/vue-json-form/tsconfig.vitest.json b/vue-json-form/tsconfig.vitest.json
index 403e74e4..b5db040d 100644
--- a/vue-json-form/tsconfig.vitest.json
+++ b/vue-json-form/tsconfig.vitest.json
@@ -3,6 +3,6 @@
"exclude": [],
"compilerOptions": {
"composite": true,
- "types": ["node", "jsdom", "cypress", "cypress-axe"]
+ "types": ["node", "jsdom"]
}
}
diff --git a/vue-json-form/vitest.config.ts b/vue-json-form/vitest.config.ts
index 10067d57..788f9115 100644
--- a/vue-json-form/vitest.config.ts
+++ b/vue-json-form/vitest.config.ts
@@ -1,14 +1,14 @@
-import { fileURLToPath } from 'node:url'
-import { mergeConfig, defineConfig, configDefaults } from 'vitest/config'
-import viteConfig from './vite.config'
+import { fileURLToPath } from 'node:url';
+import { mergeConfig, defineConfig, configDefaults } from 'vitest/config';
+import viteConfig from './vite.config';
export default mergeConfig(
- viteConfig,
- defineConfig({
- test: {
- environment: 'jsdom',
- exclude: [...configDefaults.exclude, 'e2e/*'],
- root: fileURLToPath(new URL('./', import.meta.url))
- }
- })
-)
+ viteConfig,
+ defineConfig({
+ test: {
+ environment: 'jsdom',
+ exclude: [...configDefaults.exclude, '**/e2e/*'],
+ root: fileURLToPath(new URL('./', import.meta.url)),
+ },
+ })
+);
diff --git a/yarn.lock b/yarn.lock
index 0108d2ca..cbb71677 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -113,6 +113,17 @@ __metadata:
languageName: node
linkType: hard
+"@axe-core/playwright@npm:^4.11.0":
+ version: 4.11.0
+ resolution: "@axe-core/playwright@npm:4.11.0"
+ dependencies:
+ axe-core: "npm:~4.11.0"
+ peerDependencies:
+ playwright-core: ">= 1.0.0"
+ checksum: 10/54de38082deeb1d9022b47f1412ebba7c9b93aa09a0dbc5b1609d35b4f5d05f43840968aeeea913b340b4d89ab1ec0c8bb18aeb1f4c609751ae95e7b8ae2b724
+ languageName: node
+ linkType: hard
+
"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.21.4, @babel/code-frame@npm:^7.26.2":
version: 7.27.1
resolution: "@babel/code-frame@npm:7.27.1"
@@ -266,13 +277,6 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-plugin-utils@npm:^7.27.1":
- version: 7.27.1
- resolution: "@babel/helper-plugin-utils@npm:7.27.1"
- checksum: 10/96136c2428888e620e2ec493c25888f9ceb4a21099dcf3dd4508ea64b58cdedbd5a9fb6c7b352546de84d6c24edafe482318646932a22c449ebd16d16c22d864
- languageName: node
- linkType: hard
-
"@babel/helper-replace-supers@npm:^7.25.9":
version: 7.25.9
resolution: "@babel/helper-replace-supers@npm:7.25.9"
@@ -359,25 +363,25 @@ __metadata:
languageName: node
linkType: hard
-"@babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.4":
- version: 7.28.5
- resolution: "@babel/parser@npm:7.28.5"
+"@babel/parser@npm:^7.27.5":
+ version: 7.28.0
+ resolution: "@babel/parser@npm:7.28.0"
dependencies:
- "@babel/types": "npm:^7.28.5"
+ "@babel/types": "npm:^7.28.0"
bin:
parser: ./bin/babel-parser.js
- checksum: 10/8d9bfb437af6c97a7f6351840b9ac06b4529ba79d6d3def24d6c2996ab38ff7f1f9d301e868ca84a93a3050fadb3d09dbc5105b24634cd281671ac11eebe8df7
+ checksum: 10/2c14a0d2600bae9ab81924df0a85bbd34e427caa099c260743f7c6c12b2042e743e776043a0d1a2573229ae648f7e66a80cfb26fc27e2a9eb59b55932d44c817
languageName: node
linkType: hard
-"@babel/parser@npm:^7.27.5":
- version: 7.28.0
- resolution: "@babel/parser@npm:7.28.0"
+"@babel/parser@npm:^7.28.4":
+ version: 7.28.5
+ resolution: "@babel/parser@npm:7.28.5"
dependencies:
- "@babel/types": "npm:^7.28.0"
+ "@babel/types": "npm:^7.28.5"
bin:
parser: ./bin/babel-parser.js
- checksum: 10/2c14a0d2600bae9ab81924df0a85bbd34e427caa099c260743f7c6c12b2042e743e776043a0d1a2573229ae648f7e66a80cfb26fc27e2a9eb59b55932d44c817
+ checksum: 10/8d9bfb437af6c97a7f6351840b9ac06b4529ba79d6d3def24d6c2996ab38ff7f1f9d301e868ca84a93a3050fadb3d09dbc5105b24634cd281671ac11eebe8df7
languageName: node
linkType: hard
@@ -438,17 +442,6 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-syntax-jsx@npm:^7.27.1":
- version: 7.27.1
- resolution: "@babel/plugin-syntax-jsx@npm:7.27.1"
- dependencies:
- "@babel/helper-plugin-utils": "npm:^7.27.1"
- peerDependencies:
- "@babel/core": ^7.0.0-0
- checksum: 10/c6d1324cff286a369aa95d99b8abd21dd07821b5d3affd5fe7d6058c84cff9190743287826463ee57a7beecd10fa1e4bc99061df532ee14e188c1c8937b13e3a
- languageName: node
- linkType: hard
-
"@babel/plugin-syntax-typescript@npm:^7.25.9":
version: 7.25.9
resolution: "@babel/plugin-syntax-typescript@npm:7.25.9"
@@ -800,55 +793,6 @@ __metadata:
languageName: node
linkType: hard
-"@cypress/grep@npm:^5.0.0":
- version: 5.0.0
- resolution: "@cypress/grep@npm:5.0.0"
- dependencies:
- debug: "npm:^4.3.4"
- find-test-names: "npm:^1.28.18"
- globby: "npm:^11.0.4"
- peerDependencies:
- cypress: ">=10"
- checksum: 10/a7ebd1936dbbe7c832559dd13bc381a1cec73f044d01074577cc8f5aaa07a2585d17021b184536dcc528816e865d222685c3829811f7d9f5a4c9beac24b51a90
- languageName: node
- linkType: hard
-
-"@cypress/request@npm:^3.0.9":
- version: 3.0.9
- resolution: "@cypress/request@npm:3.0.9"
- dependencies:
- aws-sign2: "npm:~0.7.0"
- aws4: "npm:^1.8.0"
- caseless: "npm:~0.12.0"
- combined-stream: "npm:~1.0.6"
- extend: "npm:~3.0.2"
- forever-agent: "npm:~0.6.1"
- form-data: "npm:~4.0.4"
- http-signature: "npm:~1.4.0"
- is-typedarray: "npm:~1.0.0"
- isstream: "npm:~0.1.2"
- json-stringify-safe: "npm:~5.0.1"
- mime-types: "npm:~2.1.19"
- performance-now: "npm:^2.1.0"
- qs: "npm:6.14.0"
- safe-buffer: "npm:^5.1.2"
- tough-cookie: "npm:^5.0.0"
- tunnel-agent: "npm:^0.6.0"
- uuid: "npm:^8.3.2"
- checksum: 10/735bd15b9bfb2ac950f4ca715c4ea944c3686fab5f48649c6f6ce62e5d2186df51a96c22fb6e4839dc5d16033ceeece03ca9fa621c9232fb96ad567846a4158c
- languageName: node
- linkType: hard
-
-"@cypress/xvfb@npm:^1.2.4":
- version: 1.2.4
- resolution: "@cypress/xvfb@npm:1.2.4"
- dependencies:
- debug: "npm:^3.1.0"
- lodash.once: "npm:^4.1.1"
- checksum: 10/cb995b069f8c4f1e7857049bda0bd73a58e0048ccaf276ef0e66d1e1c03ba6fa099b5d765ad12ea37a7e5b7685f7413a2b9a99b27891407565b915f4a2f919a7
- languageName: node
- linkType: hard
-
"@educorvi/rita@npm:^5.4.4":
version: 5.4.4
resolution: "@educorvi/rita@npm:5.4.4"
@@ -948,10 +892,11 @@ __metadata:
version: 0.0.0-use.local
resolution: "@educorvi/vue-json-form@workspace:vue-json-form"
dependencies:
- "@cypress/grep": "npm:^5.0.0"
+ "@axe-core/playwright": "npm:^4.11.0"
"@educorvi/rita": "npm:^5.5.0"
"@educorvi/vue-json-form-ajv-validator": "workspace:^"
"@educorvi/vue-json-form-schemas": "workspace:*"
+ "@playwright/test": "npm:^1.57.0"
"@rushstack/eslint-patch": "npm:^1.14.1"
"@semantic-release/exec": "npm:^7.1.0"
"@tsconfig/node18": "npm:^18.2.4"
@@ -971,8 +916,6 @@ __metadata:
axe-core: "npm:^4.11.0"
bootstrap: "npm:^5.3.8"
bootstrap-vue-next: "npm:0.40.7"
- cypress: "npm:^15.5.0"
- cypress-axe: "npm:^1.7.0"
deepmerge: "npm:^4.3.1"
eslint: "npm:^9.38.0"
eslint-config-prettier: "npm:^10.1.8"
@@ -983,6 +926,7 @@ __metadata:
lightningcss: "npm:^1.30.2"
npm-run-all: "npm:^4.1.5"
pinia: "npm:^3.0.3"
+ playwright: "npm:^1.57.0"
prettier: "npm:^3.6.2"
sanitize-html: "npm:^2.17.0"
sass-embedded: "npm:^1.93.2"
@@ -1508,52 +1452,6 @@ __metadata:
languageName: node
linkType: hard
-"@hapi/address@npm:^5.1.1":
- version: 5.1.1
- resolution: "@hapi/address@npm:5.1.1"
- dependencies:
- "@hapi/hoek": "npm:^11.0.2"
- checksum: 10/9462b22f96f1081a07b3bb07f046c5fdfa1940805b3433476f56c0df3b8eded026f62a2e8395534a14a48f689757f9eb8b44c0c4360d96a12ad34ff21989a534
- languageName: node
- linkType: hard
-
-"@hapi/formula@npm:^3.0.2":
- version: 3.0.2
- resolution: "@hapi/formula@npm:3.0.2"
- checksum: 10/c6d4fdcd19fdeb02f0995174497b69ca1f2d534d9f55d512b404ce78a3ce4c53618d4c339fb708c812de4ad1db49122cef960eb1d2cc17e284aa9a7ce4283e2b
- languageName: node
- linkType: hard
-
-"@hapi/hoek@npm:^11.0.2, @hapi/hoek@npm:^11.0.7":
- version: 11.0.7
- resolution: "@hapi/hoek@npm:11.0.7"
- checksum: 10/d0cbacf2edcedac1f06dd1d731c1f8c83ef32f2432630c4b1ebe119729cbf79e3da69fa3e5991f19d80e344f5d246b03b7e96998a032940e18bfda7ba2a56f0e
- languageName: node
- linkType: hard
-
-"@hapi/pinpoint@npm:^2.0.1":
- version: 2.0.1
- resolution: "@hapi/pinpoint@npm:2.0.1"
- checksum: 10/28e72305c13de10893be33273cd33c7d7b1c89cfcf707de5a7e214b08f8e3c440adf7df0ff1c9ab4d86744eefdab3ae549456b641f66a2af47ed862f764d6c49
- languageName: node
- linkType: hard
-
-"@hapi/tlds@npm:^1.1.1":
- version: 1.1.4
- resolution: "@hapi/tlds@npm:1.1.4"
- checksum: 10/274550c5c9700711dfeb5f57df9b432977549cb04a86eaafa509d13344506fba098461adbdf93309d560f766dcd2a1a65d630519ebd34b37ca713a4265a7aa5b
- languageName: node
- linkType: hard
-
-"@hapi/topo@npm:^6.0.2":
- version: 6.0.2
- resolution: "@hapi/topo@npm:6.0.2"
- dependencies:
- "@hapi/hoek": "npm:^11.0.2"
- checksum: 10/ef959d3796638e11e5f7a9f2a64295ded7c638d6a21fa37bf1265b14c3a6636da593c9976138826c5b8972830a706d18a82b489e3d902e77026f7f0bec908704
- languageName: node
- linkType: hard
-
"@humanfs/core@npm:^0.19.1":
version: 0.19.1
resolution: "@humanfs/core@npm:0.19.1"
@@ -2349,6 +2247,17 @@ __metadata:
languageName: node
linkType: hard
+"@playwright/test@npm:^1.57.0":
+ version: 1.57.0
+ resolution: "@playwright/test@npm:1.57.0"
+ dependencies:
+ playwright: "npm:1.57.0"
+ bin:
+ playwright: cli.js
+ checksum: 10/07f5ba4841b2db1dea70d821004c5156b692488e13523c096ce3487d30f95f34ccf30ba6467ece60c86faac27ae382213b7eacab48a695550981b2e811e5e579
+ languageName: node
+ linkType: hard
+
"@pnpm/config.env-replace@npm:^1.1.0":
version: 1.1.0
resolution: "@pnpm/config.env-replace@npm:1.1.0"
@@ -3166,27 +3075,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/sinonjs__fake-timers@npm:8.1.1":
- version: 8.1.1
- resolution: "@types/sinonjs__fake-timers@npm:8.1.1"
- checksum: 10/567e01159b07eb19a56aa9a619bda963a3e2c1261b197b83fc664867228ce679e189450f0ae38483a08857155f94d9ae5d88e72c0f44f269103f63c2946a73ed
- languageName: node
- linkType: hard
-
-"@types/sizzle@npm:^2.3.2":
- version: 2.3.3
- resolution: "@types/sizzle@npm:2.3.3"
- checksum: 10/586a9fb1f6ff3e325e0f2cc1596a460615f0bc8a28f6e276ac9b509401039dd242fa8b34496d3a30c52f5b495873922d09a9e76c50c2ab2bcc70ba3fb9c4e160
- languageName: node
- linkType: hard
-
-"@types/tmp@npm:^0.2.3":
- version: 0.2.6
- resolution: "@types/tmp@npm:0.2.6"
- checksum: 10/e14a094c10569d3b56805552b21417860ef21060d969000d5d5b53604a78c2bdac216f064b03797d4b07a081e0141dd3ab22bc36923e75300eb1c023f7252cc7
- languageName: node
- linkType: hard
-
"@types/tough-cookie@npm:*":
version: 4.0.2
resolution: "@types/tough-cookie@npm:4.0.2"
@@ -4225,7 +4113,7 @@ __metadata:
languageName: node
linkType: hard
-"acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.2.0":
+"acorn-walk@npm:^8.1.1":
version: 8.3.4
resolution: "acorn-walk@npm:8.3.4"
dependencies:
@@ -4401,22 +4289,6 @@ __metadata:
languageName: node
linkType: hard
-"ansi-colors@npm:^4.1.1":
- version: 4.1.3
- resolution: "ansi-colors@npm:4.1.3"
- checksum: 10/43d6e2fc7b1c6e4dc373de708ee76311ec2e0433e7e8bd3194e7ff123ea6a747428fc61afdcf5969da5be3a5f0fd054602bec56fc0ebe249ce2fcde6e649e3c2
- languageName: node
- linkType: hard
-
-"ansi-escapes@npm:^4.3.0":
- version: 4.3.2
- resolution: "ansi-escapes@npm:4.3.2"
- dependencies:
- type-fest: "npm:^0.21.3"
- checksum: 10/8661034456193ffeda0c15c8c564a9636b0c04094b7f78bd01517929c17c504090a60f7a75f949f5af91289c264d3e1001d91492c1bd58efc8e100500ce04de2
- languageName: node
- linkType: hard
-
"ansi-escapes@npm:^7.0.0":
version: 7.0.0
resolution: "ansi-escapes@npm:7.0.0"
@@ -4510,13 +4382,6 @@ __metadata:
languageName: node
linkType: hard
-"arch@npm:^2.2.0":
- version: 2.2.0
- resolution: "arch@npm:2.2.0"
- checksum: 10/e35dbc6d362297000ab90930069576ba165fe63cd52383efcce14bd66c1b16a91ce849e1fd239964ed029d5e0bdfc32f68e9c7331b7df6c84ddebebfdbf242f7
- languageName: node
- linkType: hard
-
"archy@npm:~1.0.0":
version: 1.0.0
resolution: "archy@npm:1.0.0"
@@ -4541,13 +4406,6 @@ __metadata:
languageName: node
linkType: hard
-"arg@npm:^5.0.2":
- version: 5.0.2
- resolution: "arg@npm:5.0.2"
- checksum: 10/92fe7de222054a060fd2329e92e867410b3ea260328147ee3fb7855f78efae005f4087e698d4e688a856893c56bb09951588c40f2c901cf6996cd8cd7bcfef2c
- languageName: node
- linkType: hard
-
"argparse@npm:^2.0.1":
version: 2.0.1
resolution: "argparse@npm:2.0.1"
@@ -4609,22 +4467,6 @@ __metadata:
languageName: node
linkType: hard
-"asn1@npm:~0.2.3":
- version: 0.2.6
- resolution: "asn1@npm:0.2.6"
- dependencies:
- safer-buffer: "npm:~2.1.0"
- checksum: 10/cf629291fee6c1a6f530549939433ebf32200d7849f38b810ff26ee74235e845c0c12b2ed0f1607ac17383d19b219b69cefa009b920dab57924c5c544e495078
- languageName: node
- linkType: hard
-
-"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0":
- version: 1.0.0
- resolution: "assert-plus@npm:1.0.0"
- checksum: 10/f4f991ae2df849cc678b1afba52d512a7cbf0d09613ba111e72255409ff9158550c775162a47b12d015d1b82b3c273e8e25df0e4783d3ddb008a293486d00a07
- languageName: node
- linkType: hard
-
"ast-kit@npm:^2.1.2":
version: 2.1.3
resolution: "ast-kit@npm:2.1.3"
@@ -4644,13 +4486,6 @@ __metadata:
languageName: node
linkType: hard
-"astral-regex@npm:^2.0.0":
- version: 2.0.0
- resolution: "astral-regex@npm:2.0.0"
- checksum: 10/876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766
- languageName: node
- linkType: hard
-
"async-function@npm:^1.0.0":
version: 1.0.0
resolution: "async-function@npm:1.0.0"
@@ -4672,13 +4507,6 @@ __metadata:
languageName: node
linkType: hard
-"at-least-node@npm:^1.0.0":
- version: 1.0.0
- resolution: "at-least-node@npm:1.0.0"
- checksum: 10/463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e
- languageName: node
- linkType: hard
-
"available-typed-arrays@npm:^1.0.5":
version: 1.0.5
resolution: "available-typed-arrays@npm:1.0.5"
@@ -4686,28 +4514,14 @@ __metadata:
languageName: node
linkType: hard
-"aws-sign2@npm:~0.7.0":
- version: 0.7.0
- resolution: "aws-sign2@npm:0.7.0"
- checksum: 10/2ac497d739f71be3264cf096a33ab256a1fea7fe80b87dc51ec29374505bd5a661279ef1c22989d68528ea61ed634021ca63b31cf1d3c2a3682ffc106f7d0e96
- languageName: node
- linkType: hard
-
-"aws4@npm:^1.8.0":
- version: 1.12.0
- resolution: "aws4@npm:1.12.0"
- checksum: 10/2b8455fe1eee87f0e7d5f32e81e7fec74dce060c72d03f528c8c631fa74209cef53aab6fede182ea17d0c9520cb1e5e3023c5fedb4f1139ae9f067fc720869a5
- languageName: node
- linkType: hard
-
-"axe-core@npm:^4.11.0":
+"axe-core@npm:^4.11.0, axe-core@npm:~4.11.0":
version: 4.11.0
resolution: "axe-core@npm:4.11.0"
checksum: 10/18254ee95bc328aec9a909b22e4b22e8ff14a21363fdbd1a5227267e66bf1d2fc1425c186e9001759aab5827cf4ee9dc30f7ea57e8200cbf7a1cd555ed21a908
languageName: node
linkType: hard
-"axios@npm:^1.12.1, axios@npm:^1.13.1":
+"axios@npm:^1.13.1":
version: 1.13.1
resolution: "axios@npm:1.13.1"
dependencies:
@@ -4788,13 +4602,6 @@ __metadata:
languageName: node
linkType: hard
-"base64-js@npm:^1.3.1":
- version: 1.5.1
- resolution: "base64-js@npm:1.5.1"
- checksum: 10/669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005
- languageName: node
- linkType: hard
-
"basic-ftp@npm:^5.0.2":
version: 5.0.5
resolution: "basic-ftp@npm:5.0.5"
@@ -4802,15 +4609,6 @@ __metadata:
languageName: node
linkType: hard
-"bcrypt-pbkdf@npm:^1.0.0":
- version: 1.0.2
- resolution: "bcrypt-pbkdf@npm:1.0.2"
- dependencies:
- tweetnacl: "npm:^0.14.3"
- checksum: 10/13a4cde058250dbf1fa77a4f1b9a07d32ae2e3b9e28e88a0c7a1827835bc3482f3e478c4a0cfd4da6ff0c46dae07da1061123a995372b32cc563d9975f975404
- languageName: node
- linkType: hard
-
"before-after-hook@npm:^4.0.0":
version: 4.0.0
resolution: "before-after-hook@npm:4.0.0"
@@ -4868,20 +4666,6 @@ __metadata:
languageName: node
linkType: hard
-"blob-util@npm:^2.0.2":
- version: 2.0.2
- resolution: "blob-util@npm:2.0.2"
- checksum: 10/b2c5a20c677f2a6c3821cf13c5522d64af96e666bc40cce6b43f87d16e89a55e2eab2f6264ec3f36d7f810eba848aa7e2bc611e47c14eb6395136c0b0a8b29ea
- languageName: node
- linkType: hard
-
-"bluebird@npm:3.7.2, bluebird@npm:^3.7.2":
- version: 3.7.2
- resolution: "bluebird@npm:3.7.2"
- checksum: 10/007c7bad22c5d799c8dd49c85b47d012a1fe3045be57447721e6afbd1d5be43237af1db62e26cb9b0d9ba812d2e4ca3bac82f6d7e016b6b88de06ee25ceb96e7
- languageName: node
- linkType: hard
-
"boolbase@npm:^1.0.0":
version: 1.0.0
resolution: "boolbase@npm:1.0.0"
@@ -5010,16 +4794,6 @@ __metadata:
languageName: node
linkType: hard
-"buffer@npm:^5.7.1":
- version: 5.7.1
- resolution: "buffer@npm:5.7.1"
- dependencies:
- base64-js: "npm:^1.3.1"
- ieee754: "npm:^1.1.13"
- checksum: 10/997434d3c6e3b39e0be479a80288875f71cd1c07d75a3855e6f08ef848a3c966023f79534e22e415ff3a5112708ce06127277ab20e527146d55c84566405c7c6
- languageName: node
- linkType: hard
-
"bundle-name@npm:^4.1.0":
version: 4.1.0
resolution: "bundle-name@npm:4.1.0"
@@ -5095,13 +4869,6 @@ __metadata:
languageName: node
linkType: hard
-"cachedir@npm:^2.3.0":
- version: 2.4.0
- resolution: "cachedir@npm:2.4.0"
- checksum: 10/43198514eaa61f65b5535ed29ad651f22836fba3868ed58a6a87731f05462f317d39098fa3ac778801c25455483c9b7f32a2fcad1f690a978947431f12a0f4d0
- languageName: node
- linkType: hard
-
"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2":
version: 1.0.2
resolution: "call-bind-apply-helpers@npm:1.0.2"
@@ -5122,16 +4889,6 @@ __metadata:
languageName: node
linkType: hard
-"call-bound@npm:^1.0.2":
- version: 1.0.4
- resolution: "call-bound@npm:1.0.4"
- dependencies:
- call-bind-apply-helpers: "npm:^1.0.2"
- get-intrinsic: "npm:^1.3.0"
- checksum: 10/ef2b96e126ec0e58a7ff694db43f4d0d44f80e641370c21549ed911fecbdbc2df3ebc9bddad918d6bbdefeafb60bb3337902006d5176d72bcd2da74820991af7
- languageName: node
- linkType: hard
-
"callsites@npm:^3.0.0":
version: 3.1.0
resolution: "callsites@npm:3.1.0"
@@ -5146,13 +4903,6 @@ __metadata:
languageName: node
linkType: hard
-"caseless@npm:~0.12.0":
- version: 0.12.0
- resolution: "caseless@npm:0.12.0"
- checksum: 10/ea1efdf430975fdbac3505cdd21007f7ac5aa29b6d4d1c091f965853cd1bf87e4b08ea07b31a6d688b038872b7cdf0589d9262d59c699d199585daad052aeb20
- languageName: node
- linkType: hard
-
"chai@npm:^6.0.1":
version: 6.2.0
resolution: "chai@npm:6.2.0"
@@ -5171,7 +4921,7 @@ __metadata:
languageName: node
linkType: hard
-"chalk@npm:^4.0.0, chalk@npm:^4.1.0":
+"chalk@npm:^4.0.0":
version: 4.1.2
resolution: "chalk@npm:4.1.2"
dependencies:
@@ -5202,13 +4952,6 @@ __metadata:
languageName: node
linkType: hard
-"check-more-types@npm:2.24.0":
- version: 2.24.0
- resolution: "check-more-types@npm:2.24.0"
- checksum: 10/67c5288443bd73a81638e1185f8c5410d0edf6458c086149ef1cda95c07535b5dd5c11c426dc3ee8f0de0f3244aa2d4f2ba1937aaa8a94995589cdcce0bbccb9
- languageName: node
- linkType: hard
-
"chokidar@npm:^3.6.0":
version: 3.6.0
resolution: "chokidar@npm:3.6.0"
@@ -5270,7 +5013,7 @@ __metadata:
languageName: node
linkType: hard
-"ci-info@npm:^4.0.0, ci-info@npm:^4.1.0":
+"ci-info@npm:^4.0.0":
version: 4.2.0
resolution: "ci-info@npm:4.2.0"
checksum: 10/928d8457f3476ffc4a66dec93b9cdf1944d5e60dba69fbd6a0fc95b652386f6ef64857f6e32372533210ef6d8954634af2c7693d7c07778ee015f3629a5e0dd9
@@ -5319,15 +5062,6 @@ __metadata:
languageName: node
linkType: hard
-"cli-cursor@npm:^3.1.0":
- version: 3.1.0
- resolution: "cli-cursor@npm:3.1.0"
- dependencies:
- restore-cursor: "npm:^3.1.0"
- checksum: 10/2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29
- languageName: node
- linkType: hard
-
"cli-highlight@npm:^2.1.11":
version: 2.1.11
resolution: "cli-highlight@npm:2.1.11"
@@ -5344,19 +5078,6 @@ __metadata:
languageName: node
linkType: hard
-"cli-table3@npm:0.6.1":
- version: 0.6.1
- resolution: "cli-table3@npm:0.6.1"
- dependencies:
- colors: "npm:1.4.0"
- string-width: "npm:^4.2.0"
- dependenciesMeta:
- colors:
- optional: true
- checksum: 10/eb11ef1264d6e6480eef4d1306f7c9c25800751a40d3eb205f3910ff6e49d067b8b4208e2a17abe57742a57e3c19764a44a68dbf2761bc1f707fdb7b4d658cd9
- languageName: node
- linkType: hard
-
"cli-table3@npm:^0.6.5":
version: 0.6.5
resolution: "cli-table3@npm:0.6.5"
@@ -5370,16 +5091,6 @@ __metadata:
languageName: node
linkType: hard
-"cli-truncate@npm:^2.1.0":
- version: 2.1.0
- resolution: "cli-truncate@npm:2.1.0"
- dependencies:
- slice-ansi: "npm:^3.0.0"
- string-width: "npm:^4.2.0"
- checksum: 10/976f1887de067a8cd6ec830a7a8508336aebe6cec79b521d98ed13f67ef073b637f7305675b6247dd22f9e9cf045ec55fe746c7bdb288fbe8db0dfdc9fd52e55
- languageName: node
- linkType: hard
-
"cliui@npm:^7.0.2":
version: 7.0.4
resolution: "cliui@npm:7.0.4"
@@ -5468,13 +5179,6 @@ __metadata:
languageName: node
linkType: hard
-"colorette@npm:^2.0.16":
- version: 2.0.20
- resolution: "colorette@npm:2.0.20"
- checksum: 10/0b8de48bfa5d10afc160b8eaa2b9938f34a892530b2f7d7897e0458d9535a066e3998b49da9d21161c78225b272df19ae3a64d6df28b4c9734c0e55bbd02406f
- languageName: node
- linkType: hard
-
"colorjs.io@npm:^0.5.0":
version: 0.5.2
resolution: "colorjs.io@npm:0.5.2"
@@ -5482,14 +5186,7 @@ __metadata:
languageName: node
linkType: hard
-"colors@npm:1.4.0":
- version: 1.4.0
- resolution: "colors@npm:1.4.0"
- checksum: 10/90b2d5465159813a3983ea72ca8cff75f784824ad70f2cc2b32c233e95bcfbcda101ebc6d6766bc50f57263792629bfb4f1f8a4dfbd1d240f229fc7f69b785fc
- languageName: node
- linkType: hard
-
-"combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6":
+"combined-stream@npm:^1.0.8":
version: 1.0.8
resolution: "combined-stream@npm:1.0.8"
dependencies:
@@ -5519,13 +5216,6 @@ __metadata:
languageName: node
linkType: hard
-"commander@npm:^6.2.1":
- version: 6.2.1
- resolution: "commander@npm:6.2.1"
- checksum: 10/25b88c2efd0380c84f7844b39cf18510da7bfc5013692d68cdc65f764a1c34e6c8a36ea6d72b6620e3710a930cf8fab2695bdec2bf7107a0f4fa30a3ef3b7d0e
- languageName: node
- linkType: hard
-
"common-ancestor-path@npm:^1.0.1":
version: 1.0.1
resolution: "common-ancestor-path@npm:1.0.1"
@@ -5533,13 +5223,6 @@ __metadata:
languageName: node
linkType: hard
-"common-tags@npm:^1.8.0":
- version: 1.8.2
- resolution: "common-tags@npm:1.8.2"
- checksum: 10/c665d0f463ee79dda801471ad8da6cb33ff7332ba45609916a508ad3d77ba07ca9deeb452e83f81f24c2b081e2c1315347f23d239210e63d1c5e1a0c7c019fe2
- languageName: node
- linkType: hard
-
"compare-func@npm:^2.0.0":
version: 2.0.0
resolution: "compare-func@npm:2.0.0"
@@ -5691,13 +5374,6 @@ __metadata:
languageName: node
linkType: hard
-"core-util-is@npm:1.0.2":
- version: 1.0.2
- resolution: "core-util-is@npm:1.0.2"
- checksum: 10/d0f7587346b44a1fe6c269267e037dd34b4787191e473c3e685f507229d88561c40eb18872fabfff02977301815d474300b7bfbd15396c13c5377393f7e87ec3
- languageName: node
- linkType: hard
-
"core-util-is@npm:~1.0.0":
version: 1.0.3
resolution: "core-util-is@npm:1.0.3"
@@ -5847,69 +5523,6 @@ __metadata:
languageName: node
linkType: hard
-"cypress-axe@npm:^1.7.0":
- version: 1.7.0
- resolution: "cypress-axe@npm:1.7.0"
- peerDependencies:
- axe-core: ^3 || ^4
- cypress: ^10 || ^11 || ^12 || ^13 || ^14 || ^15
- checksum: 10/f37620c4c17b315d8ec34e1a51d798b91739ecbd868ac7ee1dc1f47bc7e7412d0e0ad942e13e2e25d397f2d4aa487ce485a86d4aa66fc022bf7d1239576f42a1
- languageName: node
- linkType: hard
-
-"cypress@npm:^15.5.0":
- version: 15.5.0
- resolution: "cypress@npm:15.5.0"
- dependencies:
- "@cypress/request": "npm:^3.0.9"
- "@cypress/xvfb": "npm:^1.2.4"
- "@types/sinonjs__fake-timers": "npm:8.1.1"
- "@types/sizzle": "npm:^2.3.2"
- "@types/tmp": "npm:^0.2.3"
- arch: "npm:^2.2.0"
- blob-util: "npm:^2.0.2"
- bluebird: "npm:^3.7.2"
- buffer: "npm:^5.7.1"
- cachedir: "npm:^2.3.0"
- chalk: "npm:^4.1.0"
- ci-info: "npm:^4.1.0"
- cli-cursor: "npm:^3.1.0"
- cli-table3: "npm:0.6.1"
- commander: "npm:^6.2.1"
- common-tags: "npm:^1.8.0"
- dayjs: "npm:^1.10.4"
- debug: "npm:^4.3.4"
- enquirer: "npm:^2.3.6"
- eventemitter2: "npm:6.4.7"
- execa: "npm:4.1.0"
- executable: "npm:^4.1.1"
- extract-zip: "npm:2.0.1"
- figures: "npm:^3.2.0"
- fs-extra: "npm:^9.1.0"
- hasha: "npm:5.2.2"
- is-installed-globally: "npm:~0.4.0"
- listr2: "npm:^3.8.3"
- lodash: "npm:^4.17.21"
- log-symbols: "npm:^4.0.0"
- minimist: "npm:^1.2.8"
- ospath: "npm:^1.2.2"
- pretty-bytes: "npm:^5.6.0"
- process: "npm:^0.11.10"
- proxy-from-env: "npm:1.0.0"
- request-progress: "npm:^3.0.0"
- semver: "npm:^7.7.1"
- supports-color: "npm:^8.1.1"
- systeminformation: "npm:5.27.7"
- tmp: "npm:~0.2.4"
- tree-kill: "npm:1.2.2"
- untildify: "npm:^4.0.0"
- yauzl: "npm:^2.10.0"
- bin:
- cypress: bin/cypress
- checksum: 10/fdfe965d36734cb301ee5573261a5a7766c7176f4d3eb0ecd24532c00aeff8983347d855bc7f3afa106558812602d306d70eb765a3181f03fe100ad5f7688bce
- languageName: node
- linkType: hard
-
"dargs@npm:^8.0.0":
version: 8.1.0
resolution: "dargs@npm:8.1.0"
@@ -5917,15 +5530,6 @@ __metadata:
languageName: node
linkType: hard
-"dashdash@npm:^1.12.0":
- version: 1.14.1
- resolution: "dashdash@npm:1.14.1"
- dependencies:
- assert-plus: "npm:^1.0.0"
- checksum: 10/137b287fa021201ce100cef772c8eeeaaafdd2aa7282864022acf3b873021e54cb809e9c060fa164840bf54ff72d00d6e2d8da1ee5a86d7200eeefa1123a8f7f
- languageName: node
- linkType: hard
-
"data-uri-to-buffer@npm:^6.0.2":
version: 6.0.2
resolution: "data-uri-to-buffer@npm:6.0.2"
@@ -5943,13 +5547,6 @@ __metadata:
languageName: node
linkType: hard
-"dayjs@npm:^1.10.4":
- version: 1.11.9
- resolution: "dayjs@npm:1.11.9"
- checksum: 10/7bee5a13653049ae166d4ee7f17fd1b3cd31ec8699b2bae1dee6262431d8d5815a4a9f12eaf48d1879a98d993c014a9a9098ed75aa6a041efe9bccc080a687cd
- languageName: node
- linkType: hard
-
"de-indent@npm:^1.0.2":
version: 1.0.2
resolution: "de-indent@npm:1.0.2"
@@ -5969,27 +5566,6 @@ __metadata:
languageName: node
linkType: hard
-"debug@npm:4.4.3, debug@npm:^4.4.3":
- version: 4.4.3
- resolution: "debug@npm:4.4.3"
- dependencies:
- ms: "npm:^2.1.3"
- peerDependenciesMeta:
- supports-color:
- optional: true
- checksum: 10/9ada3434ea2993800bd9a1e320bd4aa7af69659fb51cca685d390949434bc0a8873c21ed7c9b852af6f2455a55c6d050aa3937d52b3c69f796dab666f762acad
- languageName: node
- linkType: hard
-
-"debug@npm:^3.1.0":
- version: 3.2.7
- resolution: "debug@npm:3.2.7"
- dependencies:
- ms: "npm:^2.1.1"
- checksum: 10/d86fd7be2b85462297ea16f1934dc219335e802f629ca9a69b63ed8ed041dda492389bb2ee039217c02e5b54792b1c51aa96ae954cf28634d363a2360c7a1639
- languageName: node
- linkType: hard
-
"debug@npm:^4.0.0":
version: 4.4.0
resolution: "debug@npm:4.4.0"
@@ -6026,6 +5602,18 @@ __metadata:
languageName: node
linkType: hard
+"debug@npm:^4.4.3":
+ version: 4.4.3
+ resolution: "debug@npm:4.4.3"
+ dependencies:
+ ms: "npm:^2.1.3"
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ checksum: 10/9ada3434ea2993800bd9a1e320bd4aa7af69659fb51cca685d390949434bc0a8873c21ed7c9b852af6f2455a55c6d050aa3937d52b3c69f796dab666f762acad
+ languageName: node
+ linkType: hard
+
"decimal.js@npm:^10.6.0":
version: 10.6.0
resolution: "decimal.js@npm:10.6.0"
@@ -6135,6 +5723,7 @@ __metadata:
dependencies:
"@educorvi/vue-json-form": "workspace:^"
"@educorvi/vue-json-form-ajv-validator": "workspace:^"
+ "@playwright/test": "npm:^1.57.0"
"@semantic-release/exec": "npm:^7.1.0"
"@tsconfig/node18": "npm:^18.2.4"
"@types/node": "npm:^24.9.2"
@@ -6143,13 +5732,12 @@ __metadata:
bootstrap: "npm:^5.3.8"
bootstrap-vue-next: "npm:0.40.7"
bootswatch: "npm:^5.3.8"
- cypress: "npm:^15.5.0"
npm-run-all: "npm:^4.1.5"
+ playwright: "npm:^1.57.0"
sass-embedded: "npm:^1.93.2"
semantic-release: "npm:^25.0.1"
semantic-release-monorepo: "npm:^8.0.2"
semantic-release-yarn: "npm:^3.0.2"
- start-server-and-test: "npm:^2.1.2"
typescript: "npm:~5.9.3"
unplugin-vue-components: "npm:^30.0.0"
vite: "npm:^7.1.12"
@@ -6273,13 +5861,6 @@ __metadata:
languageName: node
linkType: hard
-"duplexer@npm:~0.1.1":
- version: 0.1.2
- resolution: "duplexer@npm:0.1.2"
- checksum: 10/62ba61a830c56801db28ff6305c7d289b6dc9f859054e8c982abd8ee0b0a14d2e9a8e7d086ffee12e868d43e2bbe8a964be55ddbd8c8957714c87373c7a4f9b0
- languageName: node
- linkType: hard
-
"eastasianwidth@npm:^0.2.0":
version: 0.2.0
resolution: "eastasianwidth@npm:0.2.0"
@@ -6287,16 +5868,6 @@ __metadata:
languageName: node
linkType: hard
-"ecc-jsbn@npm:~0.1.1":
- version: 0.1.2
- resolution: "ecc-jsbn@npm:0.1.2"
- dependencies:
- jsbn: "npm:~0.1.0"
- safer-buffer: "npm:^2.1.0"
- checksum: 10/d43591f2396196266e186e6d6928038cc11c76c3699a912cb9c13757060f7bbc7f17f47c4cb16168cdeacffc7965aef021142577e646fb3cb88810c15173eb57
- languageName: node
- linkType: hard
-
"editorconfig@npm:^1.0.4":
version: 1.0.4
resolution: "editorconfig@npm:1.0.4"
@@ -6374,16 +5945,6 @@ __metadata:
languageName: node
linkType: hard
-"enquirer@npm:^2.3.6":
- version: 2.4.1
- resolution: "enquirer@npm:2.4.1"
- dependencies:
- ansi-colors: "npm:^4.1.1"
- strip-ansi: "npm:^6.0.1"
- checksum: 10/b3726486cd98f0d458a851a03326a2a5dd4d84f37ff94ff2a2960c915e0fc865865da3b78f0877dc36ac5c1189069eca603e82ec63d5bc6b0dd9985bf6426d7a
- languageName: node
- linkType: hard
-
"entities@npm:^4.2.0, entities@npm:^4.4.0, entities@npm:^4.5.0":
version: 4.5.0
resolution: "entities@npm:4.5.0"
@@ -7016,28 +6577,6 @@ __metadata:
languageName: node
linkType: hard
-"event-stream@npm:=3.3.4":
- version: 3.3.4
- resolution: "event-stream@npm:3.3.4"
- dependencies:
- duplexer: "npm:~0.1.1"
- from: "npm:~0"
- map-stream: "npm:~0.1.0"
- pause-stream: "npm:0.0.11"
- split: "npm:0.3"
- stream-combiner: "npm:~0.0.4"
- through: "npm:~2.3.1"
- checksum: 10/48ea0e17df89ff45778c25e7111a6691401c902162823ddd7656d83fc972e75380f789f7a48f272f50fe7015420cc04f835d458560bf95e34b2c7a479570c8fb
- languageName: node
- linkType: hard
-
-"eventemitter2@npm:6.4.7":
- version: 6.4.7
- resolution: "eventemitter2@npm:6.4.7"
- checksum: 10/df2a733ee3a7ac6e7f6988cebbaac5b14b46bf82f700f1ec86f9e3f3d095dba20f9aa5c29d9d62a6f50fd943f798f7f2a38c4e1b45148f6f7cec7586a8ac6881
- languageName: node
- linkType: hard
-
"events@npm:^3.2.0":
version: 3.3.0
resolution: "events@npm:3.3.0"
@@ -7045,24 +6584,7 @@ __metadata:
languageName: node
linkType: hard
-"execa@npm:4.1.0":
- version: 4.1.0
- resolution: "execa@npm:4.1.0"
- dependencies:
- cross-spawn: "npm:^7.0.0"
- get-stream: "npm:^5.0.0"
- human-signals: "npm:^1.1.1"
- is-stream: "npm:^2.0.0"
- merge-stream: "npm:^2.0.0"
- npm-run-path: "npm:^4.0.0"
- onetime: "npm:^5.1.0"
- signal-exit: "npm:^3.0.2"
- strip-final-newline: "npm:^2.0.0"
- checksum: 10/ed58e41fe424797f3d837c8fb622548eeb72fa03324f2676af95f806568904eb55f196127a097f87d4517cab524c169ece13e6c9e201867de57b089584864b8f
- languageName: node
- linkType: hard
-
-"execa@npm:5.1.1, execa@npm:^5.1.1":
+"execa@npm:^5.1.1":
version: 5.1.1
resolution: "execa@npm:5.1.1"
dependencies:
@@ -7116,15 +6638,6 @@ __metadata:
languageName: node
linkType: hard
-"executable@npm:^4.1.1":
- version: 4.1.1
- resolution: "executable@npm:4.1.1"
- dependencies:
- pify: "npm:^2.2.0"
- checksum: 10/f01927ce59bccec804e171bf859a26e362c1f50aa9ebc69f7cafdcce3859d29d4b6267fd47237c18b0a1830614bd3f0ee14b7380d9bad18a4e7af9b5f0b6984f
- languageName: node
- linkType: hard
-
"expect-type@npm:^1.2.2":
version: 1.2.2
resolution: "expect-type@npm:1.2.2"
@@ -7146,14 +6659,7 @@ __metadata:
languageName: node
linkType: hard
-"extend@npm:~3.0.2":
- version: 3.0.2
- resolution: "extend@npm:3.0.2"
- checksum: 10/59e89e2dc798ec0f54b36d82f32a27d5f6472c53974f61ca098db5d4648430b725387b53449a34df38fd0392045434426b012f302b3cc049a6500ccf82877e4e
- languageName: node
- linkType: hard
-
-"extract-zip@npm:2.0.1, extract-zip@npm:^2.0.1":
+"extract-zip@npm:^2.0.1":
version: 2.0.1
resolution: "extract-zip@npm:2.0.1"
dependencies:
@@ -7170,20 +6676,6 @@ __metadata:
languageName: node
linkType: hard
-"extsprintf@npm:1.3.0":
- version: 1.3.0
- resolution: "extsprintf@npm:1.3.0"
- checksum: 10/26967d6c7ecbfb5bc5b7a6c43503dc5fafd9454802037e9fa1665e41f615da4ff5918bd6cb871a3beabed01a31eca1ccd0bdfb41231f50ad50d405a430f78377
- languageName: node
- linkType: hard
-
-"extsprintf@npm:^1.2.0":
- version: 1.4.1
- resolution: "extsprintf@npm:1.4.1"
- checksum: 10/bfd6d55f3c0c04d826fe0213264b383c03f32825af6b1ff777f3f2dc49467e599361993568d75b7b19a8ea1bb08c8e7cd8c3d87d179ced91bb0dcf81ca6938e0
- languageName: node
- linkType: hard
-
"fast-content-type-parse@npm:^3.0.0":
version: 3.0.0
resolution: "fast-content-type-parse@npm:3.0.0"
@@ -7337,15 +6829,6 @@ __metadata:
languageName: node
linkType: hard
-"figures@npm:^3.2.0":
- version: 3.2.0
- resolution: "figures@npm:3.2.0"
- dependencies:
- escape-string-regexp: "npm:^1.0.5"
- checksum: 10/a3bf94e001be51d3770500789157f067218d4bc681a65e1f69d482de15120bcac822dceb1a7b3803f32e4e3a61a46df44f7f2c8ba95d6375e7491502e0dd3d97
- languageName: node
- linkType: hard
-
"figures@npm:^6.0.0, figures@npm:^6.1.0":
version: 6.1.0
resolution: "figures@npm:6.1.0"
@@ -7398,24 +6881,6 @@ __metadata:
languageName: node
linkType: hard
-"find-test-names@npm:^1.28.18":
- version: 1.29.19
- resolution: "find-test-names@npm:1.29.19"
- dependencies:
- "@babel/parser": "npm:^7.27.2"
- "@babel/plugin-syntax-jsx": "npm:^7.27.1"
- acorn-walk: "npm:^8.2.0"
- debug: "npm:^4.3.3"
- simple-bin-help: "npm:^1.8.0"
- tinyglobby: "npm:^0.2.13"
- bin:
- find-test-names: bin/find-test-names.js
- print-tests: bin/print-tests.js
- update-test-count: bin/update-test-count.js
- checksum: 10/0bd0a791e6122881457a177c548bde7a4bb6caa1e4b01a7e768cfab156e65ce4d712830cca9fc856125f5f4e4e589bf10da415cba36a8e836e30c3034f57cb8d
- languageName: node
- linkType: hard
-
"find-up-simple@npm:^1.0.0":
version: 1.0.1
resolution: "find-up-simple@npm:1.0.1"
@@ -7535,14 +7000,7 @@ __metadata:
languageName: node
linkType: hard
-"forever-agent@npm:~0.6.1":
- version: 0.6.1
- resolution: "forever-agent@npm:0.6.1"
- checksum: 10/c1e1644d5e074ac063ecbc3fb8582013ef91fff0e3fa41e76db23d2f62bc6d9677aac86db950917deed4fe1fdd772df780cfaa352075f23deec9c015313afb97
- languageName: node
- linkType: hard
-
-"form-data@npm:^4.0.4, form-data@npm:~4.0.4":
+"form-data@npm:^4.0.4":
version: 4.0.4
resolution: "form-data@npm:4.0.4"
dependencies:
@@ -7565,13 +7023,6 @@ __metadata:
languageName: node
linkType: hard
-"from@npm:~0":
- version: 0.1.7
- resolution: "from@npm:0.1.7"
- checksum: 10/b85125b7890489656eb2e4f208f7654a93ec26e3aefaf3bbbcc0d496fc1941e4405834fcc9fe7333192aa2187905510ace70417bbf9ac6f6f4784a731d986939
- languageName: node
- linkType: hard
-
"fs-extra@npm:^10.0.1":
version: 10.1.0
resolution: "fs-extra@npm:10.1.0"
@@ -7605,18 +7056,6 @@ __metadata:
languageName: node
linkType: hard
-"fs-extra@npm:^9.1.0":
- version: 9.1.0
- resolution: "fs-extra@npm:9.1.0"
- dependencies:
- at-least-node: "npm:^1.0.0"
- graceful-fs: "npm:^4.2.0"
- jsonfile: "npm:^6.0.1"
- universalify: "npm:^2.0.0"
- checksum: 10/08600da1b49552ed23dfac598c8fc909c66776dd130fea54fbcad22e330f7fcc13488bb995f6bc9ce5651aa35b65702faf616fe76370ee56f1aade55da982dca
- languageName: node
- linkType: hard
-
"fs-minipass@npm:^2.0.0":
version: 2.1.0
resolution: "fs-minipass@npm:2.1.0"
@@ -7642,6 +7081,16 @@ __metadata:
languageName: node
linkType: hard
+"fsevents@npm:2.3.2":
+ version: 2.3.2
+ resolution: "fsevents@npm:2.3.2"
+ dependencies:
+ node-gyp: "npm:latest"
+ checksum: 10/6b5b6f5692372446ff81cf9501c76e3e0459a4852b3b5f1fc72c103198c125a6b8c72f5f166bdd76ffb2fca261e7f6ee5565daf80dca6e571e55bcc589cc1256
+ conditions: os=darwin
+ languageName: node
+ linkType: hard
+
"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3":
version: 2.3.3
resolution: "fsevents@npm:2.3.3"
@@ -7652,6 +7101,15 @@ __metadata:
languageName: node
linkType: hard
+"fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin":
+ version: 2.3.2
+ resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1"
+ dependencies:
+ node-gyp: "npm:latest"
+ conditions: os=darwin
+ languageName: node
+ linkType: hard
+
"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin":
version: 2.3.3
resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1"
@@ -7757,24 +7215,6 @@ __metadata:
languageName: node
linkType: hard
-"get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.3.0":
- version: 1.3.0
- resolution: "get-intrinsic@npm:1.3.0"
- dependencies:
- call-bind-apply-helpers: "npm:^1.0.2"
- es-define-property: "npm:^1.0.1"
- es-errors: "npm:^1.3.0"
- es-object-atoms: "npm:^1.1.1"
- function-bind: "npm:^1.1.2"
- get-proto: "npm:^1.0.1"
- gopd: "npm:^1.2.0"
- has-symbols: "npm:^1.1.0"
- hasown: "npm:^2.0.2"
- math-intrinsics: "npm:^1.1.0"
- checksum: 10/6e9dd920ff054147b6f44cb98104330e87caafae051b6d37b13384a45ba15e71af33c3baeac7cb630a0aaa23142718dcf25b45cfdd86c184c5dcb4e56d953a10
- languageName: node
- linkType: hard
-
"get-intrinsic@npm:^1.2.6":
version: 1.3.1
resolution: "get-intrinsic@npm:1.3.1"
@@ -7806,7 +7246,7 @@ __metadata:
languageName: node
linkType: hard
-"get-stream@npm:^5.0.0, get-stream@npm:^5.1.0":
+"get-stream@npm:^5.1.0":
version: 5.2.0
resolution: "get-stream@npm:5.2.0"
dependencies:
@@ -7876,15 +7316,6 @@ __metadata:
languageName: node
linkType: hard
-"getpass@npm:^0.1.1":
- version: 0.1.7
- resolution: "getpass@npm:0.1.7"
- dependencies:
- assert-plus: "npm:^1.0.0"
- checksum: 10/ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046
- languageName: node
- linkType: hard
-
"git-log-parser@npm:^1.2.0":
version: 1.2.1
resolution: "git-log-parser@npm:1.2.1"
@@ -8007,15 +7438,6 @@ __metadata:
languageName: node
linkType: hard
-"global-dirs@npm:^3.0.0":
- version: 3.0.1
- resolution: "global-dirs@npm:3.0.1"
- dependencies:
- ini: "npm:2.0.0"
- checksum: 10/70147b80261601fd40ac02a104581432325c1c47329706acd773f3a6ce99bb36d1d996038c85ccacd482ad22258ec233c586b6a91535b1a116b89663d49d6438
- languageName: node
- linkType: hard
-
"globals@npm:^11.1.0":
version: 11.12.0
resolution: "globals@npm:11.12.0"
@@ -8055,7 +7477,7 @@ __metadata:
languageName: node
linkType: hard
-"globby@npm:^11.0.1, globby@npm:^11.0.4":
+"globby@npm:^11.0.1":
version: 11.1.0
resolution: "globby@npm:11.1.0"
dependencies:
@@ -8209,16 +7631,6 @@ __metadata:
languageName: node
linkType: hard
-"hasha@npm:5.2.2":
- version: 5.2.2
- resolution: "hasha@npm:5.2.2"
- dependencies:
- is-stream: "npm:^2.0.0"
- type-fest: "npm:^0.8.0"
- checksum: 10/06cc474bed246761ff61c19d629977eb5f53fa817be4313a255a64ae0f433e831a29e83acb6555e3f4592b348497596f1d1653751008dda4f21c9c21ca60ac5a
- languageName: node
- linkType: hard
-
"hasown@npm:^2.0.2":
version: 2.0.2
resolution: "hasown@npm:2.0.2"
@@ -8339,17 +7751,6 @@ __metadata:
languageName: node
linkType: hard
-"http-signature@npm:~1.4.0":
- version: 1.4.0
- resolution: "http-signature@npm:1.4.0"
- dependencies:
- assert-plus: "npm:^1.0.0"
- jsprim: "npm:^2.0.2"
- sshpk: "npm:^1.18.0"
- checksum: 10/f9f5eed4ac5db5e1ec6d00652680c7d8b76d553560017e34505c0c22c37abb2e6d22b9268ed4a8542aa9746852a2d64850531091e443393c9c8e0f4fd4174455
- languageName: node
- linkType: hard
-
"https-proxy-agent@npm:^5.0.0":
version: 5.0.1
resolution: "https-proxy-agent@npm:5.0.1"
@@ -8370,13 +7771,6 @@ __metadata:
languageName: node
linkType: hard
-"human-signals@npm:^1.1.1":
- version: 1.1.1
- resolution: "human-signals@npm:1.1.1"
- checksum: 10/6a58224dffcef5588910b1028bda8623c9a7053460a1fe3367e61921a6b5f6b93aba30f323868a958f968d7de3f5f78421f11d4d9f7e9563b1bd2b00ed9a4deb
- languageName: node
- linkType: hard
-
"human-signals@npm:^2.1.0":
version: 2.1.0
resolution: "human-signals@npm:2.1.0"
@@ -8425,13 +7819,6 @@ __metadata:
languageName: node
linkType: hard
-"ieee754@npm:^1.1.13":
- version: 1.2.1
- resolution: "ieee754@npm:1.2.1"
- checksum: 10/d9f2557a59036f16c282aaeb107832dc957a93d73397d89bbad4eb1130560560eb695060145e8e6b3b498b15ab95510226649a0b8f52ae06583575419fe10fc4
- languageName: node
- linkType: hard
-
"ignore-walk@npm:^8.0.0":
version: 8.0.0
resolution: "ignore-walk@npm:8.0.0"
@@ -8558,13 +7945,6 @@ __metadata:
languageName: node
linkType: hard
-"ini@npm:2.0.0":
- version: 2.0.0
- resolution: "ini@npm:2.0.0"
- checksum: 10/04e24ba05c4f6947e15560824e153b4610bceea2f5a3ab68651d221a4aab3c77d4e3e90a917ebc8bf5ad71a30a8575de56c39d6b4c4b1375a28016b9f3625f9d
- languageName: node
- linkType: hard
-
"ini@npm:4.1.1":
version: 4.1.1
resolution: "ini@npm:4.1.1"
@@ -8778,16 +8158,6 @@ __metadata:
languageName: node
linkType: hard
-"is-installed-globally@npm:~0.4.0":
- version: 0.4.0
- resolution: "is-installed-globally@npm:0.4.0"
- dependencies:
- global-dirs: "npm:^3.0.0"
- is-path-inside: "npm:^3.0.2"
- checksum: 10/5294d21c82cb9beedd693ce1dfb12117c4db36d6e35edc9dc6bf06cb300d23c96520d1bfb063386b054268ae3d7255c3f09393b52218cc26ace99b217bf37c93
- languageName: node
- linkType: hard
-
"is-lambda@npm:^1.0.1":
version: 1.0.1
resolution: "is-lambda@npm:1.0.1"
@@ -8943,20 +8313,6 @@ __metadata:
languageName: node
linkType: hard
-"is-typedarray@npm:~1.0.0":
- version: 1.0.0
- resolution: "is-typedarray@npm:1.0.0"
- checksum: 10/4b433bfb0f9026f079f4eb3fbaa4ed2de17c9995c3a0b5c800bec40799b4b2a8b4e051b1ada77749deb9ded4ae52fe2096973f3a93ff83df1a5a7184a669478c
- languageName: node
- linkType: hard
-
-"is-unicode-supported@npm:^0.1.0":
- version: 0.1.0
- resolution: "is-unicode-supported@npm:0.1.0"
- checksum: 10/a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52
- languageName: node
- linkType: hard
-
"is-unicode-supported@npm:^2.0.0":
version: 2.1.0
resolution: "is-unicode-supported@npm:2.1.0"
@@ -9017,13 +8373,6 @@ __metadata:
languageName: node
linkType: hard
-"isstream@npm:~0.1.2":
- version: 0.1.2
- resolution: "isstream@npm:0.1.2"
- checksum: 10/22d9c181015226d4534a227539256897bbbcb7edd1066ca4fc4d3a06dbd976325dfdd16b3983c7d236a89f256805c1a685a772e0364e98873d3819b064ad35a1
- languageName: node
- linkType: hard
-
"issue-parser@npm:^7.0.0":
version: 7.0.1
resolution: "issue-parser@npm:7.0.1"
@@ -9115,21 +8464,6 @@ __metadata:
languageName: node
linkType: hard
-"joi@npm:^18.0.1":
- version: 18.0.1
- resolution: "joi@npm:18.0.1"
- dependencies:
- "@hapi/address": "npm:^5.1.1"
- "@hapi/formula": "npm:^3.0.2"
- "@hapi/hoek": "npm:^11.0.7"
- "@hapi/pinpoint": "npm:^2.0.1"
- "@hapi/tlds": "npm:^1.1.1"
- "@hapi/topo": "npm:^6.0.2"
- "@standard-schema/spec": "npm:^1.0.0"
- checksum: 10/d8e391c0e93ca1e83836bd8eb3562004a038d5184e74b9e6c6877fc60c782cbc549dcaa003e41ddb12c10899be3c4da175e7dc290e9457e92f2f4d28b46094df
- languageName: node
- linkType: hard
-
"js-beautify@npm:^1.14.9":
version: 1.15.4
resolution: "js-beautify@npm:1.15.4"
@@ -9179,13 +8513,6 @@ __metadata:
languageName: node
linkType: hard
-"jsbn@npm:~0.1.0":
- version: 0.1.1
- resolution: "jsbn@npm:0.1.1"
- checksum: 10/5450133242845100e694f0ef9175f44c012691a9b770b2571e677314e6f70600abb10777cdfc9a0c6a9f2ac6d134577403633de73e2fcd0f97875a67744e2d14
- languageName: node
- linkType: hard
-
"jsdom@npm:^27.0.1":
version: 27.0.1
resolution: "jsdom@npm:27.0.1"
@@ -9319,13 +8646,6 @@ __metadata:
languageName: node
linkType: hard
-"json-schema@npm:0.4.0":
- version: 0.4.0
- resolution: "json-schema@npm:0.4.0"
- checksum: 10/8b3b64eff4a807dc2a3045b104ed1b9335cd8d57aa74c58718f07f0f48b8baa3293b00af4dcfbdc9144c3aafea1e97982cc27cc8e150fc5d93c540649507a458
- languageName: node
- linkType: hard
-
"json-stable-stringify-without-jsonify@npm:^1.0.1":
version: 1.0.1
resolution: "json-stable-stringify-without-jsonify@npm:1.0.1"
@@ -9340,13 +8660,6 @@ __metadata:
languageName: node
linkType: hard
-"json-stringify-safe@npm:~5.0.1":
- version: 5.0.1
- resolution: "json-stringify-safe@npm:5.0.1"
- checksum: 10/59169a081e4eeb6f9559ae1f938f656191c000e0512aa6df9f3c8b2437a4ab1823819c6b9fd1818a4e39593ccfd72e9a051fdd3e2d1e340ed913679e888ded8c
- languageName: node
- linkType: hard
-
"json5@npm:^2.2.3":
version: 2.2.3
resolution: "json5@npm:2.2.3"
@@ -9388,18 +8701,6 @@ __metadata:
languageName: node
linkType: hard
-"jsprim@npm:^2.0.2":
- version: 2.0.2
- resolution: "jsprim@npm:2.0.2"
- dependencies:
- assert-plus: "npm:1.0.0"
- extsprintf: "npm:1.3.0"
- json-schema: "npm:0.4.0"
- verror: "npm:1.10.0"
- checksum: 10/fcfca5b55f83e1b8be5f932c71754bd37afd2611f81685abd05689e8ce718a91155ff7bd5b94c65ce483a787b5c43c6d0c18c1d2259fca5bb61a3f8ea2e29c0a
- languageName: node
- linkType: hard
-
"just-diff-apply@npm:^5.2.0":
version: 5.5.0
resolution: "just-diff-apply@npm:5.5.0"
@@ -9430,13 +8731,6 @@ __metadata:
languageName: node
linkType: hard
-"lazy-ass@npm:1.6.0":
- version: 1.6.0
- resolution: "lazy-ass@npm:1.6.0"
- checksum: 10/3969ebef060b6f665fc78310ec769f7d2945db2d5af2b6663eda1bc9ec45c845deba9c4a3f75f124ce2c76fedf56514a063ee5c2affc8bc94963fbbddb442a88
- languageName: node
- linkType: hard
-
"levn@npm:^0.4.1":
version: 0.4.1
resolution: "levn@npm:0.4.1"
@@ -9722,27 +9016,6 @@ __metadata:
languageName: node
linkType: hard
-"listr2@npm:^3.8.3":
- version: 3.14.0
- resolution: "listr2@npm:3.14.0"
- dependencies:
- cli-truncate: "npm:^2.1.0"
- colorette: "npm:^2.0.16"
- log-update: "npm:^4.0.0"
- p-map: "npm:^4.0.0"
- rfdc: "npm:^1.3.0"
- rxjs: "npm:^7.5.1"
- through: "npm:^2.3.8"
- wrap-ansi: "npm:^7.0.0"
- peerDependencies:
- enquirer: ">= 2.3.0 < 3"
- peerDependenciesMeta:
- enquirer:
- optional: true
- checksum: 10/cebbd692330279ea82f05468cbb0a16f5b40015a6163e0a2fb04ef168da8e2d6c54e129148e90112d92e7f9ecb85a56e6b88d867a58a8ebdf36e0c98df49ae5c
- languageName: node
- linkType: hard
-
"load-json-file@npm:^4.0.0":
version: 4.0.0
resolution: "load-json-file@npm:4.0.0"
@@ -9885,13 +9158,6 @@ __metadata:
languageName: node
linkType: hard
-"lodash.once@npm:^4.1.1":
- version: 4.1.1
- resolution: "lodash.once@npm:4.1.1"
- checksum: 10/202f2c8c3d45e401b148a96de228e50ea6951ee5a9315ca5e15733d5a07a6b1a02d9da1e7fdf6950679e17e8ca8f7190ec33cae47beb249b0c50019d753f38f3
- languageName: node
- linkType: hard
-
"lodash.snakecase@npm:^4.1.1":
version: 4.1.1
resolution: "lodash.snakecase@npm:4.1.1"
@@ -9934,28 +9200,6 @@ __metadata:
languageName: node
linkType: hard
-"log-symbols@npm:^4.0.0":
- version: 4.1.0
- resolution: "log-symbols@npm:4.1.0"
- dependencies:
- chalk: "npm:^4.1.0"
- is-unicode-supported: "npm:^0.1.0"
- checksum: 10/fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74
- languageName: node
- linkType: hard
-
-"log-update@npm:^4.0.0":
- version: 4.0.0
- resolution: "log-update@npm:4.0.0"
- dependencies:
- ansi-escapes: "npm:^4.3.0"
- cli-cursor: "npm:^3.1.0"
- slice-ansi: "npm:^4.0.0"
- wrap-ansi: "npm:^6.2.0"
- checksum: 10/ae2f85bbabc1906034154fb7d4c4477c79b3e703d22d78adee8b3862fa913942772e7fa11713e3d96fb46de4e3cabefbf5d0a544344f03b58d3c4bff52aa9eb2
- languageName: node
- linkType: hard
-
"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0":
version: 10.4.3
resolution: "lru-cache@npm:10.4.3"
@@ -10120,13 +9364,6 @@ __metadata:
languageName: node
linkType: hard
-"map-stream@npm:~0.1.0":
- version: 0.1.0
- resolution: "map-stream@npm:0.1.0"
- checksum: 10/f04a07041dccdf8140a4a6613e4731e917153ee031d3c837cb32ea7d609e8fbea538c44053718772f59dd1dca0ce68a5689ad006688612ee720d78bacf5bf24d
- languageName: node
- linkType: hard
-
"markdown-it@npm:^14.1.0":
version: 14.1.0
resolution: "markdown-it@npm:14.1.0"
@@ -10252,7 +9489,7 @@ __metadata:
languageName: node
linkType: hard
-"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:~2.1.19":
+"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27":
version: 2.1.35
resolution: "mime-types@npm:2.1.35"
dependencies:
@@ -10550,7 +9787,7 @@ __metadata:
languageName: node
linkType: hard
-"ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.2, ms@npm:^2.1.3":
+"ms@npm:^2.0.0, ms@npm:^2.1.2, ms@npm:^2.1.3":
version: 2.1.3
resolution: "ms@npm:2.1.3"
checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d
@@ -10964,7 +10201,7 @@ __metadata:
languageName: node
linkType: hard
-"npm-run-path@npm:^4.0.0, npm-run-path@npm:^4.0.1":
+"npm-run-path@npm:^4.0.1":
version: 4.0.1
resolution: "npm-run-path@npm:4.0.1"
dependencies:
@@ -11110,13 +10347,6 @@ __metadata:
languageName: node
linkType: hard
-"object-inspect@npm:^1.13.3":
- version: 1.13.4
- resolution: "object-inspect@npm:1.13.4"
- checksum: 10/aa13b1190ad3e366f6c83ad8a16ed37a19ed57d267385aa4bfdccda833d7b90465c057ff6c55d035a6b2e52c1a2295582b294217a0a3a1ae7abdd6877ef781fb
- languageName: node
- linkType: hard
-
"object-keys@npm:^1.1.1":
version: 1.1.1
resolution: "object-keys@npm:1.1.1"
@@ -11152,7 +10382,7 @@ __metadata:
languageName: node
linkType: hard
-"onetime@npm:^5.1.0, onetime@npm:^5.1.2":
+"onetime@npm:^5.1.2":
version: 5.1.2
resolution: "onetime@npm:5.1.2"
dependencies:
@@ -11196,13 +10426,6 @@ __metadata:
languageName: node
linkType: hard
-"ospath@npm:^1.2.2":
- version: 1.2.2
- resolution: "ospath@npm:1.2.2"
- checksum: 10/505f48a4f4f1c557d6c656ec985707726e3714721680139be037613e903aa8c8fa4ddd8d1342006f9b2dc0065e6e20f8b7bea2ee05354f31257044790367b347
- languageName: node
- linkType: hard
-
"p-each-series@npm:^2.1.0":
version: 2.2.0
resolution: "p-each-series@npm:2.2.0"
@@ -11639,15 +10862,6 @@ __metadata:
languageName: node
linkType: hard
-"pause-stream@npm:0.0.11":
- version: 0.0.11
- resolution: "pause-stream@npm:0.0.11"
- dependencies:
- through: "npm:~2.3"
- checksum: 10/1407efadfe814b5c487e4b28d6139cb7e03ee5d25fbb5f89a68f2053e81f05ce6b2bec196eeb3d46ef2c856f785016d14816b0d0e3c3abd1b64311c5c20660dc
- languageName: node
- linkType: hard
-
"pend@npm:~1.2.0":
version: 1.2.0
resolution: "pend@npm:1.2.0"
@@ -11669,13 +10883,6 @@ __metadata:
languageName: node
linkType: hard
-"performance-now@npm:^2.1.0":
- version: 2.1.0
- resolution: "performance-now@npm:2.1.0"
- checksum: 10/534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b550
- languageName: node
- linkType: hard
-
"picocolors@npm:^1.0.0":
version: 1.0.0
resolution: "picocolors@npm:1.0.0"
@@ -11720,13 +10927,6 @@ __metadata:
languageName: node
linkType: hard
-"pify@npm:^2.2.0":
- version: 2.3.0
- resolution: "pify@npm:2.3.0"
- checksum: 10/9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba
- languageName: node
- linkType: hard
-
"pify@npm:^3.0.0":
version: 3.0.0
resolution: "pify@npm:3.0.0"
@@ -11801,6 +11001,30 @@ __metadata:
languageName: node
linkType: hard
+"playwright-core@npm:1.57.0":
+ version: 1.57.0
+ resolution: "playwright-core@npm:1.57.0"
+ bin:
+ playwright-core: cli.js
+ checksum: 10/ec066602f0196f036006caee14a30d0a57533a76673bb9a0c609ef56e21decf018f0e8d402ba2fb18251393be6a1c9e193c83266f1670fe50838c5340e220de0
+ languageName: node
+ linkType: hard
+
+"playwright@npm:1.57.0, playwright@npm:^1.57.0":
+ version: 1.57.0
+ resolution: "playwright@npm:1.57.0"
+ dependencies:
+ fsevents: "npm:2.3.2"
+ playwright-core: "npm:1.57.0"
+ dependenciesMeta:
+ fsevents:
+ optional: true
+ bin:
+ playwright: cli.js
+ checksum: 10/241559210f98ef11b6bd6413f2d29da7ef67c7865b72053192f0d164fab9e0d3bd47913b3351d5de6433a8aff2d8424d4b8bd668df420bf4dda7ae9fcd37b942
+ languageName: node
+ linkType: hard
+
"postcss-selector-parser@npm:^6.0.15":
version: 6.1.2
resolution: "postcss-selector-parser@npm:6.1.2"
@@ -11879,13 +11103,6 @@ __metadata:
languageName: node
linkType: hard
-"pretty-bytes@npm:^5.6.0":
- version: 5.6.0
- resolution: "pretty-bytes@npm:5.6.0"
- checksum: 10/9c082500d1e93434b5b291bd651662936b8bd6204ec9fa17d563116a192d6d86b98f6d328526b4e8d783c07d5499e2614a807520249692da9ec81564b2f439cd
- languageName: node
- linkType: hard
-
"pretty-ms@npm:^9.0.0":
version: 9.2.0
resolution: "pretty-ms@npm:9.2.0"
@@ -11916,13 +11133,6 @@ __metadata:
languageName: node
linkType: hard
-"process@npm:^0.11.10":
- version: 0.11.10
- resolution: "process@npm:0.11.10"
- checksum: 10/dbaa7e8d1d5cf375c36963ff43116772a989ef2bb47c9bdee20f38fd8fc061119cf38140631cf90c781aca4d3f0f0d2c834711952b728953f04fd7d238f59f5b
- languageName: node
- linkType: hard
-
"proggy@npm:^3.0.0":
version: 3.0.0
resolution: "proggy@npm:3.0.0"
@@ -11993,13 +11203,6 @@ __metadata:
languageName: node
linkType: hard
-"proxy-from-env@npm:1.0.0":
- version: 1.0.0
- resolution: "proxy-from-env@npm:1.0.0"
- checksum: 10/f26b59c0f21dd118c23a0eb1f5250848a23b5029ec5c9f2b4011b6439b19fa83da50858d84e9261da94aa4e67778c1bac5483afce884b7770a96895a4e6b9a19
- languageName: node
- linkType: hard
-
"proxy-from-env@npm:^1.1.0":
version: 1.1.0
resolution: "proxy-from-env@npm:1.1.0"
@@ -12007,17 +11210,6 @@ __metadata:
languageName: node
linkType: hard
-"ps-tree@npm:1.2.0":
- version: 1.2.0
- resolution: "ps-tree@npm:1.2.0"
- dependencies:
- event-stream: "npm:=3.3.4"
- bin:
- ps-tree: ./bin/ps-tree.js
- checksum: 10/0587defdc20c0768fad884623c0204c77e5228878a5cb043676b00529220ec12d9cb6a328a0580767a9909a317bff466fe4530a4676e3d145a9deb3b7fbbeef3
- languageName: node
- linkType: hard
-
"pump@npm:^3.0.0":
version: 3.0.0
resolution: "pump@npm:3.0.0"
@@ -12072,15 +11264,6 @@ __metadata:
languageName: node
linkType: hard
-"qs@npm:6.14.0":
- version: 6.14.0
- resolution: "qs@npm:6.14.0"
- dependencies:
- side-channel: "npm:^1.1.0"
- checksum: 10/a60e49bbd51c935a8a4759e7505677b122e23bf392d6535b8fc31c1e447acba2c901235ecb192764013cd2781723dc1f61978b5fdd93cc31d7043d31cdc01974
- languageName: node
- linkType: hard
-
"quansync@npm:^0.2.11":
version: 0.2.11
resolution: "quansync@npm:0.2.11"
@@ -12269,15 +11452,6 @@ __metadata:
languageName: node
linkType: hard
-"request-progress@npm:^3.0.0":
- version: 3.0.0
- resolution: "request-progress@npm:3.0.0"
- dependencies:
- throttleit: "npm:^1.0.0"
- checksum: 10/c25b1c75fb0a0c3b38874abd7ebd58e320c55bc17a48e76772b26828d9e0f688741e144d31b678af9cf447cba32ae153efad05f8a2db225eb07135a613d3162b
- languageName: node
- linkType: hard
-
"require-directory@npm:^2.1.1":
version: 2.1.1
resolution: "require-directory@npm:2.1.1"
@@ -12391,16 +11565,6 @@ __metadata:
languageName: node
linkType: hard
-"restore-cursor@npm:^3.1.0":
- version: 3.1.0
- resolution: "restore-cursor@npm:3.1.0"
- dependencies:
- onetime: "npm:^5.1.0"
- signal-exit: "npm:^3.0.2"
- checksum: 10/f877dd8741796b909f2a82454ec111afb84eb45890eb49ac947d87991379406b3b83ff9673a46012fca0d7844bb989f45cc5b788254cf1a39b6b5a9659de0630
- languageName: node
- linkType: hard
-
"retry@npm:^0.12.0":
version: 0.12.0
resolution: "retry@npm:0.12.0"
@@ -12415,13 +11579,6 @@ __metadata:
languageName: node
linkType: hard
-"rfdc@npm:^1.3.0":
- version: 1.3.0
- resolution: "rfdc@npm:1.3.0"
- checksum: 10/76dedd9700cdf132947fde7ce1a8838c9cbb7f3e8f9188af0aaf97194cce745f42094dd2cf547426934cc83252ee2c0e432b2e0222a4415ab0db32de82665c69
- languageName: node
- linkType: hard
-
"rfdc@npm:^1.4.1":
version: 1.4.1
resolution: "rfdc@npm:1.4.1"
@@ -12551,7 +11708,7 @@ __metadata:
languageName: node
linkType: hard
-"rxjs@npm:^7.4.0, rxjs@npm:^7.8.2":
+"rxjs@npm:^7.4.0":
version: 7.8.2
resolution: "rxjs@npm:7.8.2"
dependencies:
@@ -12560,15 +11717,6 @@ __metadata:
languageName: node
linkType: hard
-"rxjs@npm:^7.5.1":
- version: 7.8.1
- resolution: "rxjs@npm:7.8.1"
- dependencies:
- tslib: "npm:^2.1.0"
- checksum: 10/b10cac1a5258f885e9dd1b70d23c34daeb21b61222ee735d2ec40a8685bdca40429000703a44f0e638c27a684ac139e1c37e835d2a0dc16f6fc061a138ae3abb
- languageName: node
- linkType: hard
-
"safe-array-concat@npm:^1.0.0":
version: 1.0.0
resolution: "safe-array-concat@npm:1.0.0"
@@ -12581,7 +11729,7 @@ __metadata:
languageName: node
linkType: hard
-"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0":
+"safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0":
version: 5.2.1
resolution: "safe-buffer@npm:5.2.1"
checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451
@@ -12606,7 +11754,7 @@ __metadata:
languageName: node
linkType: hard
-"safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0":
+"safer-buffer@npm:>= 2.1.2 < 3.0.0":
version: 2.1.2
resolution: "safer-buffer@npm:2.1.2"
checksum: 10/7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83
@@ -12993,7 +12141,7 @@ __metadata:
languageName: node
linkType: hard
-"semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.3.2, semver@npm:^7.5.2, semver@npm:^7.6.3, semver@npm:^7.7.1":
+"semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.3.2, semver@npm:^7.5.2, semver@npm:^7.6.3":
version: 7.7.1
resolution: "semver@npm:7.7.1"
bin:
@@ -13086,41 +12234,6 @@ __metadata:
languageName: node
linkType: hard
-"side-channel-list@npm:^1.0.0":
- version: 1.0.0
- resolution: "side-channel-list@npm:1.0.0"
- dependencies:
- es-errors: "npm:^1.3.0"
- object-inspect: "npm:^1.13.3"
- checksum: 10/603b928997abd21c5a5f02ae6b9cc36b72e3176ad6827fab0417ead74580cc4fb4d5c7d0a8a2ff4ead34d0f9e35701ed7a41853dac8a6d1a664fcce1a044f86f
- languageName: node
- linkType: hard
-
-"side-channel-map@npm:^1.0.1":
- version: 1.0.1
- resolution: "side-channel-map@npm:1.0.1"
- dependencies:
- call-bound: "npm:^1.0.2"
- es-errors: "npm:^1.3.0"
- get-intrinsic: "npm:^1.2.5"
- object-inspect: "npm:^1.13.3"
- checksum: 10/5771861f77feefe44f6195ed077a9e4f389acc188f895f570d56445e251b861754b547ea9ef73ecee4e01fdada6568bfe9020d2ec2dfc5571e9fa1bbc4a10615
- languageName: node
- linkType: hard
-
-"side-channel-weakmap@npm:^1.0.2":
- version: 1.0.2
- resolution: "side-channel-weakmap@npm:1.0.2"
- dependencies:
- call-bound: "npm:^1.0.2"
- es-errors: "npm:^1.3.0"
- get-intrinsic: "npm:^1.2.5"
- object-inspect: "npm:^1.13.3"
- side-channel-map: "npm:^1.0.1"
- checksum: 10/a815c89bc78c5723c714ea1a77c938377ea710af20d4fb886d362b0d1f8ac73a17816a5f6640f354017d7e292a43da9c5e876c22145bac00b76cfb3468001736
- languageName: node
- linkType: hard
-
"side-channel@npm:^1.0.4":
version: 1.0.4
resolution: "side-channel@npm:1.0.4"
@@ -13132,19 +12245,6 @@ __metadata:
languageName: node
linkType: hard
-"side-channel@npm:^1.1.0":
- version: 1.1.0
- resolution: "side-channel@npm:1.1.0"
- dependencies:
- es-errors: "npm:^1.3.0"
- object-inspect: "npm:^1.13.3"
- side-channel-list: "npm:^1.0.0"
- side-channel-map: "npm:^1.0.1"
- side-channel-weakmap: "npm:^1.0.2"
- checksum: 10/7d53b9db292c6262f326b6ff3bc1611db84ece36c2c7dc0e937954c13c73185b0406c56589e2bb8d071d6fee468e14c39fb5d203ee39be66b7b8174f179afaba
- languageName: node
- linkType: hard
-
"siginfo@npm:^2.0.0":
version: 2.0.0
resolution: "siginfo@npm:2.0.0"
@@ -13152,7 +12252,7 @@ __metadata:
languageName: node
linkType: hard
-"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7":
+"signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7":
version: 3.0.7
resolution: "signal-exit@npm:3.0.7"
checksum: 10/a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318
@@ -13191,13 +12291,6 @@ __metadata:
languageName: node
linkType: hard
-"simple-bin-help@npm:^1.8.0":
- version: 1.8.0
- resolution: "simple-bin-help@npm:1.8.0"
- checksum: 10/2333be11a8863f9ea7c5fbd9824824bcc56bfd91e436ea4364bd117600e9a2971ecdbaf1782924b53d3c16f393200e85ddbdf075a454375f80572481cd0aecd3
- languageName: node
- linkType: hard
-
"sirv@npm:^3.0.1":
version: 3.0.1
resolution: "sirv@npm:3.0.1"
@@ -13253,28 +12346,6 @@ __metadata:
languageName: node
linkType: hard
-"slice-ansi@npm:^3.0.0":
- version: 3.0.0
- resolution: "slice-ansi@npm:3.0.0"
- dependencies:
- ansi-styles: "npm:^4.0.0"
- astral-regex: "npm:^2.0.0"
- is-fullwidth-code-point: "npm:^3.0.0"
- checksum: 10/5ec6d022d12e016347e9e3e98a7eb2a592213a43a65f1b61b74d2c78288da0aded781f665807a9f3876b9daa9ad94f64f77d7633a0458876c3a4fdc4eb223f24
- languageName: node
- linkType: hard
-
-"slice-ansi@npm:^4.0.0":
- version: 4.0.0
- resolution: "slice-ansi@npm:4.0.0"
- dependencies:
- ansi-styles: "npm:^4.0.0"
- astral-regex: "npm:^2.0.0"
- is-fullwidth-code-point: "npm:^3.0.0"
- checksum: 10/4a82d7f085b0e1b070e004941ada3c40d3818563ac44766cca4ceadd2080427d337554f9f99a13aaeb3b4a94d9964d9466c807b3d7b7541d1ec37ee32d308756
- languageName: node
- linkType: hard
-
"smart-buffer@npm:^4.2.0":
version: 4.2.0
resolution: "smart-buffer@npm:4.2.0"
@@ -13436,15 +12507,6 @@ __metadata:
languageName: node
linkType: hard
-"split@npm:0.3":
- version: 0.3.3
- resolution: "split@npm:0.3.3"
- dependencies:
- through: "npm:2"
- checksum: 10/41b397e9fedc984ee1b061780bf173ef72a4f99265ca9cbccd9765b8cc0729eeee6cdeaf70664eb3eb0823e8430db033e50a33050498d75569fc743c6964c84e
- languageName: node
- linkType: hard
-
"sprintf-js@npm:^1.1.3":
version: 1.1.3
resolution: "sprintf-js@npm:1.1.3"
@@ -13459,27 +12521,6 @@ __metadata:
languageName: node
linkType: hard
-"sshpk@npm:^1.18.0":
- version: 1.18.0
- resolution: "sshpk@npm:1.18.0"
- dependencies:
- asn1: "npm:~0.2.3"
- assert-plus: "npm:^1.0.0"
- bcrypt-pbkdf: "npm:^1.0.0"
- dashdash: "npm:^1.12.0"
- ecc-jsbn: "npm:~0.1.1"
- getpass: "npm:^0.1.1"
- jsbn: "npm:~0.1.0"
- safer-buffer: "npm:^2.0.2"
- tweetnacl: "npm:~0.14.0"
- bin:
- sshpk-conv: bin/sshpk-conv
- sshpk-sign: bin/sshpk-sign
- sshpk-verify: bin/sshpk-verify
- checksum: 10/858339d43e3c6b6a848772a66f69442ce74f1a37655d9f35ba9d1f85329499ff0000af9f8ab83dbb39ad24c0c370edabe0be1e39863f70c6cded9924b8458c34
- languageName: node
- linkType: hard
-
"ssri@npm:^10.0.0":
version: 10.0.5
resolution: "ssri@npm:10.0.5"
@@ -13505,26 +12546,6 @@ __metadata:
languageName: node
linkType: hard
-"start-server-and-test@npm:^2.1.2":
- version: 2.1.2
- resolution: "start-server-and-test@npm:2.1.2"
- dependencies:
- arg: "npm:^5.0.2"
- bluebird: "npm:3.7.2"
- check-more-types: "npm:2.24.0"
- debug: "npm:4.4.3"
- execa: "npm:5.1.1"
- lazy-ass: "npm:1.6.0"
- ps-tree: "npm:1.2.0"
- wait-on: "npm:8.0.5"
- bin:
- server-test: src/bin/start.js
- start-server-and-test: src/bin/start.js
- start-test: src/bin/start.js
- checksum: 10/bf4010fed2f1bc9db99ff3939a6327cce9af89782e44d0ce71a4a68a65babdc3b620dc8fc157c2e442b6970def4a57cd8d25ca3e13d8a75e91976ad248e99268
- languageName: node
- linkType: hard
-
"std-env@npm:^3.9.0":
version: 3.9.0
resolution: "std-env@npm:3.9.0"
@@ -13542,15 +12563,6 @@ __metadata:
languageName: node
linkType: hard
-"stream-combiner@npm:~0.0.4":
- version: 0.0.4
- resolution: "stream-combiner@npm:0.0.4"
- dependencies:
- duplexer: "npm:~0.1.1"
- checksum: 10/844b622cfe8b9de45a6007404f613b60aaf85200ab9862299066204242f89a7c8033b1c356c998aa6cfc630f6cd9eba119ec1c6dc1f93e245982be4a847aee7d
- languageName: node
- linkType: hard
-
"streamx@npm:^2.15.0, streamx@npm:^2.21.0":
version: 2.22.1
resolution: "streamx@npm:2.22.1"
@@ -13917,16 +12929,6 @@ __metadata:
languageName: node
linkType: hard
-"systeminformation@npm:5.27.7":
- version: 5.27.7
- resolution: "systeminformation@npm:5.27.7"
- bin:
- systeminformation: lib/cli.js
- checksum: 10/8e9b2fc1836822bd09355933675fdaa40776b150b8afd3e8cedf2a2303f95f02aa592c0303eb46a68857f367bc2483159ba325b40d0b7deca776ec0615f743ad
- conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android)
- languageName: node
- linkType: hard
-
"tapable@npm:^2.1.1, tapable@npm:^2.2.0":
version: 2.2.3
resolution: "tapable@npm:2.2.3"
@@ -14119,13 +13121,6 @@ __metadata:
languageName: node
linkType: hard
-"throttleit@npm:^1.0.0":
- version: 1.0.0
- resolution: "throttleit@npm:1.0.0"
- checksum: 10/cfc5b156143a6c4c3a2265a9926fa4964ac3c71c746245cef00afb92359aba8ba3fd905afd97e3ff6403f57971f5e2cdf01cad631799448773ae81d8de5cade6
- languageName: node
- linkType: hard
-
"through2@npm:~2.0.0":
version: 2.0.5
resolution: "through2@npm:2.0.5"
@@ -14136,7 +13131,7 @@ __metadata:
languageName: node
linkType: hard
-"through@npm:2, through@npm:>=2.2.7 <3, through@npm:^2.3.8, through@npm:~2.3, through@npm:~2.3.1":
+"through@npm:>=2.2.7 <3":
version: 2.3.8
resolution: "through@npm:2.3.8"
checksum: 10/5da78346f70139a7d213b65a0106f3c398d6bc5301f9248b5275f420abc2c4b1e77c2abc72d218dedc28c41efb2e7c312cb76a7730d04f9c2d37d247da3f4198
@@ -14200,7 +13195,7 @@ __metadata:
languageName: node
linkType: hard
-"tinyglobby@npm:^0.2.13, tinyglobby@npm:^0.2.15, tinyglobby@npm:^0.2.9":
+"tinyglobby@npm:^0.2.15, tinyglobby@npm:^0.2.9":
version: 0.2.15
resolution: "tinyglobby@npm:0.2.15"
dependencies:
@@ -14217,13 +13212,6 @@ __metadata:
languageName: node
linkType: hard
-"tldts-core@npm:^6.1.61":
- version: 6.1.61
- resolution: "tldts-core@npm:6.1.61"
- checksum: 10/44e80c5e587ab868750613336ac43ec1164d112d394958c220e54820595f3bf7b443a30ef6c73cd99234a897e41b70a4102a2fb8a9d7b40854973ed4e73c75d7
- languageName: node
- linkType: hard
-
"tldts-core@npm:^7.0.17":
version: 7.0.17
resolution: "tldts-core@npm:7.0.17"
@@ -14231,17 +13219,6 @@ __metadata:
languageName: node
linkType: hard
-"tldts@npm:^6.1.32":
- version: 6.1.61
- resolution: "tldts@npm:6.1.61"
- dependencies:
- tldts-core: "npm:^6.1.61"
- bin:
- tldts: bin/cli.js
- checksum: 10/dd2e1783fa0be71276e303be7a33f2746777e49eb0783452b42501edfc5a33b4396b54bd49b9268fc7e71a7fec58fb91064bdc4c4a50e1a1ada615e57ffa4bd8
- languageName: node
- linkType: hard
-
"tldts@npm:^7.0.5":
version: 7.0.17
resolution: "tldts@npm:7.0.17"
@@ -14253,13 +13230,6 @@ __metadata:
languageName: node
linkType: hard
-"tmp@npm:~0.2.4":
- version: 0.2.5
- resolution: "tmp@npm:0.2.5"
- checksum: 10/dd4b78b32385eab4899d3ae296007b34482b035b6d73e1201c4a9aede40860e90997a1452c65a2d21aee73d53e93cd167d741c3db4015d90e63b6d568a93d7ec
- languageName: node
- linkType: hard
-
"to-regex-range@npm:^5.0.1":
version: 5.0.1
resolution: "to-regex-range@npm:5.0.1"
@@ -14276,15 +13246,6 @@ __metadata:
languageName: node
linkType: hard
-"tough-cookie@npm:^5.0.0":
- version: 5.0.0
- resolution: "tough-cookie@npm:5.0.0"
- dependencies:
- tldts: "npm:^6.1.32"
- checksum: 10/a98d3846ed386e399e8b470c1eb08a6a296944246eabc55c9fe79d629bd2cdaa62f5a6572f271fe0060987906bd20468d72a219a3b4cbe51086bea48d2d677b6
- languageName: node
- linkType: hard
-
"tough-cookie@npm:^6.0.0":
version: 6.0.0
resolution: "tough-cookie@npm:6.0.0"
@@ -14310,15 +13271,6 @@ __metadata:
languageName: node
linkType: hard
-"tree-kill@npm:1.2.2":
- version: 1.2.2
- resolution: "tree-kill@npm:1.2.2"
- bin:
- tree-kill: cli.js
- checksum: 10/49117f5f410d19c84b0464d29afb9642c863bc5ba40fcb9a245d474c6d5cc64d1b177a6e6713129eb346b40aebb9d4631d967517f9fbe8251c35b21b13cd96c7
- languageName: node
- linkType: hard
-
"treeverse@npm:^3.0.0":
version: 3.0.0
resolution: "treeverse@npm:3.0.0"
@@ -14414,15 +13366,6 @@ __metadata:
languageName: node
linkType: hard
-"tunnel-agent@npm:^0.6.0":
- version: 0.6.0
- resolution: "tunnel-agent@npm:0.6.0"
- dependencies:
- safe-buffer: "npm:^5.0.1"
- checksum: 10/7f0d9ed5c22404072b2ae8edc45c071772affd2ed14a74f03b4e71b4dd1a14c3714d85aed64abcaaee5fec2efc79002ba81155c708f4df65821b444abb0cfade
- languageName: node
- linkType: hard
-
"tunnel@npm:^0.0.6":
version: 0.0.6
resolution: "tunnel@npm:0.0.6"
@@ -14501,13 +13444,6 @@ __metadata:
languageName: node
linkType: hard
-"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0":
- version: 0.14.5
- resolution: "tweetnacl@npm:0.14.5"
- checksum: 10/04ee27901cde46c1c0a64b9584e04c96c5fe45b38c0d74930710751ea991408b405747d01dfae72f80fc158137018aea94f9c38c651cb9c318f0861a310c3679
- languageName: node
- linkType: hard
-
"type-check@npm:^0.4.0, type-check@npm:~0.4.0":
version: 0.4.0
resolution: "type-check@npm:0.4.0"
@@ -14524,13 +13460,6 @@ __metadata:
languageName: node
linkType: hard
-"type-fest@npm:^0.21.3":
- version: 0.21.3
- resolution: "type-fest@npm:0.21.3"
- checksum: 10/f4254070d9c3d83a6e573bcb95173008d73474ceadbbf620dd32d273940ca18734dff39c2b2480282df9afe5d1675ebed5499a00d791758748ea81f61a38961f
- languageName: node
- linkType: hard
-
"type-fest@npm:^0.6.0":
version: 0.6.0
resolution: "type-fest@npm:0.6.0"
@@ -14538,13 +13467,6 @@ __metadata:
languageName: node
linkType: hard
-"type-fest@npm:^0.8.0":
- version: 0.8.1
- resolution: "type-fest@npm:0.8.1"
- checksum: 10/fd4a91bfb706aeeb0d326ebd2e9a8ea5263979e5dec8d16c3e469a5bd3a946e014a062ef76c02e3086d3d1c7209a56a20a4caafd0e9f9a5c2ab975084ea3d388
- languageName: node
- linkType: hard
-
"type-fest@npm:^1.0.1":
version: 1.4.0
resolution: "type-fest@npm:1.4.0"
@@ -14903,13 +13825,6 @@ __metadata:
languageName: node
linkType: hard
-"untildify@npm:^4.0.0":
- version: 4.0.0
- resolution: "untildify@npm:4.0.0"
- checksum: 10/39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9
- languageName: node
- linkType: hard
-
"update-browserslist-db@npm:^1.1.1":
version: 1.1.1
resolution: "update-browserslist-db@npm:1.1.1"
@@ -14956,15 +13871,6 @@ __metadata:
languageName: node
linkType: hard
-"uuid@npm:^8.3.2":
- version: 8.3.2
- resolution: "uuid@npm:8.3.2"
- bin:
- uuid: dist/bin/uuid
- checksum: 10/9a5f7aa1d6f56dd1e8d5f2478f855f25c645e64e26e347a98e98d95781d5ed20062d6cca2eecb58ba7c84bc3910be95c0451ef4161906abaab44f9cb68ffbdd1
- languageName: node
- linkType: hard
-
"v8-compile-cache-lib@npm:^3.0.1":
version: 3.0.1
resolution: "v8-compile-cache-lib@npm:3.0.1"
@@ -15003,17 +13909,6 @@ __metadata:
languageName: node
linkType: hard
-"verror@npm:1.10.0":
- version: 1.10.0
- resolution: "verror@npm:1.10.0"
- dependencies:
- assert-plus: "npm:^1.0.0"
- core-util-is: "npm:1.0.2"
- extsprintf: "npm:^1.2.0"
- checksum: 10/da548149dd9c130a8a2587c9ee71ea30128d1526925707e2d01ed9c5c45c9e9f86733c66a328247cdd5f7c1516fb25b0f959ba754bfbe15072aa99ff96468a29
- languageName: node
- linkType: hard
-
"vite-bundle-analyzer@npm:^1.2.3":
version: 1.2.3
resolution: "vite-bundle-analyzer@npm:1.2.3"
@@ -15386,21 +14281,6 @@ __metadata:
languageName: node
linkType: hard
-"wait-on@npm:8.0.5":
- version: 8.0.5
- resolution: "wait-on@npm:8.0.5"
- dependencies:
- axios: "npm:^1.12.1"
- joi: "npm:^18.0.1"
- lodash: "npm:^4.17.21"
- minimist: "npm:^1.2.8"
- rxjs: "npm:^7.8.2"
- bin:
- wait-on: bin/wait-on
- checksum: 10/edfee086741a8630d583cb7799c7ef701d27c162cf3fea5aa7670f53a05cac572951a7070b624cff7d123f15c975e0ceceee37fc230fa68fb0b9e7a0b71ae467
- languageName: node
- linkType: hard
-
"walk-up-path@npm:^4.0.0":
version: 4.0.0
resolution: "walk-up-path@npm:4.0.0"
@@ -15601,17 +14481,6 @@ __metadata:
languageName: node
linkType: hard
-"wrap-ansi@npm:^6.2.0":
- version: 6.2.0
- resolution: "wrap-ansi@npm:6.2.0"
- dependencies:
- ansi-styles: "npm:^4.0.0"
- string-width: "npm:^4.1.0"
- strip-ansi: "npm:^6.0.0"
- checksum: 10/0d64f2d438e0b555e693b95aee7b2689a12c3be5ac458192a1ce28f542a6e9e59ddfecc37520910c2c88eb1f82a5411260566dba5064e8f9895e76e169e76187
- languageName: node
- linkType: hard
-
"wrap-ansi@npm:^8.1.0":
version: 8.1.0
resolution: "wrap-ansi@npm:8.1.0"