diff --git a/.github/workflows/e2e-cypress-12-ccy-1.10.yml b/.github/workflows/e2e-cypress-12-ccy-1.10.yml new file mode 100644 index 0000000..5b1c84b --- /dev/null +++ b/.github/workflows/e2e-cypress-12-ccy-1.10.yml @@ -0,0 +1,41 @@ +name: e2e-cypress-12-ccy-1.10 + +on: + push: + +jobs: + e2e-cypress-12-ccy-1.10: + if: "!contains(toJSON(github.event.commits.*.message), '[skip ci]')" + runs-on: ubuntu-latest + env: + DEBUG: currents:* + + strategy: + matrix: + node-version: ["18"] + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - name: Install dependencies + run: npm ci + + - name: Install Cypress 12.17.4 + run: cd ./packages/cypress-cloud | npm install cypress@12.17.4 + + - name: Build + run: npm run build + + - name: Run compatibility tests + working-directory: ./e2e/cypress-12-demo + env: + CURRENTS_API_KEY: YpYIAerb1rWuOFrvf7ciK8Za8koKgrtRfoDPboQUOjScnBv91m4qAXSDb8Rb57m9 + CURRENTS_RUN_BASE_URL: https://api.currents.dev/v1/runs/ + CURRENTS_PROJECT_ID: 2cI1I5 + CURRENTS_RECORD_KEY: YakSabgBLb7D40nZ + + run: > + npm run test diff --git a/.github/workflows/e2e-cypress-13-ccy-1.10.yml b/.github/workflows/e2e-cypress-13-ccy-1.10.yml new file mode 100644 index 0000000..75bd67e --- /dev/null +++ b/.github/workflows/e2e-cypress-13-ccy-1.10.yml @@ -0,0 +1,41 @@ +name: e2e-cypress-13-ccy-1.10 + +on: + push: + +jobs: + e2e-cypress-13-ccy-1.10: + if: "!contains(toJSON(github.event.commits.*.message), '[skip ci]')" + runs-on: ubuntu-latest + env: + DEBUG: currents:* + + strategy: + matrix: + node-version: ["18"] + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - name: Install dependencies + run: npm ci + + - name: Install Cypress 13.1.0 + run: cd ./packages/cypress-cloud | npm install cypress@13.1.0 + + - name: Build + run: npm run build + + - name: Run compatibility tests + working-directory: ./e2e/cypress-13-demo + env: + CURRENTS_API_KEY: YpYIAerb1rWuOFrvf7ciK8Za8koKgrtRfoDPboQUOjScnBv91m4qAXSDb8Rb57m9 + CURRENTS_RUN_BASE_URL: https://api.currents.dev/v1/runs/ + CURRENTS_PROJECT_ID: 2cI1I5 + CURRENTS_RECORD_KEY: YakSabgBLb7D40nZ + + run: > + npm run test diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..1bda9c1 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npm run format diff --git a/CHANGELOG.md b/CHANGELOG.md index 146a8c3..efc5391 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,86 +1,72 @@ - - # [1.10.0-beta.5](https://github.com/currents-dev/cypress-cloud/compare/v1.10.0-beta.4...v1.10.0-beta.5) (2023-09-14) - ### Bug Fixes -* pick test:after results explicitly ([67e6a0d](https://github.com/currents-dev/cypress-cloud/commit/67e6a0df78d3cff32d101d1bbe3f119c0766a9af)) +- pick test:after results explicitly ([67e6a0d](https://github.com/currents-dev/cypress-cloud/commit/67e6a0df78d3cff32d101d1bbe3f119c0766a9af)) # [1.10.0-beta.4](https://github.com/currents-dev/cypress-cloud/compare/v1.10.0-beta.3...v1.10.0-beta.4) (2023-09-11) - ### Bug Fixes -* backfill config ([ed8a777](https://github.com/currents-dev/cypress-cloud/commit/ed8a777f6299f0778eeabe96534b52bcd3472d0f)) -* coverage uploads ([6a26e40](https://github.com/currents-dev/cypress-cloud/commit/6a26e4077cab73f75c64235472e8695ebcf14087)) +- backfill config ([ed8a777](https://github.com/currents-dev/cypress-cloud/commit/ed8a777f6299f0778eeabe96534b52bcd3472d0f)) +- coverage uploads ([6a26e40](https://github.com/currents-dev/cypress-cloud/commit/6a26e4077cab73f75c64235472e8695ebcf14087)) # [1.10.0-beta.3](https://github.com/currents-dev/cypress-cloud/compare/v1.10.0-beta.2...v1.10.0-beta.3) (2023-09-08) - ### Bug Fixes -* issue 179 fixes ([cf8ca5d](https://github.com/currents-dev/cypress-cloud/commit/cf8ca5d5f71b69a6fc7d1098b1bb0b42d27427d2)) +- issue 179 fixes ([cf8ca5d](https://github.com/currents-dev/cypress-cloud/commit/cf8ca5d5f71b69a6fc7d1098b1bb0b42d27427d2)) # [1.10.0-beta.2](https://github.com/currents-dev/cypress-cloud/compare/v1.10.0-beta.1...v1.10.0-beta.2) (2023-09-06) - ### Bug Fixes -* combine standalone with spec:after results ([0d7b2eb](https://github.com/currents-dev/cypress-cloud/commit/0d7b2eb02ee8aeb0e6ff0627f3afbf0d641bd581)) -* set test id for pending tests ([f37312e](https://github.com/currents-dev/cypress-cloud/commit/f37312e0651954481b1e3fb89552606bea3dde38)) - +- combine standalone with spec:after results ([0d7b2eb](https://github.com/currents-dev/cypress-cloud/commit/0d7b2eb02ee8aeb0e6ff0627f3afbf0d641bd581)) +- set test id for pending tests ([f37312e](https://github.com/currents-dev/cypress-cloud/commit/f37312e0651954481b1e3fb89552606bea3dde38)) ### Features -* support cypres@13+ ([45fd903](https://github.com/currents-dev/cypress-cloud/commit/45fd9036ad686f7edfcb7859db64ce79692dd429)) +- support cypres@13+ ([45fd903](https://github.com/currents-dev/cypress-cloud/commit/45fd9036ad686f7edfcb7859db64ce79692dd429)) # [1.10.0-beta.1](https://github.com/currents-dev/cypress-cloud/compare/v1.10.0-beta.0...v1.10.0-beta.1) (2023-09-06) - ### Bug Fixes -* combine standalone with spec:after results ([0d7b2eb](https://github.com/currents-dev/cypress-cloud/commit/0d7b2eb02ee8aeb0e6ff0627f3afbf0d641bd581)) - +- combine standalone with spec:after results ([0d7b2eb](https://github.com/currents-dev/cypress-cloud/commit/0d7b2eb02ee8aeb0e6ff0627f3afbf0d641bd581)) ### Features -* support cypres@13+ ([45fd903](https://github.com/currents-dev/cypress-cloud/commit/45fd9036ad686f7edfcb7859db64ce79692dd429)) +- support cypres@13+ ([45fd903](https://github.com/currents-dev/cypress-cloud/commit/45fd9036ad686f7edfcb7859db64ce79692dd429)) # [1.10.0-beta.0](https://github.com/currents-dev/cypress-cloud/compare/v1.9.3...v1.10.0-beta.0) (2023-08-25) - ### Features -* [CSR-213] Support Code Coverage ([#174](https://github.com/currents-dev/cypress-cloud/issues/174)) ([b29d738](https://github.com/currents-dev/cypress-cloud/commit/b29d738f9a5d54e3214dfd05b66fc053aa3194a8)) +- [CSR-213] Support Code Coverage ([#174](https://github.com/currents-dev/cypress-cloud/issues/174)) ([b29d738](https://github.com/currents-dev/cypress-cloud/commit/b29d738f9a5d54e3214dfd05b66fc053aa3194a8)) ## [1.9.3](https://github.com/currents-dev/cypress-cloud/compare/v1.9.2...v1.9.3) (2023-07-27) - ### Bug Fixes -* retry on ETIMEDOUT, add network req timeout ([#172](https://github.com/currents-dev/cypress-cloud/issues/172)) ([030ae70](https://github.com/currents-dev/cypress-cloud/commit/030ae7086eeb75397c729a79c8eefb9aa2e61d7a)) +- retry on ETIMEDOUT, add network req timeout ([#172](https://github.com/currents-dev/cypress-cloud/issues/172)) ([030ae70](https://github.com/currents-dev/cypress-cloud/commit/030ae7086eeb75397c729a79c8eefb9aa2e61d7a)) ## [1.9.2](https://github.com/currents-dev/cypress-cloud/compare/v1.9.1...v1.9.2) (2023-07-21) - ### Bug Fixes -* exit with status 1 when no spec files found ([#169](https://github.com/currents-dev/cypress-cloud/issues/169)) ([9c7bfd2](https://github.com/currents-dev/cypress-cloud/commit/9c7bfd2a9bc7201af5ee9178c5b7c92cf224955e)), closes [#165](https://github.com/currents-dev/cypress-cloud/issues/165) +- exit with status 1 when no spec files found ([#169](https://github.com/currents-dev/cypress-cloud/issues/169)) ([9c7bfd2](https://github.com/currents-dev/cypress-cloud/commit/9c7bfd2a9bc7201af5ee9178c5b7c92cf224955e)), closes [#165](https://github.com/currents-dev/cypress-cloud/issues/165) ## [1.9.1](https://github.com/currents-dev/cypress-cloud/compare/v1.9.0...v1.9.1) (2023-07-06) - ### Bug Fixes -* prevent shared execution state ([#157](https://github.com/currents-dev/cypress-cloud/issues/157)) ([48cf247](https://github.com/currents-dev/cypress-cloud/commit/48cf24712a5362f5557d3a689e891d25e1491638)) +- prevent shared execution state ([#157](https://github.com/currents-dev/cypress-cloud/issues/157)) ([48cf247](https://github.com/currents-dev/cypress-cloud/commit/48cf24712a5362f5557d3a689e891d25e1491638)) ## [1.9.1-beta.0](https://github.com/currents-dev/cypress-cloud/compare/v1.9.0...v1.9.1-beta.0) (2023-07-06) - ### Bug Fixes -* prevent shared execution state ([f71ad89](https://github.com/currents-dev/cypress-cloud/commit/f71ad89b02df80d9bf5e9c0da7e4a2c0ad8212dc)) +- prevent shared execution state ([f71ad89](https://github.com/currents-dev/cypress-cloud/commit/f71ad89b02df80d9bf5e9c0da7e4a2c0ad8212dc)) # [1.9.0](https://github.com/currents-dev/cypress-cloud/compare/v1.9.0-beta.0...v1.9.0) (2023-07-04) @@ -377,4 +363,4 @@ - implement generic http client with retries ([a9711bd](https://github.com/currents-dev/cypress-cloud/commit/a9711bde1fbb2cd37dbc8979593159d183bfa866)) - improve setup steps ([9bf16fe](https://github.com/currents-dev/cypress-cloud/commit/9bf16fe5f3773db4aa2f169515303ea6d0973da6)) - separate stdout per spec file ([a9d01c3](https://github.com/currents-dev/cypress-cloud/commit/a9d01c349cbfe140a568a452b0e7163e6d27f2db)) -- setup github actions ([d439f56](https://github.com/currents-dev/cypress-cloud/commit/d439f5660698177087fcc2e7a61c64ea263816f6)) \ No newline at end of file +- setup github actions ([d439f56](https://github.com/currents-dev/cypress-cloud/commit/d439f5660698177087fcc2e7a61c64ea263816f6)) diff --git a/e2e/cypress-12-demo/currents.config.js b/e2e/cypress-12-demo/currents.config.js new file mode 100644 index 0000000..e56c5f5 --- /dev/null +++ b/e2e/cypress-12-demo/currents.config.js @@ -0,0 +1,13 @@ +module.exports = { + e2e: { + batchSize: 4, // how many specs to send in one batch + }, + component: { + batchSize: 5, // how many specs to send in one batch + }, + // eslint-disable-next-line turbo/no-undeclared-env-vars + projectId: !!(process.env.GITHUB_ACTION || process.env.CIRCLE_BRANCH) + ? "Ij0RfK" + : "l4zuz8", + // cloudServiceUrl: "http://localhost:1234", +}; diff --git a/e2e/cypress-12-demo/cypress.config.ts b/e2e/cypress-12-demo/cypress.config.ts new file mode 100644 index 0000000..3aa2391 --- /dev/null +++ b/e2e/cypress-12-demo/cypress.config.ts @@ -0,0 +1,26 @@ +import { defineConfig } from "cypress"; +import currents from "cypress-cloud/plugin"; + +module.exports = defineConfig({ + e2e: { + baseUrl: "https://todomvc.com/examples/vanillajs", + supportFile: "cypress/support/e2e.ts", + specPattern: "cypress/*/**/*.spec.js", + setupNodeEvents(on, config) { + require("@cypress/grep/src/plugin")(config); + // require("cypress-terminal-report/src/installLogsPrinter")(on); + return currents(on, config); + }, + }, + + component: { + specPattern: ["pages/__tests__/*.spec.tsx"], + setupNodeEvents(on, config) { + return currents(on, config); + }, + devServer: { + framework: "next", + bundler: "webpack", + }, + }, +}); diff --git a/e2e/cypress-12-demo/cypress/e2e/a.spec.js b/e2e/cypress-12-demo/cypress/e2e/a.spec.js new file mode 100644 index 0000000..0ba5b60 --- /dev/null +++ b/e2e/cypress-12-demo/cypress/e2e/a.spec.js @@ -0,0 +1,7 @@ +describe('Failing test with 2 attempts', () => { + it('should try 2 times', { + retries: 2, + }, () => { + cy.wrap(false).should('be.true'); + }); +}); diff --git a/e2e/cypress-12-demo/cypress/e2e/b.spec.js b/e2e/cypress-12-demo/cypress/e2e/b.spec.js new file mode 100644 index 0000000..87843a6 --- /dev/null +++ b/e2e/cypress-12-demo/cypress/e2e/b.spec.js @@ -0,0 +1,21 @@ +let attempt = 0; +describe('Failing test with 2 attempts, passed test and flaky test with 2 attempts', () => { + it('should try 2 times', { + retries: 2, + }, () => { + cy.wrap(false).should('be.true'); + }); + + it('should assert that true is true', () => { + cy.wrap(true).should('be.true'); + }); + + it('should fail on the first attempt and pass on the second', { retries: 2 }, () => { + if (attempt === 0) { + attempt++; + cy.wrap(false).should('be.true'); // This will fail on the first attempt + } else { + cy.wrap(true).should('be.true'); // This will pass on the second attempt + } + }); +}); diff --git a/e2e/cypress-12-demo/cypress/e2e/c.spec.js b/e2e/cypress-12-demo/cypress/e2e/c.spec.js new file mode 100644 index 0000000..47486ad --- /dev/null +++ b/e2e/cypress-12-demo/cypress/e2e/c.spec.js @@ -0,0 +1,5 @@ +describe('Ignored test', () => { + it.skip('should be a skipped test', () => { + cy.wrap(false).should('be.true'); + }); +}); diff --git a/e2e/cypress-12-demo/cypress/e2e/d.spec.js b/e2e/cypress-12-demo/cypress/e2e/d.spec.js new file mode 100644 index 0000000..405f45f --- /dev/null +++ b/e2e/cypress-12-demo/cypress/e2e/d.spec.js @@ -0,0 +1,13 @@ +describe('Passed test with screenshot, passed test with no screenshots', () => { + it('should assert and take a screenshot', () => { + // Assert that true is true + cy.wrap(true).should('be.true'); + + // Take a screenshot + cy.screenshot('internal-assert-screenshot'); + }); + + it('should assert that true is true', () => { + cy.wrap(true).should('be.true'); + }); +}); diff --git a/e2e/cypress-12-demo/cypress/support/commands.ts b/e2e/cypress-12-demo/cypress/support/commands.ts new file mode 100644 index 0000000..a8278b3 --- /dev/null +++ b/e2e/cypress-12-demo/cypress/support/commands.ts @@ -0,0 +1,119 @@ +/// +// *********************************************** +// 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 +// } +// } +// } + +// *********************************************** +// This example commands.js shows you how to +// create the custom commands: 'createDefaultTodos' +// and 'createTodo'. +// +// The commands.js file is a great place to +// modify existing commands and create custom +// commands for use throughout your tests. +// +// You can read more about custom commands here: +// https://on.cypress.io/commands +// *********************************************** + +Cypress.Commands.add("createDefaultTodos", function () { + let TODO_ITEM_ONE = "buy some cheese"; + let TODO_ITEM_TWO = "feed the cat"; + let TODO_ITEM_THREE = "book a doctors appointment"; + + // begin the command here, which by will display + // as a 'spinning blue state' in the UI to indicate + // the command is running + let cmd = Cypress.log({ + name: "create default todos", + message: [], + consoleProps() { + // we're creating our own custom message here + // which will print out to our browsers console + // whenever we click on this command + return { + "Inserted Todos": [TODO_ITEM_ONE, TODO_ITEM_TWO, TODO_ITEM_THREE], + }; + }, + }); + + // additionally we pass {log: false} to all of our + // sub-commands so none of them will output to + // our command log + + cy.get(".new-todo", { log: false }) + .type(`${TODO_ITEM_ONE}{enter}`, { log: false }) + .type(`${TODO_ITEM_TWO}{enter}`, { log: false }) + .type(`${TODO_ITEM_THREE}{enter}`, { log: false }); + + cy.get(".todo-list li", { log: false }).then(function ($listItems) { + // once we're done inserting each of the todos + // above we want to return the .todo-list li's + // to allow for further chaining and then + // we want to snapshot the state of the DOM + // and end the command so it goes from that + // 'spinning blue state' to the 'finished state' + cmd.set({ $el: $listItems }).snapshot().end(); + }); +}); + +Cypress.Commands.add("createTodo", function (todo) { + let cmd = Cypress.log({ + name: "create todo", + message: todo, + consoleProps() { + return { + "Inserted Todo": todo, + }; + }, + }); + + // create the todo + cy.get(".new-todo", { log: false }).type(`${todo}{enter}`, { log: false }); + + // now go find the actual todo + // in the todo list so we can + // easily alias this in our tests + // and set the $el so its highlighted + cy.get(".todo-list", { log: false }) + .contains("li", todo.trim(), { log: false }) + .then(function ($li) { + // set the $el for the command so + // it highlights when we hover over + // our command + cmd.set({ $el: $li }).snapshot().end(); + }); +}); diff --git a/e2e/cypress-12-demo/cypress/support/component-index.html b/e2e/cypress-12-demo/cypress/support/component-index.html new file mode 100644 index 0000000..3e16e9b --- /dev/null +++ b/e2e/cypress-12-demo/cypress/support/component-index.html @@ -0,0 +1,14 @@ + + + + + + + Components App + +
+ + +
+ + \ No newline at end of file diff --git a/e2e/cypress-12-demo/cypress/support/component.ts b/e2e/cypress-12-demo/cypress/support/component.ts new file mode 100644 index 0000000..e11a5fe --- /dev/null +++ b/e2e/cypress-12-demo/cypress/support/component.ts @@ -0,0 +1,39 @@ +// *********************************************************** +// 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/react18"; + +// 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() diff --git a/e2e/cypress-12-demo/cypress/support/e2e.ts b/e2e/cypress-12-demo/cypress/support/e2e.ts new file mode 100644 index 0000000..32bd259 --- /dev/null +++ b/e2e/cypress-12-demo/cypress/support/e2e.ts @@ -0,0 +1,9 @@ +import registerCypressGrep from "@cypress/grep/src/support"; +require("cypress-terminal-report/src/installLogsCollector")(); +require("cypress-cloud/support"); +require("./commands"); + +registerCypressGrep(); +beforeEach(() => { + cy.visit("/"); +}); diff --git a/e2e/cypress-12-demo/data-references/ccy-1.10-cypress-12/currents-api-output-reference.json b/e2e/cypress-12-demo/data-references/ccy-1.10-cypress-12/currents-api-output-reference.json new file mode 100644 index 0000000..0680ce9 --- /dev/null +++ b/e2e/cypress-12-demo/data-references/ccy-1.10-cypress-12/currents-api-output-reference.json @@ -0,0 +1 @@ +{"status":"OK","data":{"runId":"77cec387a5c57c87","projectId":"2cI1I5","createdAt":"2023-09-08T13:42:31.499Z","tags":[],"cypressVersion":"12.17.4","cancellation":null,"timeout":{"isTimeout":false},"groups":[{"groupId":"run-api-smoke-2023-09-08T13:42:28.508Z","platform":{"osName":"darwin","osVersion":"22.5.0","browserName":"Electron","browserVersion":"106.0.5249.51"},"createdAt":"2023-09-08T13:42:31.499Z","instances":{"overall":4,"claimed":4,"complete":4,"passes":2,"failures":2},"tests":{"overall":7,"passes":4,"failures":2,"pending":1,"skipped":0,"retries":1,"flaky":1}}],"meta":{"ciBuildId":"run-api-smoke-2023-09-08T13:42:28.508Z","commit":{"branch":"fix/cypress-13-validation","remoteOrigin":null,"authorEmail":"miguelangarano@gmail.com","authorName":"Miguel Langarano","message":"added viewer for results comparison\n","sha":"675f830a7b1fb6ff74de7830a312bc8fb417f8ce"},"platform":{"osName":"darwin","osVersion":"22.5.0","browserName":"Electron","browserVersion":"106.0.5249.51"}},"specs":[{"groupId":"run-api-smoke-2023-09-08T13:42:28.508Z","spec":"cypress/e2e/a.spec.js","instanceId":"qMAYSIcFMtXQ","claimedAt":"2023-09-08T13:42:31.887Z","completedAt":"2023-09-08T13:42:52.389Z","machineId":"yHaFqM5V6gKh","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/qMAYSIcFMtXQ_tJPh3Axtz77x.mp4?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=OfUb0HaYtfK9IrP3c2-UIHT7bmm~DCGqySgHcfQmZCYLbB~W~pI3gjtJ1NvDUA1SYzL3PrbPe6UVtmhdzd0ABgsIBTwzqUdzEuMOofUDNgI7BsPongzGm86VJ~Lg5aw9ZaV861cAbrn-FAV1x5EQvYOE5HTd1PYdHsp5CdR80FEyPUvJqbFRxqkhaVjFWHdSI5kjOUoXhB3dUBMZPQM2ps1b2zTGJ99g2OZ3orwgTJJwh1dFt57-nOnWBH1iceiqnw0qmf1i-dDtP0VYXqnfC8Z4FTocNwhmDi1fsWaYhXWGrurDSUrmzUv8kDv85y~qEGrIvyzdgvvro2M1eJgZhw__","stats":{"duration":13846,"endedAt":"2023-09-08T13:42:50.598Z","startedAt":"2023-09-08T13:42:36.752Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1,"wallClockDuration":13846,"wallClockStartedAt":"2023-09-08T13:42:36.752Z","wallClockEndedAt":"2023-09-08T13:42:50.598Z"},"screenshots":[{"testAttemptIndex":0,"size":349423,"takenAt":"2023-09-08T13:42:41.446Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":304,"testId":"r0","name":"screenshot","screenshotId":"OIFkUXw8B2U8OqJAdZ0o1","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/ZlKLfoSVgYCc.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=a1sVvwQiIT8GjfjP60bArZsnt1IebqEkbOqTKL-Xu1v2XL3dcFbJoOMORT1xqieGVa5Gs2qgWMJwxQ7yUg9UiEmIJ4bMHowVNm41DYEPH9zeM7ZxSBwonCixdMboQY2C2LSqjTjaJhogvFLPerAdlq7ZijB3RS9c8tEndwe5xW2DgpmRdCMhG~Ugu6jQjprvzCbCUQOL4czb3AHJv9o51rzandeUBUnIx7ExZ9H20JJUMvVQOoJ4IipfFFqpy5W~AHrhgZR8MCD1pfCIE7HbvB0btm6OXudUKdIxFebbj7aaZdoM6mXju3N~u-8rMzZLE6lJTggMui6zj-8B4gJEiQ__","height":0,"width":0},{"testAttemptIndex":1,"size":360089,"takenAt":"2023-09-08T13:42:45.908Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":214,"testId":"r0","name":"screenshot","screenshotId":"5BJFDWKXTwbubxcj1owJc","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/7DEScNt5RYar.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=jWIwCe42mSjR~2ZTEPdkvqzQTH6pidjOPERzDf45hB9Rfw0caJz19mO9LGWDzl6ROQs22pgUYj754EFQrs-6klMYH~1RA162ajPujkraCKvKh0r0mcUjI7XMbtJbH-2ptHFjVwbT~hks7v2WXWY1Z6BEdkBWFQc~9QcksRpdD6GlpdFdEoTZJOqA4DAGDog8oLsf0vy3KjwBMUmBGg-Ss8l9xkK9kmewK-x3JLCSpc~edwI3zDGenxYadT7ZjTI--lBuRCuo0s8bPwHLM87XpvRXwicT~J5Sx7XZeyeJHruA85f4kB8NCxeeeQ22hFNCZeru~QGVil5SpSXnjjTo4g__","height":0,"width":0},{"testAttemptIndex":2,"size":363302,"takenAt":"2023-09-08T13:42:50.334Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":206,"testId":"r0","name":"screenshot","screenshotId":"QN2J2LHZGeuCrOyxOsQsG","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/iFNMNa1CHXLX.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=FgBKvyaLOOmlB6HwQSaO2-2PbHgv6Ngn9Ot6zP~KoHBq6KsH3NIbq9QV97RIRwrzB5wPGCAoNj-rmxYhhO5iSFlXrjtDtHjklibsI6Qbh7BhVI7FaCizIHI7ojTS02xVaCmSTP55jHbKkosRjZo1mVFJUq2ra~Ob8O1ZbFUnVuLVyURUNPrOrfhjs~efoemi1dz6ecYIBkqGybDe82vhyhcmSFzu6G1gfpy1pv0kq4Vp4YK70VCDkG64btpLcvmMKkvpznhGjRiR7PaamYy7WL8UQriVZKD5QkAQsl8yh6Ms2T3zjnsYbQUhkVAt65D2l20uKNs4WGmnykr9tyKqnQ__","height":0,"width":0}],"exception":null,"flaky":0}},{"groupId":"run-api-smoke-2023-09-08T13:42:28.508Z","spec":"cypress/e2e/b.spec.js","instanceId":"qdTJDmiKQ2wa","claimedAt":"2023-09-08T13:42:31.904Z","completedAt":"2023-09-08T13:43:22.717Z","machineId":"yHaFqM5V6gKh","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/qdTJDmiKQ2wa_ukHle2cAQBAs.mp4?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=XWbRzVvrvQm9SGhIYTQB8o-8d1T841TkfYYLvY6u0qrZXgI9BzK4T96QLjbcXgJfClDuYIZKI0lsVtYWg-vVoKixOmSnY7AGLQZ5bcnVGJ93lh99aGt6v2~wnGeSZkdrBNtgc4SZ0rfidmoDnebbH3qrOP8F7pjKLosL3RMHIOGPTovJvfaUyEk07ZEPKAjj4PUrCyOs1aiIHnNItg9mamv4EVdMUfj0Gh261d4dZRJJzvliBZlqISNScpEbXCi9UGSH0PveVR~eI8bcXy3~n8~TcxkcV5cjD781XNhVNq2Ji53IWyfchaEGcwxjvkj-ZgA2~t0BsN8WCNTn~Hs--g__","stats":{"duration":18212,"endedAt":"2023-09-08T13:43:20.716Z","startedAt":"2023-09-08T13:43:02.504Z","failures":1,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":3,"wallClockDuration":18212,"wallClockStartedAt":"2023-09-08T13:43:02.504Z","wallClockEndedAt":"2023-09-08T13:43:20.716Z"},"screenshots":[{"testAttemptIndex":0,"size":374162,"takenAt":"2023-09-08T13:43:06.785Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":258,"testId":"r0","name":"screenshot","screenshotId":"QgWsuBQRTZMQOrhnro_ro","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/horBZ3DuOMGr.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=ZvoziF30y~hzSoHR3rVM2YPJbz0KtwR1XInqIWj2aD5Q4HBalxHaWj9VmNc9Y3nGEMzaNIDkDg7mfeH73eZ5f9xZUQj9jPVjELojuHTlNaDNv98M7Ov1btFE2wS7zYWJh7wVmbTWh-MR8kNzRBHt5mWrO3PnZMY8RQDjt02MdIOPk-tYjUeQaVHcEHBbapy3G1gbwLcp-XinsZ32mO24Fqnh6avxHfBR4E1I1Flh25Uiyy0wQcgWgg6eXnqXcYjEmaLHqPsI0Amg8Purk5duteZUF0Cu9WTVwL6TI7UawutSwQFWHvEs3hQc4zEtYGD7OS7teBRQhs8cJJ7sA6UoHw__","height":0,"width":0},{"testAttemptIndex":1,"size":377830,"takenAt":"2023-09-08T13:43:11.191Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":281,"testId":"r0","name":"screenshot","screenshotId":"iYc4VXEvkJ5Z8TbRDWsZd","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/3w09MBuTuFWG.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=LX5yKw0zEy3w66Ca1DC1QY-Twoler9DEp6qffW18oXeZj0Q-ke9G8z~BFXpErD5QTXJLgHjWaqPm6JObfcoQ7K4~8W9Bx6tjaPeVDcE~x9ZQ5wajx48eJE-eifCIpb6xzPufyfSMx7b~qqKgvo6dv0v1bke700UQ7cMotm1r-ky~JzF4Mtfbo-opuBhbMki0y7tAiDQqOAk1lk9~17pdYDK1NF17ycKmj~gMzAWaroMwX-HiOdV-6NAFNnm0ZFUZ-7aoIEiD3U8PocmQvnKdhu40Ptvv3pHkyyp8OQuzyG12JASt5~jcV4NmYvqIMu92u57a~cl8kkmyUyAL~3gK8Q__","height":0,"width":0},{"testAttemptIndex":2,"size":375503,"takenAt":"2023-09-08T13:43:15.688Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":233,"testId":"r0","name":"screenshot","screenshotId":"N7VLnS5SoBxKEdpk7dOYp","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/u22UHn3JZ0Gc.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=PbufeWtMwI0KP6iJwJrQJFvAtk9kbpXibGoSIQJ8u9sD2W3w~mYf0UdhcwdHjVeqjgujG-z58GKOpMTpYsSdvu3VGEFl7j4b4bmWUBNNmmwU80mEEN-CNbWzUj70cxX5ZjX7RsTNBDptiFL03aAMBV1RjoRa4d6oKVHNqFVwrMgPzZKaiRKU7lSsWjxb89r3m4PEWluDidKmP-vQ2sdv3qorZa~BGumiIRI9-aPdORky6~QlTH3lNNcfw-uVQs3w51mq1IZjO7shnlhs-HLYXAv3tgGqsYJRAbCvpzvngtUEnqHKYCVMTy7-V0ZJuAB0XawyABIH~ds9MJgRL5CqaA__","height":0,"width":0},{"testAttemptIndex":0,"size":378982,"takenAt":"2023-09-08T13:43:20.250Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":209,"testId":"r2","name":"screenshot","screenshotId":"0FcsNENWstOxPmSzmcyDS","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/bVytB6veRTaW.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=I5kRRfAu~qmfL6u8z8hrzz95Neg5Rhy8FyvPeMnp99ApitxlcL6sb-CWX3PJiijxWKb19RwDUHGJ7FINKEHSZSQJNG1KONd641odmnrArHoiijAnVFqK-lc5xbrA7R~YfrxgxTl~ScohGSi7zFcqG0jt~NCcNq4smTdrLwb8zVt-M9MXuNvXHX9spjw1cAz3UrDjEtp6~oeDfTudKGgIwWZdyUidv0UecyOoyWWP3KwDgckyRMXJrz79nLzeah87IVyzCrU4K~JDimNQzpWV58tPJ2JUbrKhyNSepn~swbk7f0haPWjhzJFQe7DMX4Md7CFYhLJVVy-k0ZERLkwwgQ__","height":0,"width":0}],"exception":null,"flaky":1}},{"groupId":"run-api-smoke-2023-09-08T13:42:28.508Z","spec":"cypress/e2e/c.spec.js","instanceId":"YJXj6GeHgi9Z","claimedAt":"2023-09-08T13:42:31.898Z","completedAt":"2023-09-08T13:43:01.593Z","machineId":"yHaFqM5V6gKh","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/YJXj6GeHgi9Z_3az7f5VZ0AUl.mp4?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=r31DkISnKQrj5va9ZeXFwGvdeDV~T~P4FKSzBWyeaNSrH-3wzAb7Xk6ZcT8w7X~2Up0EVIy6FuPWX6Xytnix-LL3tuZZtiMRE61LvnoZtPcURzln-HTJc-jQWKjO8aamqwTaZC~imnkudC-SMLjMUrbAgNtdNiHBgamQdVujmmH2-PIEUMHwmcqsqsXR4nt6~qDLXdrf~xpWLN6p1aTjbCAJ4alkvo13vEN6i2rJXyKWqr~XZbvuNQBL~Pkhq7fkPBZTZcOBbIm4ztXh3AUEPHLA8i8Bbf6Di6DejJsUeov2vvkA5H9y9NJfuwlKmKWoOO9iRsc3LqapF0t8JCux8Q__","stats":{"duration":67,"endedAt":"2023-09-08T13:43:00.018Z","startedAt":"2023-09-08T13:42:59.951Z","failures":0,"passes":0,"pending":1,"skipped":0,"suites":1,"tests":1,"wallClockDuration":67,"wallClockStartedAt":"2023-09-08T13:42:59.951Z","wallClockEndedAt":"2023-09-08T13:43:00.018Z"},"screenshots":[],"exception":null,"flaky":0}},{"groupId":"run-api-smoke-2023-09-08T13:42:28.508Z","spec":"cypress/e2e/d.spec.js","instanceId":"Mzlt7nMYwIdn","claimedAt":"2023-09-08T13:42:31.892Z","completedAt":"2023-09-08T13:42:58.850Z","machineId":"yHaFqM5V6gKh","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/Mzlt7nMYwIdn_KLFYL9MMJTat.mp4?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=InSU3itmKaS4fua2YC1Tz8FLKmg-~ilVxh5LzwiTzHKdgADnAIz35i8xz-pA-GB9fncy6C3zprnrJuBgtDSLi-F25bcUTJsRV~yYZbV9tIaJJDqdM~Ny3a4DGDEIUP~5-MbsuZg~r5F7QPMQ95QV88l1Dv-VJnDnGNeo~IlvkaZOWicdkuh1A0NKnPLuxiXRnpnWQM2roQeICgngp75Y9bxzbeQ2wyd4~Vp0Yj0VOBN~NPY-7cUZZ9Z60Hy2MF0HK3fZrYJf~1CvLm7Rn0XLCL2qrgqR5dT~jrVyz5znCXacjD5JpbYe7uVFOFDaOcKnisrtyaaRLiAG2ppW4GHxXg__","stats":{"duration":1108,"endedAt":"2023-09-08T13:42:57.027Z","startedAt":"2023-09-08T13:42:55.919Z","failures":0,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":2,"wallClockDuration":1108,"wallClockStartedAt":"2023-09-08T13:42:55.919Z","wallClockEndedAt":"2023-09-08T13:42:57.027Z"},"screenshots":[{"testAttemptIndex":0,"size":234576,"takenAt":"2023-09-08T13:42:56.156Z","dimensions":{"width":2000,"height":1320},"multipart":true,"pixelRatio":2,"name":"internal-assert-screenshot","specName":"d.spec.js","scaled":false,"blackout":[],"duration":732,"testId":"r0","screenshotId":"x2G5Ca6DBxNl3zzjv9EDG","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/7Dehjgyld5N2.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=vh~0BbcrzKw6aFw36cTA5LBHwkxgprOw0ChNElg69NFNlrZI2nIVEORd4ykB4~U8OpAnRUTg4Qr1Xtyk2vWgSyuf7L3PDJwHnCaz7v~DMVqCBemdr0MllYEIMc6lFjsEu3-5HS6~lN3SFzmboZj4~ea3fJ4AF2SWu3nChI7TacHXEEUMW26A5B8A-qrnNFfngf8vcYoKiNL2pTsuPQbU0kyZEBWRybcySBnsV4NimJYX45jK-5LgBuVtS3ZADyM~NF1NzAC8-ZwG55J6Z5B45Zrtj0pyLNPXhR6jnGSxJMAOhT9XWYGeWo453OVEfe-3pzZBLKj3A7M6ai2AcToIRg__","height":0,"width":0}],"exception":null,"flaky":0}}],"completionState":"COMPLETE","status":"FAILED"}} \ No newline at end of file diff --git a/e2e/cypress-12-demo/data-references/ccy-1.10-cypress-12/cypress-cloud-output-reference.json b/e2e/cypress-12-demo/data-references/ccy-1.10-cypress-12/cypress-cloud-output-reference.json new file mode 100644 index 0000000..c30994f --- /dev/null +++ b/e2e/cypress-12-demo/data-references/ccy-1.10-cypress-12/cypress-cloud-output-reference.json @@ -0,0 +1,1493 @@ +{ + "totalDuration": 33233, + "totalSuites": 4, + "totalPending": 1, + "totalFailed": 2, + "totalSkipped": 0, + "totalPassed": 4, + "totalTests": 7, + "runs": [ + { + "stats": { + "duration": 13846, + "endedAt": "2023-09-08T13:42:50.598Z", + "startedAt": "2023-09-08T13:42:36.752Z", + "failures": 1, + "passes": 0, + "pending": 0, + "skipped": 0, + "suites": 1, + "tests": 1 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 0, + "pending": 0, + "failures": 1, + "start": "2023-09-08T13:42:36.754Z", + "end": "2023-09-08T13:42:50.611Z", + "duration": 13857 + }, + "spec": { + "fileExtension": ".js", + "baseName": "a.spec.js", + "fileName": "a", + "specFileExtension": ".spec.js", + "relativeToCommonRoot": "a.spec.js", + "specType": "integration", + "name": "cypress/e2e/a.spec.js", + "relative": "cypress/e2e/a.spec.js", + "absolute": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js" + }, + "error": null, + "video": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/a.spec.js.mp4", + "shouldUploadVideo": true, + "hooks": [ + { + "hookId": "h1", + "hookName": "before each", + "title": [ + "\"before each\" hook" + ], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}" + }, + { + "hookId": "h2", + "hookName": "before each", + "title": [ + "\"before each\" hook" + ], + "body": "function () {\n cy.visit(\"/\");\n}" + }, + { + "hookId": "h4", + "hookName": "after each", + "title": [ + "\"after each\" hook" + ], + "body": "function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }" + }, + { + "hookId": "h5", + "hookName": "after each", + "title": [ + "\"after each\" hook" + ], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}" + }, + { + "hookId": "h3", + "hookName": "after all", + "title": [ + "\"after all\" hook" + ], + "body": "function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }" + } + ], + "tests": [ + { + "testId": "r3", + "title": [ + "Failing test with 2 attempts", + "should try 2 times" + ], + "state": "failed", + "body": "() => {\n cy.wrap(false).should('be.true');\n }", + "displayError": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)", + "attempts": [ + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "AssertionError: Timed out retrying after 4000ms: expected false to be true", + "stack": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)", + "codeFrame": { + "line": 5, + "column": 20, + "originalFile": "cypress/e2e/a.spec.js", + "relativeFile": "e2e/cypress-12-demo/cypress/e2e/a.spec.js", + "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js", + "frame": " 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ", + "language": "js" + } + }, + "timings": { + "lifecycle": 32, + "before each": [ + { + "hookId": "h1", + "fnDuration": 20, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 620, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 4006, + "afterFnDuration": 309 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 21, + "afterFnDuration": 0 + } + ] + }, + "wallClockStartedAt": "2023-09-08T13:42:36.764Z", + "wallClockDuration": 4988, + "videoTimestamp": null, + "startedAt": "2023-09-08T13:42:36.764Z", + "duration": 4988, + "screenshots": [ + { + "testAttemptIndex": 0, + "size": 349423, + "takenAt": "2023-09-08T13:42:41.446Z", + "dimensions": { + "width": 2560, + "height": 1440 + }, + "multipart": false, + "specName": "a.spec.js", + "testFailure": true, + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed).png", + "scaled": true, + "blackout": [], + "duration": 304, + "testId": "r3", + "height": 1440, + "width": 2560, + "name": "screenshot" + } + ] + }, + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "AssertionError: Timed out retrying after 4000ms: expected false to be true", + "stack": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)", + "codeFrame": { + "line": 5, + "column": 20, + "originalFile": "cypress/e2e/a.spec.js", + "relativeFile": "e2e/cypress-12-demo/cypress/e2e/a.spec.js", + "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js", + "frame": " 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ", + "language": "js" + } + }, + "timings": { + "lifecycle": 28, + "before each": [ + { + "hookId": "h1", + "fnDuration": 8, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 65, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 3994, + "afterFnDuration": 217 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 14, + "afterFnDuration": 1 + } + ] + }, + "wallClockStartedAt": "2023-09-08T13:42:41.809Z", + "wallClockDuration": 4314, + "videoTimestamp": null, + "startedAt": "2023-09-08T13:42:41.809Z", + "duration": 4314, + "screenshots": [ + { + "testAttemptIndex": 1, + "size": 360089, + "takenAt": "2023-09-08T13:42:45.908Z", + "dimensions": { + "width": 2560, + "height": 1440 + }, + "multipart": false, + "specName": "a.spec.js", + "testFailure": true, + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 2).png", + "scaled": true, + "blackout": [], + "duration": 214, + "testId": "r3", + "height": 1440, + "width": 2560, + "name": "screenshot" + } + ] + }, + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "AssertionError: Timed out retrying after 4000ms: expected false to be true", + "stack": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)", + "codeFrame": { + "line": 5, + "column": 20, + "originalFile": "cypress/e2e/a.spec.js", + "relativeFile": "e2e/cypress-12-demo/cypress/e2e/a.spec.js", + "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js", + "frame": " 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ", + "language": "js" + } + }, + "timings": { + "lifecycle": 54, + "before each": [ + { + "hookId": "h1", + "fnDuration": 10, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 92, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 4004, + "afterFnDuration": 208 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 13, + "afterFnDuration": 0 + } + ] + }, + "wallClockStartedAt": "2023-09-08T13:42:46.171Z", + "wallClockDuration": 4370, + "videoTimestamp": null, + "startedAt": "2023-09-08T13:42:46.171Z", + "duration": 4370, + "screenshots": [ + { + "testAttemptIndex": 2, + "size": 363302, + "takenAt": "2023-09-08T13:42:50.334Z", + "dimensions": { + "width": 2560, + "height": 1440 + }, + "multipart": false, + "specName": "a.spec.js", + "testFailure": true, + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 3).png", + "scaled": true, + "blackout": [], + "duration": 206, + "testId": "r3", + "height": 1440, + "width": 2560, + "name": "screenshot" + } + ] + } + ] + } + ] + }, + { + "stats": { + "duration": 1108, + "endedAt": "2023-09-08T13:42:57.027Z", + "startedAt": "2023-09-08T13:42:55.919Z", + "failures": 0, + "passes": 2, + "pending": 0, + "skipped": 0, + "suites": 1, + "tests": 2 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 2, + "passes": 2, + "pending": 0, + "failures": 0, + "start": "2023-09-08T13:42:55.921Z", + "end": "2023-09-08T13:42:57.030Z", + "duration": 1109 + }, + "spec": { + "fileExtension": ".js", + "baseName": "d.spec.js", + "fileName": "d", + "specFileExtension": ".spec.js", + "relativeToCommonRoot": "d.spec.js", + "specType": "integration", + "name": "cypress/e2e/d.spec.js", + "relative": "cypress/e2e/d.spec.js", + "absolute": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/d.spec.js" + }, + "error": null, + "video": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/d.spec.js.mp4", + "shouldUploadVideo": true, + "hooks": [ + { + "hookId": "h1", + "hookName": "before each", + "title": [ + "\"before each\" hook" + ], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}" + }, + { + "hookId": "h2", + "hookName": "before each", + "title": [ + "\"before each\" hook" + ], + "body": "function () {\n cy.visit(\"/\");\n}" + }, + { + "hookId": "h4", + "hookName": "after each", + "title": [ + "\"after each\" hook" + ], + "body": "function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }" + }, + { + "hookId": "h5", + "hookName": "after each", + "title": [ + "\"after each\" hook" + ], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}" + }, + { + "hookId": "h3", + "hookName": "after all", + "title": [ + "\"after all\" hook" + ], + "body": "function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }" + } + ], + "tests": [ + { + "testId": "r3", + "title": [ + "Passed test with screenshot, passed test with no screenshots", + "should assert and take a screenshot" + ], + "state": "passed", + "body": "() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }", + "displayError": null, + "attempts": [ + { + "state": "passed", + "error": null, + "timings": { + "lifecycle": 35, + "before each": [ + { + "hookId": "h1", + "fnDuration": 10, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 160, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 747, + "afterFnDuration": 0 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 13, + "afterFnDuration": 0 + } + ] + }, + "wallClockStartedAt": "2023-09-08T13:42:55.932Z", + "wallClockDuration": 956, + "videoTimestamp": null, + "startedAt": "2023-09-08T13:42:55.932Z", + "duration": 956, + "screenshots": [ + { + "testAttemptIndex": 0, + "size": 234576, + "takenAt": "2023-09-08T13:42:56.156Z", + "dimensions": { + "width": 2000, + "height": 1320 + }, + "multipart": true, + "pixelRatio": 2, + "name": "internal-assert-screenshot", + "specName": "d.spec.js", + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/d.spec.js/internal-assert-screenshot.png", + "scaled": false, + "blackout": [], + "duration": 732, + "testId": "r3", + "height": 1320, + "width": 2000 + } + ] + } + ] + }, + { + "testId": "r4", + "title": [ + "Passed test with screenshot, passed test with no screenshots", + "should assert that true is true" + ], + "state": "passed", + "body": "() => {\n cy.wrap(true).should('be.true');\n }", + "displayError": null, + "attempts": [ + { + "state": "passed", + "error": null, + "timings": { + "lifecycle": 22, + "before each": [ + { + "hookId": "h1", + "fnDuration": 6, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 50, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 2, + "afterFnDuration": 0 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 11, + "afterFnDuration": 0 + } + ] + }, + "wallClockStartedAt": "2023-09-08T13:42:56.918Z", + "wallClockDuration": 82, + "videoTimestamp": null, + "startedAt": "2023-09-08T13:42:56.918Z", + "duration": 82, + "screenshots": [] + } + ] + } + ] + }, + { + "stats": { + "duration": 67, + "endedAt": "2023-09-08T13:43:00.018Z", + "startedAt": "2023-09-08T13:42:59.951Z", + "failures": 0, + "passes": 0, + "pending": 1, + "skipped": 0, + "suites": 1, + "tests": 1 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 0, + "pending": 1, + "failures": 0, + "start": "2023-09-08T13:42:59.953Z", + "end": "2023-09-08T13:43:00.021Z", + "duration": 68 + }, + "spec": { + "fileExtension": ".js", + "baseName": "c.spec.js", + "fileName": "c", + "specFileExtension": ".spec.js", + "relativeToCommonRoot": "c.spec.js", + "specType": "integration", + "name": "cypress/e2e/c.spec.js", + "relative": "cypress/e2e/c.spec.js", + "absolute": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/c.spec.js" + }, + "error": null, + "video": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/c.spec.js.mp4", + "shouldUploadVideo": true, + "hooks": [ + { + "hookId": "h3", + "hookName": "after all", + "title": [ + "\"after all\" hook" + ], + "body": "function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }" + } + ], + "tests": [ + { + "testId": "r0}", + "title": [ + "Ignored test", + "should be a skipped test" + ], + "state": "pending", + "body": "() => {\n cy.wrap(false).should('be.true');\n }", + "displayError": null, + "attempts": [] + } + ] + }, + { + "stats": { + "duration": 18212, + "endedAt": "2023-09-08T13:43:20.716Z", + "startedAt": "2023-09-08T13:43:02.504Z", + "failures": 1, + "passes": 2, + "pending": 0, + "skipped": 0, + "suites": 1, + "tests": 3 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 3, + "passes": 2, + "pending": 0, + "failures": 1, + "start": "2023-09-08T13:43:02.505Z", + "end": "2023-09-08T13:43:20.721Z", + "duration": 18216 + }, + "spec": { + "fileExtension": ".js", + "baseName": "b.spec.js", + "fileName": "b", + "specFileExtension": ".spec.js", + "relativeToCommonRoot": "b.spec.js", + "specType": "integration", + "name": "cypress/e2e/b.spec.js", + "relative": "cypress/e2e/b.spec.js", + "absolute": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js" + }, + "error": null, + "video": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/b.spec.js.mp4", + "shouldUploadVideo": true, + "hooks": [ + { + "hookId": "h1", + "hookName": "before each", + "title": [ + "\"before each\" hook" + ], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}" + }, + { + "hookId": "h2", + "hookName": "before each", + "title": [ + "\"before each\" hook" + ], + "body": "function () {\n cy.visit(\"/\");\n}" + }, + { + "hookId": "h4", + "hookName": "after each", + "title": [ + "\"after each\" hook" + ], + "body": "function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }" + }, + { + "hookId": "h5", + "hookName": "after each", + "title": [ + "\"after each\" hook" + ], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}" + }, + { + "hookId": "h3", + "hookName": "after all", + "title": [ + "\"after all\" hook" + ], + "body": "function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }" + } + ], + "tests": [ + { + "testId": "r3", + "title": [ + "Failing test with 2 attempts, passed test and flaky test with 2 attempts", + "should try 2 times" + ], + "state": "failed", + "body": "() => {\n cy.wrap(false).should('be.true');\n }", + "displayError": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)", + "attempts": [ + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "AssertionError: Timed out retrying after 4000ms: expected false to be true", + "stack": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)", + "codeFrame": { + "line": 6, + "column": 20, + "originalFile": "cypress/e2e/b.spec.js", + "relativeFile": "e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "frame": " 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {", + "language": "js" + } + }, + "timings": { + "lifecycle": 52, + "before each": [ + { + "hookId": "h1", + "fnDuration": 23, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 178, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 4013, + "afterFnDuration": 260 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 15, + "afterFnDuration": 0 + } + ] + }, + "wallClockStartedAt": "2023-09-08T13:43:02.515Z", + "wallClockDuration": 4528, + "videoTimestamp": null, + "startedAt": "2023-09-08T13:43:02.515Z", + "duration": 4528, + "screenshots": [ + { + "testAttemptIndex": 0, + "size": 374162, + "takenAt": "2023-09-08T13:43:06.785Z", + "dimensions": { + "width": 2560, + "height": 1440 + }, + "multipart": false, + "specName": "b.spec.js", + "testFailure": true, + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed).png", + "scaled": true, + "blackout": [], + "duration": 258, + "testId": "r3", + "height": 1440, + "width": 2560, + "name": "screenshot" + } + ] + }, + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "AssertionError: Timed out retrying after 4000ms: expected false to be true", + "stack": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)", + "codeFrame": { + "line": 6, + "column": 20, + "originalFile": "cypress/e2e/b.spec.js", + "relativeFile": "e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "frame": " 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {", + "language": "js" + } + }, + "timings": { + "lifecycle": 27, + "before each": [ + { + "hookId": "h1", + "fnDuration": 8, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 59, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 3993, + "afterFnDuration": 284 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 19, + "afterFnDuration": 0 + } + ] + }, + "wallClockStartedAt": "2023-09-08T13:43:07.100Z", + "wallClockDuration": 4373, + "videoTimestamp": null, + "startedAt": "2023-09-08T13:43:07.100Z", + "duration": 4373, + "screenshots": [ + { + "testAttemptIndex": 1, + "size": 377830, + "takenAt": "2023-09-08T13:43:11.191Z", + "dimensions": { + "width": 2560, + "height": 1440 + }, + "multipart": false, + "specName": "b.spec.js", + "testFailure": true, + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 2).png", + "scaled": true, + "blackout": [], + "duration": 281, + "testId": "r3", + "height": 1440, + "width": 2560, + "name": "screenshot" + } + ] + }, + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "AssertionError: Timed out retrying after 4000ms: expected false to be true", + "stack": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)", + "codeFrame": { + "line": 6, + "column": 20, + "originalFile": "cypress/e2e/b.spec.js", + "relativeFile": "e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "frame": " 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {", + "language": "js" + } + }, + "timings": { + "lifecycle": 45, + "before each": [ + { + "hookId": "h1", + "fnDuration": 8, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 100, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 4002, + "afterFnDuration": 236 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 23, + "afterFnDuration": 0 + } + ] + }, + "wallClockStartedAt": "2023-09-08T13:43:11.528Z", + "wallClockDuration": 4395, + "videoTimestamp": null, + "startedAt": "2023-09-08T13:43:11.528Z", + "duration": 4395, + "screenshots": [ + { + "testAttemptIndex": 2, + "size": 375503, + "takenAt": "2023-09-08T13:43:15.688Z", + "dimensions": { + "width": 2560, + "height": 1440 + }, + "multipart": false, + "specName": "b.spec.js", + "testFailure": true, + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 3).png", + "scaled": true, + "blackout": [], + "duration": 233, + "testId": "r3", + "height": 1440, + "width": 2560, + "name": "screenshot" + } + ] + } + ] + }, + { + "testId": "r4", + "title": [ + "Failing test with 2 attempts, passed test and flaky test with 2 attempts", + "should assert that true is true" + ], + "state": "passed", + "body": "() => {\n cy.wrap(true).should('be.true');\n }", + "displayError": null, + "attempts": [ + { + "state": "passed", + "error": null, + "timings": { + "lifecycle": 35, + "before each": [ + { + "hookId": "h1", + "fnDuration": 10, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 57, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 2, + "afterFnDuration": 0 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 12, + "afterFnDuration": 0 + } + ] + }, + "wallClockStartedAt": "2023-09-08T13:43:16.013Z", + "wallClockDuration": 107, + "videoTimestamp": null, + "startedAt": "2023-09-08T13:43:16.013Z", + "duration": 107, + "screenshots": [] + } + ] + }, + { + "testId": "r5", + "title": [ + "Failing test with 2 attempts, passed test and flaky test with 2 attempts", + "should fail on the first attempt and pass on the second" + ], + "state": "passed", + "body": "() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }", + "displayError": null, + "attempts": [ + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "AssertionError: Timed out retrying after 4000ms: expected false to be true", + "stack": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:16:21)", + "codeFrame": { + "line": 16, + "column": 22, + "originalFile": "cypress/e2e/b.spec.js", + "relativeFile": "e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "frame": " 14 | if (attempt === 0) {\n 15 | attempt++;\n> 16 | cy.wrap(false).should('be.true'); // This will fail on the first attempt\n | ^\n 17 | } else {\n 18 | cy.wrap(true).should('be.true'); // This will pass on the second attempt\n 19 | }", + "language": "js" + } + }, + "timings": { + "lifecycle": 27, + "before each": [ + { + "hookId": "h1", + "fnDuration": 7, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 75, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 3986, + "afterFnDuration": 211 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 17, + "afterFnDuration": 0 + } + ] + }, + "wallClockStartedAt": "2023-09-08T13:43:16.150Z", + "wallClockDuration": 4310, + "videoTimestamp": null, + "startedAt": "2023-09-08T13:43:16.150Z", + "duration": 4310, + "screenshots": [ + { + "testAttemptIndex": 0, + "size": 378982, + "takenAt": "2023-09-08T13:43:20.250Z", + "dimensions": { + "width": 2560, + "height": 1440 + }, + "multipart": false, + "specName": "b.spec.js", + "testFailure": true, + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should fail on the first attempt and pass on the second (failed).png", + "scaled": true, + "blackout": [], + "duration": 209, + "testId": "r5", + "height": 1440, + "width": 2560, + "name": "screenshot" + } + ] + }, + { + "state": "passed", + "error": null, + "timings": { + "lifecycle": 56, + "before each": [ + { + "hookId": "h1", + "fnDuration": 10, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 97, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 3, + "afterFnDuration": 0 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 13, + "afterFnDuration": 0 + } + ] + }, + "wallClockStartedAt": "2023-09-08T13:43:20.511Z", + "wallClockDuration": 167, + "videoTimestamp": null, + "startedAt": "2023-09-08T13:43:20.511Z", + "duration": 167, + "screenshots": [] + } + ] + } + ] + } + ], + "startedTestsAt": "2023-09-08T13:42:36.752Z", + "endedTestsAt": "2023-09-08T13:43:20.716Z", + "config": { + "additionalIgnorePattern": [], + "animationDistanceThreshold": 5, + "arch": "arm64", + "autoOpen": false, + "baseUrl": "https://todomvc.com/examples/vanillajs", + "blockHosts": null, + "browsers": [ + { + "name": "chrome", + "family": "chromium", + "channel": "stable", + "displayName": "Chrome", + "version": "116.0.5845.179", + "path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "minSupportedVersion": 64, + "majorVersion": "116" + }, + { + "name": "edge", + "family": "chromium", + "channel": "stable", + "displayName": "Edge", + "version": "116.0.1938.76", + "path": "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge", + "minSupportedVersion": 79, + "majorVersion": "116" + }, + { + "name": "electron", + "channel": "stable", + "family": "chromium", + "displayName": "Electron", + "version": "106.0.5249.51", + "path": "", + "majorVersion": 106 + } + ], + "chromeWebSecurity": true, + "clientCertificates": [], + "clientRoute": "/__/", + "configFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress.config.ts", + "cypressBinaryRoot": "/Users/miguelangarano/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app", + "cypressEnv": "production", + "defaultCommandTimeout": 4000, + "devServerPublicPathRoute": "/__cypress/src", + "downloadsFolder": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/downloads", + "env": { + "currents_temp_file": "/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-20155-pBOzRF3wo7HA", + "currents_debug_enabled": false + }, + "excludeSpecPattern": "*.hot-update.js", + "execTimeout": 60000, + "experimentalCspAllowList": false, + "experimentalFetchPolyfill": false, + "experimentalInteractiveRunEvents": false, + "experimentalMemoryManagement": false, + "experimentalModifyObstructiveThirdPartyCode": false, + "experimentalOriginDependencies": false, + "experimentalRunAllSpecs": false, + "experimentalSingleTabRunMode": false, + "experimentalSkipDomainInjection": null, + "experimentalSourceRewriting": false, + "experimentalStudio": false, + "experimentalWebKitSupport": false, + "fileServerFolder": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo", + "fixturesFolder": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/fixtures", + "hosts": null, + "includeShadowDom": false, + "isInteractive": true, + "isTextTerminal": true, + "keystrokeDelay": 0, + "modifyObstructiveCode": true, + "morgan": false, + "namespace": "__cypress", + "numTestsKeptInMemory": 0, + "pageLoadTimeout": 60000, + "platform": "darwin", + "port": null, + "projectId": null, + "projectName": "cypress-12-demo", + "projectRoot": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo", + "rawJson": { + "e2e": { + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "cypress/support/e2e.ts", + "specPattern": "cypress/*/**/*.spec.js", + "setupNodeEvents": "[Function setupNodeEvents]" + }, + "component": { + "specPattern": [ + "pages/__tests__/*.spec.tsx" + ], + "setupNodeEvents": "[Function setupNodeEvents]", + "devServer": { + "framework": "next", + "bundler": "webpack" + } + }, + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "cypress/support/e2e.ts", + "specPattern": "cypress/*/**/*.spec.js", + "setupNodeEvents": "[Function setupNodeEvents]", + "envFile": {}, + "projectRoot": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo", + "projectName": "cypress-12-demo", + "repoRoot": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13" + }, + "redirectionLimit": 20, + "repoRoot": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13", + "report": true, + "reporter": "spec", + "reporterOptions": null, + "reporterRoute": "/__cypress/reporter", + "requestTimeout": 5000, + "resolved": { + "animationDistanceThreshold": { + "value": 5, + "from": "default" + }, + "arch": { + "value": "arm64", + "from": "default" + }, + "baseUrl": { + "value": "https://todomvc.com/examples/vanillajs", + "from": "config" + }, + "blockHosts": { + "value": null, + "from": "default" + }, + "chromeWebSecurity": { + "value": true, + "from": "default" + }, + "clientCertificates": { + "value": [], + "from": "default" + }, + "defaultCommandTimeout": { + "value": 4000, + "from": "default" + }, + "downloadsFolder": { + "value": "cypress/downloads", + "from": "default" + }, + "env": { + "currents_temp_file": { + "value": "/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-20155-pBOzRF3wo7HA", + "from": "cli" + }, + "currents_debug_enabled": { + "value": false, + "from": "cli" + } + }, + "execTimeout": { + "value": 60000, + "from": "default" + }, + "experimentalCspAllowList": { + "value": false, + "from": "default" + }, + "experimentalFetchPolyfill": { + "value": false, + "from": "default" + }, + "experimentalInteractiveRunEvents": { + "value": false, + "from": "default" + }, + "experimentalRunAllSpecs": { + "value": false, + "from": "default" + }, + "experimentalMemoryManagement": { + "value": false, + "from": "default" + }, + "experimentalModifyObstructiveThirdPartyCode": { + "value": false, + "from": "default" + }, + "experimentalSkipDomainInjection": { + "value": null, + "from": "default" + }, + "experimentalOriginDependencies": { + "value": false, + "from": "default" + }, + "experimentalSourceRewriting": { + "value": false, + "from": "default" + }, + "experimentalSingleTabRunMode": { + "value": false, + "from": "default" + }, + "experimentalStudio": { + "value": false, + "from": "default" + }, + "experimentalWebKitSupport": { + "value": false, + "from": "default" + }, + "fileServerFolder": { + "value": "", + "from": "default" + }, + "fixturesFolder": { + "value": "cypress/fixtures", + "from": "default" + }, + "excludeSpecPattern": { + "value": "*.hot-update.js", + "from": "default" + }, + "includeShadowDom": { + "value": false, + "from": "default" + }, + "keystrokeDelay": { + "value": 0, + "from": "default" + }, + "modifyObstructiveCode": { + "value": true, + "from": "default" + }, + "nodeVersion": { + "from": "default" + }, + "numTestsKeptInMemory": { + "value": 0, + "from": "config" + }, + "platform": { + "value": "darwin", + "from": "default" + }, + "pageLoadTimeout": { + "value": 60000, + "from": "default" + }, + "port": { + "value": null, + "from": "default" + }, + "projectId": { + "value": null, + "from": "default" + }, + "redirectionLimit": { + "value": 20, + "from": "default" + }, + "reporter": { + "value": "spec", + "from": "default" + }, + "reporterOptions": { + "value": null, + "from": "default" + }, + "requestTimeout": { + "value": 5000, + "from": "default" + }, + "resolvedNodePath": { + "value": null, + "from": "default" + }, + "resolvedNodeVersion": { + "value": null, + "from": "default" + }, + "responseTimeout": { + "value": 30000, + "from": "default" + }, + "retries": { + "value": { + "runMode": 0, + "openMode": 0 + }, + "from": "default" + }, + "screenshotOnRunFailure": { + "value": true, + "from": "default" + }, + "screenshotsFolder": { + "value": "cypress/screenshots", + "from": "default" + }, + "slowTestThreshold": { + "value": 10000, + "from": "default" + }, + "scrollBehavior": { + "value": "top", + "from": "default" + }, + "supportFile": { + "value": "cypress/support/e2e.ts", + "from": "config" + }, + "supportFolder": { + "value": false, + "from": "default" + }, + "taskTimeout": { + "value": 60000, + "from": "default" + }, + "testIsolation": { + "value": true, + "from": "default" + }, + "trashAssetsBeforeRuns": { + "value": true, + "from": "default" + }, + "userAgent": { + "value": null, + "from": "default" + }, + "video": { + "value": true, + "from": "default" + }, + "videoCompression": { + "value": 32, + "from": "default" + }, + "videosFolder": { + "value": "cypress/videos", + "from": "default" + }, + "videoUploadOnPasses": { + "value": true, + "from": "default" + }, + "viewportHeight": { + "value": 660, + "from": "default" + }, + "viewportWidth": { + "value": 1000, + "from": "default" + }, + "waitForAnimations": { + "value": true, + "from": "default" + }, + "watchForFileChanges": { + "value": false, + "from": "config" + }, + "specPattern": { + "value": "cypress/*/**/*.spec.js", + "from": "config" + }, + "browsers": { + "value": [ + { + "name": "chrome", + "family": "chromium", + "channel": "stable", + "displayName": "Chrome", + "version": "116.0.5845.179", + "path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "minSupportedVersion": 64, + "majorVersion": "116" + }, + { + "name": "edge", + "family": "chromium", + "channel": "stable", + "displayName": "Edge", + "version": "116.0.1938.76", + "path": "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge", + "minSupportedVersion": 79, + "majorVersion": "116" + }, + { + "name": "electron", + "channel": "stable", + "family": "chromium", + "displayName": "Electron", + "version": "106.0.5249.51", + "path": "", + "majorVersion": 106 + } + ], + "from": "runtime" + }, + "hosts": { + "value": null, + "from": "default" + }, + "isInteractive": { + "value": true, + "from": "default" + } + }, + "resolvedNodePath": "/Users/miguelangarano/.nvm/versions/node/v18.14.2/bin/node", + "resolvedNodeVersion": "18.14.2", + "responseTimeout": 30000, + "retries": { + "runMode": 0, + "openMode": 0 + }, + "screenshotOnRunFailure": true, + "screenshotsFolder": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots", + "scrollBehavior": "top", + "setupNodeEvents": "[Function setupNodeEvents]", + "slowTestThreshold": 10000, + "socketId": "dtsrh5hv0f", + "socketIoCookie": "__socket", + "socketIoRoute": "/__socket", + "specPattern": "cypress/*/**/*.spec.js", + "supportFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support/e2e.ts", + "supportFolder": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support", + "taskTimeout": 60000, + "testIsolation": true, + "trashAssetsBeforeRuns": true, + "userAgent": null, + "version": "12.17.4", + "video": true, + "videoCompression": 32, + "videoUploadOnPasses": true, + "videosFolder": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos", + "viewportHeight": 660, + "viewportWidth": 1000, + "waitForAnimations": true, + "watchForFileChanges": false, + "testingType": "e2e" + }, + "status": "finished", + "runUrl": "https://app.currents.dev/run/77cec387a5c57c87" +} \ No newline at end of file diff --git a/e2e/cypress-12-demo/data-references/ccy-1.9.4-cypress-12/currents-api-output-reference.json b/e2e/cypress-12-demo/data-references/ccy-1.9.4-cypress-12/currents-api-output-reference.json new file mode 100644 index 0000000..deaabd7 --- /dev/null +++ b/e2e/cypress-12-demo/data-references/ccy-1.9.4-cypress-12/currents-api-output-reference.json @@ -0,0 +1 @@ +{"status":"OK","data":{"runId":"6f943a835aca8b4f","projectId":"2cI1I5","createdAt":"2023-09-08T03:26:39.793Z","tags":[],"cypressVersion":"12.17.4","cancellation":null,"timeout":{"isTimeout":false},"groups":[{"groupId":"run-api-smoke-2023-09-08T03:26:36.052Z","platform":{"osName":"darwin","osVersion":"22.5.0","browserName":"Electron","browserVersion":"106.0.5249.51"},"createdAt":"2023-09-08T03:26:39.793Z","instances":{"overall":4,"claimed":4,"complete":4,"passes":2,"failures":2},"tests":{"overall":7,"passes":4,"failures":2,"pending":1,"skipped":0,"retries":1,"flaky":1}}],"meta":{"ciBuildId":"run-api-smoke-2023-09-08T03:26:36.052Z","commit":{"branch":"fix/cypress-13-validation","remoteOrigin":null,"authorEmail":"miguelangarano@gmail.com","authorName":"Miguel Langarano","message":"added viewer for results comparison\n","sha":"675f830a7b1fb6ff74de7830a312bc8fb417f8ce"},"platform":{"osName":"darwin","osVersion":"22.5.0","browserName":"Electron","browserVersion":"106.0.5249.51"}},"specs":[{"groupId":"run-api-smoke-2023-09-08T03:26:36.052Z","spec":"cypress/e2e/a.spec.js","instanceId":"UvwcsmMNZYZo","claimedAt":"2023-09-08T03:26:40.339Z","completedAt":"2023-09-08T03:27:01.544Z","machineId":"1OGNRsYXmc6T","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/UvwcsmMNZYZo_bhdh6SqfUfJV.mp4?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=RaYxFGecTNV3OWWxJQBTnKipuLBm-Z50XUum-NtYsqsv97HG~9BaxNBXMqaiagOKGr8zowM0zMM6nhLeoXE9g4-K8iBOAv8Ez0xASLT8fgRUA~z4PNSnv-hiuaT1m0g33~eBAI5xuk6dRLeqVf-x37Ev~xLX4bldOsSJ0HrcgfDaRpISCy8~1vumyrS9SVIS93EgCy1nOPmrlMnx-PV5M37oosKYNz3tA~YsorHcjQP~KweHerxmLhUjOyMXIuvQWe-Xaa8kCXltjys4-QSi2~pGrX8ArcDveZQ~ukUO9makARRqsoANrBm4ZUMUC2ATNvhhqNpL-98~jItDpFRRjg__","stats":{"duration":13947,"endedAt":"2023-09-08T03:26:59.631Z","startedAt":"2023-09-08T03:26:45.684Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1,"wallClockDuration":13947,"wallClockStartedAt":"2023-09-08T03:26:45.684Z","wallClockEndedAt":"2023-09-08T03:26:59.631Z"},"screenshots":[{"screenshotId":"BhmIYMZH33yWpSIfVsDZq","name":"screenshot","testId":"r0","testAttemptIndex":0,"takenAt":"2023-09-08T03:26:50.486Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/dh7xKpIdsolZ.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=EZi3YON9~M0vPswgja9~uX7l2VjyDfAXEFoahI4S4wpVFA3c~L5KWl69Lw9JcN1fpndGNU~EmFuDT6d9fh38leLrt-dtBdd98oTWsMzWCgU4huANp5gkF22n8LJ99PJqtwyxP5J9m3yHR0Sn4Tv2AQExVNtmjAWM~cJdrO0u7hEjFp5W-i~pN~-9tYvnMlT~eEDhFN057tCUx2Nqdh1s1NHdjJsJgU9F1Yr~mHvV0nzKkf9khTsEG-KeHP5VxhltQzk68QNv3ytCtpbMMpq7z7ubcJsOT7Rk8E7hbjSINt3wq69Vy0G9CDe4U3jA~cEJPVZ6pnPuaCV5TJTaFyM7~Q__","height":0,"width":0},{"screenshotId":"jyku9VtXtsjeq_eZiG3s9","name":"screenshot","testId":"r0","testAttemptIndex":1,"takenAt":"2023-09-08T03:26:54.942Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/JGy1yDNmoM9E.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=eCqTDLG9IAXVXEldGbSKSOvtyYGTiVUvJv2Tgu3o5eNOHHOWsidB6-~U4wW~PKpZfftVmR5U86pJFgetOSAgc36I7BwMqo7LvAGOh92~VKthRde2hTte5NJNgjj4ZdW90uCCgkGz3SiIf~vHKK2FdosGHkWRJZChQQkOYE8iGTBMw4Iq~LIA4d70E2OubSKUbYJ-B96mL53EBQhdRfkiSUYCTpO2ReoS3sJdFJx3mGWB5AGpPsOopZa1iSYKrJsljZmuBefXKNUHKYw3cNu9K9KThtdMJAA0Kt5-EtB1u4UAGw58i1TJPV5Tc35YqK7gJmeZCu1a5j-JipBO3EreNQ__","height":0,"width":0},{"screenshotId":"2FIfErAPtl2b2vsgJQhc5","name":"screenshot","testId":"r0","testAttemptIndex":2,"takenAt":"2023-09-08T03:26:59.369Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/06jiVfjeiszk.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=qMvUYaN0I5AgYMomaLf0L5N-~WhAVTzgRi0MZPeq1qIaa1YzqwnT8dQb~v670hIq0QIa8lnS2iCloyzJKHQPbkLq~uKx-PG8UbhBBvWWyr0NpjiZ4gUfopSj5eVnyjcDXvkBJNST8ZBuKaIjX9HL630fH9PPef5Qs3TFbxuoIB7A1xSfBLFPZGArvH3rivcNGDkZ3VLEsW1p14DhkAAsYONYtM8kLGivmzTtsFdR3i7s6cu1HIbUorIiYvisiV-hmWXfrr1FrrcXFzfogaIo1JY-Mr-HxxE3zg2vO-2-uX0d0~9kLgIEkkpieTRdVL6wJ1H03RvDZtMK38Jlm6gBRA__","height":0,"width":0}],"exception":null,"flaky":0}},{"groupId":"run-api-smoke-2023-09-08T03:26:36.052Z","spec":"cypress/e2e/b.spec.js","instanceId":"zdWGdtcaCuQn","claimedAt":"2023-09-08T03:26:40.357Z","completedAt":"2023-09-08T03:27:34.715Z","machineId":"1OGNRsYXmc6T","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/zdWGdtcaCuQn_8UpWRCgEUGLI.mp4?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=kU5KiY7cE84BrwFb8laM7Zl2ALxWdexwq22K-ktG5o6Q-hv-fE8Ko-fyp0VPlQmWTkQJRKq9ZpVMpe-3jaFOZOUUi9ExXfL2AfHY3cWLg8gS0-oiEDWP6S38fEloWL8QWsFV1lpT8G23LU76zzAb-IkzTQ5EumkDy1rwcY8XZ4D9O5QPCons88f9u5vacMUfGgLFXVR7MwX4HkME5PuFcaea~izao428Ff-Pg4zlUcE~2jWYQz0VGJXznu68uMC0PNINliv6Rz555Az-zblIwiaCjIobrRRCq~g1aohyppeUbD-5x2uEJ8~rOc0DOEQZMxAXmjhv02Gu3EGibQDdBg__","stats":{"duration":20745,"endedAt":"2023-09-08T03:27:32.145Z","startedAt":"2023-09-08T03:27:11.400Z","failures":1,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":3,"wallClockDuration":20745,"wallClockStartedAt":"2023-09-08T03:27:11.400Z","wallClockEndedAt":"2023-09-08T03:27:32.145Z"},"screenshots":[{"screenshotId":"Qj1yY2Vneuehs3CfGypSC","name":"screenshot","testId":"r0","testAttemptIndex":0,"takenAt":"2023-09-08T03:27:15.638Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/AGusL0mLRpOv.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=tXlK3RlGbX0oK1Z-A8lgK4XcseRE0UH6FqBKYJ7zxTuTk2eFG46R6oGLn6JG~HEBG2kGz80iznDdQCq77ehmsnCxBf0~e8iel6kNIjImajb2XXBQVjc-NieJ7Agxlvt2KT-3Pki7YvzL5xqVzpFoNAPyKk5T~2H5A5JeSNmUUoHGlKdegeoppRH58KjojRgZU3i8fHk7j4oI4bZdLYl7vGOEUMhwECZAB3W1aBm3zve3Ij6vFRu1cMpk7SFil83MdKQo4-795Q96JWAqF3~bjhg4b4fnc7fLJQe4gKZm7t~g~EimFYDWhujXkXjBNVRpmEMqg1fa330afVwyVyG5vw__","height":0,"width":0},{"screenshotId":"YbI1DbeNflu_3-vTrLVrV","name":"screenshot","testId":"r0","testAttemptIndex":1,"takenAt":"2023-09-08T03:27:20.065Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/juCd0WOBa6Gv.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=L3HDwbOzbcd80A1DjlqH9HO9Om9iVi9HD3gUlFms7y8v0DExYVJPuBKnhilSYSRNBjaF4cdKEiCeTRzVM2DDArpDqiFx~OR5vlzEixsC3SVNe0Op7or2dlaFka-pZVCjjFNSDx0uJS9qs5OhB93sMH340c8x57K1hdLPGbeHXr0jekc6TsLUgDi7JA85ZCa1t3BbFdbzRHfWqRaAHjIOu7kdHJYHEhh-WK2~k0KNqoq6TNLFFehEo5qdinWy8mxQmCzw~seufs-7EOnaTwlyVsMl1xlvVzm3VGU8TKVbp3jSnWLb8fdGCfUN9s3iFJYKn0ie17IitwNRdSW5-9tzug__","height":0,"width":0},{"screenshotId":"ysN7-f-IGi9SuBfWeh-Ln","name":"screenshot","testId":"r0","testAttemptIndex":2,"takenAt":"2023-09-08T03:27:24.443Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/vUWYbwFRpZvK.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=YKiaMUdNYhNK~2YGWg0pAkjZaPW65oSWP52~lol9v9hTA91EyaQwa-ObUvYYvJhGZGb72Ddyo-UlsksY6PwwFHeW~5Rxgv3HCqY5dF2yFc63Rug8bSn9kQ6aT0Jqrlgm0J3HxEmZ2PvY7q6l5aixcZRef0HARdhK3Co743Kxb7wK73rrdifLgTUe3py5E0M9CArj1fJW6f6iZhXKdtHdSGhQz1mgOlpQtTJ2MtVvQUO8-0ERuJJ0tAT6Wi8EFunTzAmTH5KlJMH9b5bNS3AwR4pyPqG8N8y~aeHjL~zmHYE6joRmkKYye9XGGxZ2g73U2-VSZQNRST2wq5gJf6cpZg__","height":0,"width":0},{"screenshotId":"pJtB86p_uQ04UWCWJxRRU","name":"screenshot","testId":"r2","testAttemptIndex":0,"takenAt":"2023-09-08T03:27:31.673Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/wub3R0PgzyhS.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=siAwsu2rDmnAOLnIcTEv1nHjUpqf1cfs3mTq4g3ivyEZL4j9SpM~i0ieQobkROGrWbeubiJKSRKnWAUgom~U33CiW~NXzjOYLEcCCOFOVg~q0YylTqWN~JsaSvlF3uxpuIDYpA1tacSQL4QkAl0bdmBBkFjei2XAPiAkdzVFEeloDbhBN7AOfQ2D5TAkCWRJW08Pm3bl7uG7wcdgGP40T0UPCOP2ABC5FhH3FwCULO8tbr2zdAapUB3NkcNscMxMCfXRGv77kFaO3o485tZoScigiGTS4FLiPTXJP40kTbURBgJ5R~Ol1Pil~szWAeMPRXw3f3WKNJOszsuDJvq6YA__","height":0,"width":0}],"exception":null,"flaky":1}},{"groupId":"run-api-smoke-2023-09-08T03:26:36.052Z","spec":"cypress/e2e/c.spec.js","instanceId":"PV4tL5vDMpv9","claimedAt":"2023-09-08T03:26:40.351Z","completedAt":"2023-09-08T03:27:10.418Z","machineId":"1OGNRsYXmc6T","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/PV4tL5vDMpv9_fGFwQBQMjufh.mp4?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=rZquPnQgOf-VdFGmLzZDZ6I2a~~yxwNQ5D4hb5KYZDOclrW5bVHuEqDKza~Ii6~5vfKXUNtH~gZOGZLNm4zjCiTrI5GaplASpUdCIExaEJMqGtvpwFoDqNbDQ8fTYKMHftfFDy0eZf1ePq29gtN4D5QDrqkXoZ0k0OXxCd4MV1hnHECDAtrCIRKZtkyt4Y9FnKjc6MKLaKLyZbI1vgThaZEje73-anFYUCJaox7womBChcxJhViGuAJ2NJ38Yttk3HREG~82O7KS3F7VR7GIA~Hl-5XS0SBsVdC1mfeTJTYUE3HfGOZlD8CTEWBZRNCi7fYxlrPbYH7qX~9HOTvRlA__","stats":{"duration":53,"endedAt":"2023-09-08T03:27:08.972Z","startedAt":"2023-09-08T03:27:08.919Z","failures":0,"passes":0,"pending":1,"skipped":0,"suites":1,"tests":1,"wallClockDuration":53,"wallClockStartedAt":"2023-09-08T03:27:08.919Z","wallClockEndedAt":"2023-09-08T03:27:08.972Z"},"screenshots":[],"exception":null,"flaky":0}},{"groupId":"run-api-smoke-2023-09-08T03:26:36.052Z","spec":"cypress/e2e/d.spec.js","instanceId":"sTkPbZdVJeQH","claimedAt":"2023-09-08T03:26:40.345Z","completedAt":"2023-09-08T03:27:07.785Z","machineId":"1OGNRsYXmc6T","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/sTkPbZdVJeQH_Sg1vqs1impAS.mp4?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=C-8f3b3GdwWabJQm0cM-gzA0Va~l~SIAIuaDXHyDwhDcf5Amr86pQV2jr73dt5vsvMyOamVjPPJG-luvzwOZo5CyumMWJ9fTvn7W2Xu~en2~K0rxZK9C8oT~6FWUb46BRwPB~doa5-SYgHQndp8QcXbwWTAZReNhXsTBZOGbJWISlKctUF9YVxvQAxj9~6qrnnQyRzCyFpiWNZeL7lr9es37NtK24kBzuCnUxJ3xeXU~lz6lOxnOKus~ZQhzOIT7nueuLI7DSrzm7QILmTqEODoo4uK6fbV1XGdcusuvVTV8g4ao-DR6hqS8sh-9VWU4u0ZDxqUJ-xgK0yqnPTOfDw__","stats":{"duration":1079,"endedAt":"2023-09-08T03:27:06.029Z","startedAt":"2023-09-08T03:27:04.950Z","failures":0,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":2,"wallClockDuration":1079,"wallClockStartedAt":"2023-09-08T03:27:04.950Z","wallClockEndedAt":"2023-09-08T03:27:06.029Z"},"screenshots":[{"screenshotId":"uReGdOXki5oUZtaZ4JNQZ","name":"internal-assert-screenshot","testId":"r0","testAttemptIndex":0,"takenAt":"2023-09-08T03:27:05.165Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/zFhaTH1sV5Yb.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=apRIvw~0jaY3pEvZ5IhkSiGMFdkn~oLAdQxNa7H10ESfp2yDHMDV8jhYfGMZxBMYtW2y86-vmCAbKgg8zd8m5TemSAGAf2X7PMAFwA5LJduvekk-~DL9yvmCNgarq3gKQBAFoMFNYJiv7DrFhMn0OSWugrjpjjwmtTd5zO-6bNlQ7xaKqh6DGOO2OzQ54BWXFl7f7slnyb1JJAbjDOyZ~5ifWuJE94HQguYEqDxjAp-hEq2n6sFRgcfhXbslOiv7waWt6G~-Q6Vh0TSTlTR4D6FPNJR2RfkYtmCQYp5giOSlJt2029aoTEwAyFELEs5WT4EnTD1D7EyI8sKBqn57KQ__","height":0,"width":0}],"exception":null,"flaky":0}}],"completionState":"COMPLETE","status":"FAILED"}} \ No newline at end of file diff --git a/e2e/cypress-12-demo/data-references/ccy-1.9.4-cypress-12/cypress-cloud-output-reference.json b/e2e/cypress-12-demo/data-references/ccy-1.9.4-cypress-12/cypress-cloud-output-reference.json new file mode 100644 index 0000000..a12796f --- /dev/null +++ b/e2e/cypress-12-demo/data-references/ccy-1.9.4-cypress-12/cypress-cloud-output-reference.json @@ -0,0 +1,1522 @@ +{ + "totalDuration": 35824, + "totalSuites": 4, + "totalPending": 1, + "totalFailed": 2, + "totalSkipped": 0, + "totalPassed": 4, + "totalTests": 7, + "runs": [ + { + "stats": { + "duration": 13947, + "endedAt": "2023-09-08T03:26:59.631Z", + "startedAt": "2023-09-08T03:26:45.684Z", + "failures": 1, + "passes": 0, + "pending": 0, + "skipped": 0, + "suites": 1, + "tests": 1 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 0, + "pending": 0, + "failures": 1, + "start": "2023-09-08T03:26:45.686Z", + "end": "2023-09-08T03:26:59.644Z", + "duration": 13958 + }, + "spec": { + "fileExtension": ".js", + "baseName": "a.spec.js", + "fileName": "a", + "specFileExtension": ".spec.js", + "relativeToCommonRoot": "a.spec.js", + "specType": "integration", + "name": "cypress/e2e/a.spec.js", + "relative": "cypress/e2e/a.spec.js", + "absolute": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js" + }, + "error": null, + "video": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/a.spec.js.mp4", + "shouldUploadVideo": true, + "hooks": [ + { + "hookId": "h1", + "hookName": "before each", + "title": [ + "\"before each\" hook" + ], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}" + }, + { + "hookId": "h2", + "hookName": "before each", + "title": [ + "\"before each\" hook" + ], + "body": "function () {\n cy.visit(\"/\");\n}" + }, + { + "hookId": "h4", + "hookName": "after each", + "title": [ + "\"after each\" hook" + ], + "body": "function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }" + }, + { + "hookId": "h5", + "hookName": "after each", + "title": [ + "\"after each\" hook" + ], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}" + }, + { + "hookId": "h3", + "hookName": "after all", + "title": [ + "\"after all\" hook" + ], + "body": "function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }" + } + ], + "tests": [ + { + "testId": "r3", + "title": [ + "Failing test with 2 attempts", + "should try 2 times" + ], + "state": "failed", + "body": "() => {\n cy.wrap(false).should('be.true');\n }", + "displayError": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)", + "attempts": [ + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "Timed out retrying after 4000ms: expected false to be true", + "stack": " at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)", + "codeFrame": { + "line": 5, + "column": 20, + "originalFile": "cypress/e2e/a.spec.js", + "relativeFile": "e2e/cypress-12-demo/cypress/e2e/a.spec.js", + "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js", + "frame": " 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ", + "language": "js" + } + }, + "timings": { + "lifecycle": 32, + "before each": [ + { + "hookId": "h1", + "fnDuration": 34, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 705, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 4004, + "afterFnDuration": 299 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 21, + "afterFnDuration": 0 + }, + { + "hookId": "h5", + "fnDuration": 22, + "afterFnDuration": 1 + } + ] + }, + "failedFromHookId": null, + "wallClockStartedAt": "2023-09-08T03:26:45.707Z", + "wallClockDuration": 5120, + "videoTimestamp": 2866, + "startedAt": "2023-09-08T03:26:45.707Z", + "duration": 5120, + "screenshots": [ + { + "screenshotId": "lv379", + "name": "screenshot", + "testId": "r3", + "testAttemptIndex": 0, + "takenAt": "2023-09-08T03:26:50.486Z", + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed).png", + "height": 1440, + "width": 2560 + } + ] + }, + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "Timed out retrying after 4000ms: expected false to be true", + "stack": " at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)", + "codeFrame": { + "line": 5, + "column": 20, + "originalFile": "cypress/e2e/a.spec.js", + "relativeFile": "e2e/cypress-12-demo/cypress/e2e/a.spec.js", + "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js", + "frame": " 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ", + "language": "js" + } + }, + "timings": { + "lifecycle": 28, + "before each": [ + { + "hookId": "h1", + "fnDuration": 7, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 66, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 3991, + "afterFnDuration": 231 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 23, + "afterFnDuration": 1 + }, + { + "hookId": "h5", + "fnDuration": 36, + "afterFnDuration": 0 + } + ] + }, + "failedFromHookId": null, + "wallClockStartedAt": "2023-09-08T03:26:50.848Z", + "wallClockDuration": 4384, + "videoTimestamp": 8007, + "startedAt": "2023-09-08T03:26:50.848Z", + "duration": 4384, + "screenshots": [ + { + "screenshotId": "eimp0", + "name": "screenshot", + "testId": "r3", + "testAttemptIndex": 1, + "takenAt": "2023-09-08T03:26:54.942Z", + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 2).png", + "height": 1440, + "width": 2560 + } + ] + }, + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "Timed out retrying after 4000ms: expected false to be true", + "stack": " at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)", + "codeFrame": { + "line": 5, + "column": 20, + "originalFile": "cypress/e2e/a.spec.js", + "relativeFile": "e2e/cypress-12-demo/cypress/e2e/a.spec.js", + "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js", + "frame": " 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ", + "language": "js" + } + }, + "timings": { + "lifecycle": 50, + "before each": [ + { + "hookId": "h1", + "fnDuration": 9, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 68, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 3990, + "afterFnDuration": 209 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 15, + "afterFnDuration": 0 + }, + { + "hookId": "h5", + "fnDuration": 18, + "afterFnDuration": 0 + } + ], + "after all": [ + { + "hookId": "h3", + "fnDuration": 4, + "afterFnDuration": 0 + } + ] + }, + "failedFromHookId": null, + "wallClockStartedAt": "2023-09-08T03:26:55.247Z", + "wallClockDuration": 4370, + "videoTimestamp": 12406, + "startedAt": "2023-09-08T03:26:55.247Z", + "duration": 4370, + "screenshots": [ + { + "screenshotId": "ve07d", + "name": "screenshot", + "testId": "r3", + "testAttemptIndex": 2, + "takenAt": "2023-09-08T03:26:59.369Z", + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 3).png", + "height": 1440, + "width": 2560 + } + ] + } + ] + } + ] + }, + { + "stats": { + "duration": 1079, + "endedAt": "2023-09-08T03:27:06.029Z", + "startedAt": "2023-09-08T03:27:04.950Z", + "failures": 0, + "passes": 2, + "pending": 0, + "skipped": 0, + "suites": 1, + "tests": 2 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 2, + "passes": 2, + "pending": 0, + "failures": 0, + "start": "2023-09-08T03:27:04.952Z", + "end": "2023-09-08T03:27:06.032Z", + "duration": 1080 + }, + "spec": { + "fileExtension": ".js", + "baseName": "d.spec.js", + "fileName": "d", + "specFileExtension": ".spec.js", + "relativeToCommonRoot": "d.spec.js", + "specType": "integration", + "name": "cypress/e2e/d.spec.js", + "relative": "cypress/e2e/d.spec.js", + "absolute": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/d.spec.js" + }, + "error": null, + "video": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/d.spec.js.mp4", + "shouldUploadVideo": true, + "hooks": [ + { + "hookId": "h1", + "hookName": "before each", + "title": [ + "\"before each\" hook" + ], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}" + }, + { + "hookId": "h2", + "hookName": "before each", + "title": [ + "\"before each\" hook" + ], + "body": "function () {\n cy.visit(\"/\");\n}" + }, + { + "hookId": "h4", + "hookName": "after each", + "title": [ + "\"after each\" hook" + ], + "body": "function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }" + }, + { + "hookId": "h5", + "hookName": "after each", + "title": [ + "\"after each\" hook" + ], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}" + }, + { + "hookId": "h3", + "hookName": "after all", + "title": [ + "\"after all\" hook" + ], + "body": "function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }" + } + ], + "tests": [ + { + "testId": "r3", + "title": [ + "Passed test with screenshot, passed test with no screenshots", + "should assert and take a screenshot" + ], + "state": "passed", + "body": "() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }", + "displayError": null, + "attempts": [ + { + "state": "passed", + "error": null, + "timings": { + "lifecycle": 38, + "before each": [ + { + "hookId": "h1", + "fnDuration": 11, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 146, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 727, + "afterFnDuration": 0 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 15, + "afterFnDuration": 0 + }, + { + "hookId": "h5", + "fnDuration": 7, + "afterFnDuration": 0 + } + ] + }, + "failedFromHookId": null, + "wallClockStartedAt": "2023-09-08T03:27:04.956Z", + "wallClockDuration": 952, + "videoTimestamp": 1172, + "startedAt": "2023-09-08T03:27:04.956Z", + "duration": 952, + "screenshots": [ + { + "screenshotId": "mau0n", + "name": "internal-assert-screenshot", + "testId": "r3", + "testAttemptIndex": 0, + "takenAt": "2023-09-08T03:27:05.165Z", + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/d.spec.js/internal-assert-screenshot.png", + "height": 1320, + "width": 2000 + } + ] + } + ] + }, + { + "testId": "r4", + "title": [ + "Passed test with screenshot, passed test with no screenshots", + "should assert that true is true" + ], + "state": "passed", + "body": "() => {\n cy.wrap(true).should('be.true');\n }", + "displayError": null, + "attempts": [ + { + "state": "passed", + "error": null, + "timings": { + "lifecycle": 19, + "before each": [ + { + "hookId": "h1", + "fnDuration": 7, + "afterFnDuration": 1 + }, + { + "hookId": "h2", + "fnDuration": 53, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 3, + "afterFnDuration": 0 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 18, + "afterFnDuration": 1 + }, + { + "hookId": "h5", + "fnDuration": 8, + "afterFnDuration": 0 + } + ], + "after all": [ + { + "hookId": "h3", + "fnDuration": 3, + "afterFnDuration": 1 + } + ] + }, + "failedFromHookId": null, + "wallClockStartedAt": "2023-09-08T03:27:05.910Z", + "wallClockDuration": 118, + "videoTimestamp": 2126, + "startedAt": "2023-09-08T03:27:05.910Z", + "duration": 118, + "screenshots": [] + } + ] + } + ] + }, + { + "stats": { + "duration": 53, + "endedAt": "2023-09-08T03:27:08.972Z", + "startedAt": "2023-09-08T03:27:08.919Z", + "failures": 0, + "passes": 0, + "pending": 1, + "skipped": 0, + "suites": 1, + "tests": 1 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 1, + "passes": 0, + "pending": 1, + "failures": 0, + "start": "2023-09-08T03:27:08.921Z", + "end": "2023-09-08T03:27:08.978Z", + "duration": 57 + }, + "spec": { + "fileExtension": ".js", + "baseName": "c.spec.js", + "fileName": "c", + "specFileExtension": ".spec.js", + "relativeToCommonRoot": "c.spec.js", + "specType": "integration", + "name": "cypress/e2e/c.spec.js", + "relative": "cypress/e2e/c.spec.js", + "absolute": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/c.spec.js" + }, + "error": null, + "video": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/c.spec.js.mp4", + "shouldUploadVideo": true, + "hooks": [ + { + "hookId": "h3", + "hookName": "after all", + "title": [ + "\"after all\" hook" + ], + "body": "function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }" + } + ], + "tests": [ + { + "testId": "r3", + "title": [ + "Ignored test", + "should be a skipped test" + ], + "state": "pending", + "body": "() => {\n cy.wrap(false).should('be.true');\n }", + "displayError": null, + "attempts": [ + { + "state": "pending", + "error": null, + "timings": { + "lifecycle": 31, + "after all": [ + { + "hookId": "h3", + "fnDuration": 5, + "afterFnDuration": 0 + } + ] + }, + "failedFromHookId": null, + "wallClockStartedAt": "2023-09-08T03:27:08.934Z", + "wallClockDuration": 36, + "videoTimestamp": 1122, + "startedAt": "2023-09-08T03:27:08.934Z", + "duration": 36, + "screenshots": [] + } + ] + } + ] + }, + { + "stats": { + "duration": 20745, + "endedAt": "2023-09-08T03:27:32.145Z", + "startedAt": "2023-09-08T03:27:11.400Z", + "failures": 1, + "passes": 2, + "pending": 0, + "skipped": 0, + "suites": 1, + "tests": 3 + }, + "reporter": "spec", + "reporterStats": { + "suites": 1, + "tests": 3, + "passes": 2, + "pending": 0, + "failures": 1, + "start": "2023-09-08T03:27:11.402Z", + "end": "2023-09-08T03:27:32.149Z", + "duration": 20747 + }, + "spec": { + "fileExtension": ".js", + "baseName": "b.spec.js", + "fileName": "b", + "specFileExtension": ".spec.js", + "relativeToCommonRoot": "b.spec.js", + "specType": "integration", + "name": "cypress/e2e/b.spec.js", + "relative": "cypress/e2e/b.spec.js", + "absolute": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js" + }, + "error": null, + "video": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/b.spec.js.mp4", + "shouldUploadVideo": true, + "hooks": [ + { + "hookId": "h1", + "hookName": "before each", + "title": [ + "\"before each\" hook" + ], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}" + }, + { + "hookId": "h2", + "hookName": "before each", + "title": [ + "\"before each\" hook" + ], + "body": "function () {\n cy.visit(\"/\");\n}" + }, + { + "hookId": "h4", + "hookName": "after each", + "title": [ + "\"after each\" hook" + ], + "body": "function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }" + }, + { + "hookId": "h5", + "hookName": "after each", + "title": [ + "\"after each\" hook" + ], + "body": "() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}" + }, + { + "hookId": "h3", + "hookName": "after all", + "title": [ + "\"after all\" hook" + ], + "body": "function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }" + } + ], + "tests": [ + { + "testId": "r3", + "title": [ + "Failing test with 2 attempts, passed test and flaky test with 2 attempts", + "should try 2 times" + ], + "state": "failed", + "body": "() => {\n cy.wrap(false).should('be.true');\n }", + "displayError": "AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)", + "attempts": [ + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "Timed out retrying after 4000ms: expected false to be true", + "stack": " at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)", + "codeFrame": { + "line": 6, + "column": 20, + "originalFile": "cypress/e2e/b.spec.js", + "relativeFile": "e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "frame": " 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {", + "language": "js" + } + }, + "timings": { + "lifecycle": 44, + "before each": [ + { + "hookId": "h1", + "fnDuration": 13, + "afterFnDuration": 1 + }, + { + "hookId": "h2", + "fnDuration": 160, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 4012, + "afterFnDuration": 256 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 13, + "afterFnDuration": 1 + }, + { + "hookId": "h5", + "fnDuration": 17, + "afterFnDuration": 0 + } + ] + }, + "failedFromHookId": null, + "wallClockStartedAt": "2023-09-08T03:27:11.405Z", + "wallClockDuration": 4519, + "videoTimestamp": 1153, + "startedAt": "2023-09-08T03:27:11.405Z", + "duration": 4519, + "screenshots": [ + { + "screenshotId": "uah46", + "name": "screenshot", + "testId": "r3", + "testAttemptIndex": 0, + "takenAt": "2023-09-08T03:27:15.638Z", + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed).png", + "height": 1440, + "width": 2560 + } + ] + }, + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "Timed out retrying after 4000ms: expected false to be true", + "stack": " at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)", + "codeFrame": { + "line": 6, + "column": 20, + "originalFile": "cypress/e2e/b.spec.js", + "relativeFile": "e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "frame": " 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {", + "language": "js" + } + }, + "timings": { + "lifecycle": 27, + "before each": [ + { + "hookId": "h1", + "fnDuration": 15, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 62, + "afterFnDuration": 1 + } + ], + "test": { + "fnDuration": 3999, + "afterFnDuration": 227 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 16, + "afterFnDuration": 0 + }, + { + "hookId": "h5", + "fnDuration": 19, + "afterFnDuration": 0 + } + ] + }, + "failedFromHookId": null, + "wallClockStartedAt": "2023-09-08T03:27:15.958Z", + "wallClockDuration": 4368, + "videoTimestamp": 5706, + "startedAt": "2023-09-08T03:27:15.958Z", + "duration": 4368, + "screenshots": [ + { + "screenshotId": "mmkc1", + "name": "screenshot", + "testId": "r3", + "testAttemptIndex": 1, + "takenAt": "2023-09-08T03:27:20.065Z", + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 2).png", + "height": 1440, + "width": 2560 + } + ] + }, + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "Timed out retrying after 4000ms: expected false to be true", + "stack": " at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)", + "codeFrame": { + "line": 6, + "column": 20, + "originalFile": "cypress/e2e/b.spec.js", + "relativeFile": "e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "frame": " 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {", + "language": "js" + } + }, + "timings": { + "lifecycle": 44, + "before each": [ + { + "hookId": "h1", + "fnDuration": 10, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 52, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 3991, + "afterFnDuration": 224 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 16, + "afterFnDuration": 1 + }, + { + "hookId": "h5", + "fnDuration": 21, + "afterFnDuration": 0 + } + ] + }, + "failedFromHookId": null, + "wallClockStartedAt": "2023-09-08T03:27:20.341Z", + "wallClockDuration": 4363, + "videoTimestamp": 10089, + "startedAt": "2023-09-08T03:27:20.341Z", + "duration": 4363, + "screenshots": [ + { + "screenshotId": "kw950", + "name": "screenshot", + "testId": "r3", + "testAttemptIndex": 2, + "takenAt": "2023-09-08T03:27:24.443Z", + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 3).png", + "height": 1440, + "width": 2560 + } + ] + } + ] + }, + { + "testId": "r4", + "title": [ + "Failing test with 2 attempts, passed test and flaky test with 2 attempts", + "should assert that true is true" + ], + "state": "passed", + "body": "() => {\n cy.wrap(true).should('be.true');\n }", + "displayError": null, + "attempts": [ + { + "state": "passed", + "error": null, + "timings": { + "lifecycle": 43, + "before each": [ + { + "hookId": "h1", + "fnDuration": 13, + "afterFnDuration": 1 + }, + { + "hookId": "h2", + "fnDuration": 391, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 2, + "afterFnDuration": 0 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 14, + "afterFnDuration": 0 + }, + { + "hookId": "h5", + "fnDuration": 9, + "afterFnDuration": 1 + } + ] + }, + "failedFromHookId": null, + "wallClockStartedAt": "2023-09-08T03:27:24.722Z", + "wallClockDuration": 475, + "videoTimestamp": 14470, + "startedAt": "2023-09-08T03:27:24.722Z", + "duration": 475, + "screenshots": [] + } + ] + }, + { + "testId": "r5", + "title": [ + "Failing test with 2 attempts, passed test and flaky test with 2 attempts", + "should fail on the first attempt and pass on the second" + ], + "state": "passed", + "body": "() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }", + "displayError": null, + "attempts": [ + { + "state": "failed", + "error": { + "name": "AssertionError", + "message": "Timed out retrying after 4000ms: expected false to be true", + "stack": " at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:16:21)", + "codeFrame": { + "line": 16, + "column": 22, + "originalFile": "cypress/e2e/b.spec.js", + "relativeFile": "e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js", + "frame": " 14 | if (attempt === 0) {\n 15 | attempt++;\n> 16 | cy.wrap(false).should('be.true'); // This will fail on the first attempt\n | ^\n 17 | } else {\n 18 | cy.wrap(true).should('be.true'); // This will pass on the second attempt\n 19 | }", + "language": "js" + } + }, + "timings": { + "lifecycle": 34, + "before each": [ + { + "hookId": "h1", + "fnDuration": 7, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 2438, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 3993, + "afterFnDuration": 237 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 12, + "afterFnDuration": 0 + }, + { + "hookId": "h5", + "fnDuration": 15, + "afterFnDuration": 0 + } + ] + }, + "failedFromHookId": null, + "wallClockStartedAt": "2023-09-08T03:27:25.199Z", + "wallClockDuration": 6737, + "videoTimestamp": 14947, + "startedAt": "2023-09-08T03:27:25.199Z", + "duration": 6737, + "screenshots": [ + { + "screenshotId": "9ljg2", + "name": "screenshot", + "testId": "r5", + "testAttemptIndex": 0, + "takenAt": "2023-09-08T03:27:31.673Z", + "path": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should fail on the first attempt and pass on the second (failed).png", + "height": 1440, + "width": 2560 + } + ] + }, + { + "state": "passed", + "error": null, + "timings": { + "lifecycle": 37, + "before each": [ + { + "hookId": "h1", + "fnDuration": 14, + "afterFnDuration": 0 + }, + { + "hookId": "h2", + "fnDuration": 107, + "afterFnDuration": 0 + } + ], + "test": { + "fnDuration": 3, + "afterFnDuration": 0 + }, + "after each": [ + { + "hookId": "h4", + "fnDuration": 15, + "afterFnDuration": 0 + }, + { + "hookId": "h5", + "fnDuration": 11, + "afterFnDuration": 0 + } + ], + "after all": [ + { + "hookId": "h3", + "fnDuration": 4, + "afterFnDuration": 0 + } + ] + }, + "failedFromHookId": null, + "wallClockStartedAt": "2023-09-08T03:27:31.946Z", + "wallClockDuration": 196, + "videoTimestamp": 21694, + "startedAt": "2023-09-08T03:27:31.946Z", + "duration": 196, + "screenshots": [] + } + ] + } + ] + } + ], + "startedTestsAt": "2023-09-08T03:26:45.684Z", + "endedTestsAt": "2023-09-08T03:27:32.145Z", + "config": { + "additionalIgnorePattern": [], + "animationDistanceThreshold": 5, + "arch": "arm64", + "autoOpen": false, + "baseUrl": "https://todomvc.com/examples/vanillajs", + "blockHosts": null, + "browsers": [ + { + "name": "chrome", + "family": "chromium", + "channel": "stable", + "displayName": "Chrome", + "version": "116.0.5845.179", + "path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "minSupportedVersion": 64, + "majorVersion": "116" + }, + { + "name": "edge", + "family": "chromium", + "channel": "stable", + "displayName": "Edge", + "version": "116.0.1938.76", + "path": "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge", + "minSupportedVersion": 79, + "majorVersion": "116" + }, + { + "name": "electron", + "channel": "stable", + "family": "chromium", + "displayName": "Electron", + "version": "106.0.5249.51", + "path": "", + "majorVersion": 106 + } + ], + "chromeWebSecurity": true, + "clientCertificates": [], + "clientRoute": "/__/", + "configFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress.config.ts", + "cypressBinaryRoot": "/Users/miguelangarano/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app", + "cypressEnv": "production", + "defaultCommandTimeout": 4000, + "devServerPublicPathRoute": "/__cypress/src", + "downloadsFolder": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/downloads", + "env": { + "currents_temp_file": "/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-99075-DhSNMfp2WQcu", + "currents_debug_enabled": false + }, + "excludeSpecPattern": "*.hot-update.js", + "execTimeout": 60000, + "experimentalCspAllowList": false, + "experimentalFetchPolyfill": false, + "experimentalInteractiveRunEvents": false, + "experimentalMemoryManagement": false, + "experimentalModifyObstructiveThirdPartyCode": false, + "experimentalOriginDependencies": false, + "experimentalRunAllSpecs": false, + "experimentalSingleTabRunMode": false, + "experimentalSkipDomainInjection": null, + "experimentalSourceRewriting": false, + "experimentalStudio": false, + "experimentalWebKitSupport": false, + "fileServerFolder": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo", + "fixturesFolder": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/fixtures", + "hosts": null, + "includeShadowDom": false, + "isInteractive": true, + "isTextTerminal": true, + "keystrokeDelay": 0, + "modifyObstructiveCode": true, + "morgan": false, + "namespace": "__cypress", + "numTestsKeptInMemory": 0, + "pageLoadTimeout": 60000, + "platform": "darwin", + "port": null, + "projectId": null, + "projectName": "cypress-12-demo", + "projectRoot": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo", + "rawJson": { + "e2e": { + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "cypress/support/e2e.ts", + "specPattern": "cypress/*/**/*.spec.js", + "setupNodeEvents": "[Function setupNodeEvents]" + }, + "component": { + "specPattern": [ + "pages/__tests__/*.spec.tsx" + ], + "setupNodeEvents": "[Function setupNodeEvents]", + "devServer": { + "framework": "next", + "bundler": "webpack" + } + }, + "baseUrl": "https://todomvc.com/examples/vanillajs", + "supportFile": "cypress/support/e2e.ts", + "specPattern": "cypress/*/**/*.spec.js", + "setupNodeEvents": "[Function setupNodeEvents]", + "envFile": {}, + "projectRoot": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo", + "projectName": "cypress-12-demo", + "repoRoot": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13" + }, + "redirectionLimit": 20, + "repoRoot": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13", + "report": true, + "reporter": "spec", + "reporterOptions": null, + "reporterRoute": "/__cypress/reporter", + "requestTimeout": 5000, + "resolved": { + "animationDistanceThreshold": { + "value": 5, + "from": "default" + }, + "arch": { + "value": "arm64", + "from": "default" + }, + "baseUrl": { + "value": "https://todomvc.com/examples/vanillajs", + "from": "config" + }, + "blockHosts": { + "value": null, + "from": "default" + }, + "chromeWebSecurity": { + "value": true, + "from": "default" + }, + "clientCertificates": { + "value": [], + "from": "default" + }, + "defaultCommandTimeout": { + "value": 4000, + "from": "default" + }, + "downloadsFolder": { + "value": "cypress/downloads", + "from": "default" + }, + "env": { + "currents_temp_file": { + "value": "/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-99075-DhSNMfp2WQcu", + "from": "cli" + }, + "currents_debug_enabled": { + "value": false, + "from": "cli" + } + }, + "execTimeout": { + "value": 60000, + "from": "default" + }, + "experimentalCspAllowList": { + "value": false, + "from": "default" + }, + "experimentalFetchPolyfill": { + "value": false, + "from": "default" + }, + "experimentalInteractiveRunEvents": { + "value": false, + "from": "default" + }, + "experimentalRunAllSpecs": { + "value": false, + "from": "default" + }, + "experimentalMemoryManagement": { + "value": false, + "from": "default" + }, + "experimentalModifyObstructiveThirdPartyCode": { + "value": false, + "from": "default" + }, + "experimentalSkipDomainInjection": { + "value": null, + "from": "default" + }, + "experimentalOriginDependencies": { + "value": false, + "from": "default" + }, + "experimentalSourceRewriting": { + "value": false, + "from": "default" + }, + "experimentalSingleTabRunMode": { + "value": false, + "from": "default" + }, + "experimentalStudio": { + "value": false, + "from": "default" + }, + "experimentalWebKitSupport": { + "value": false, + "from": "default" + }, + "fileServerFolder": { + "value": "", + "from": "default" + }, + "fixturesFolder": { + "value": "cypress/fixtures", + "from": "default" + }, + "excludeSpecPattern": { + "value": "*.hot-update.js", + "from": "default" + }, + "includeShadowDom": { + "value": false, + "from": "default" + }, + "keystrokeDelay": { + "value": 0, + "from": "default" + }, + "modifyObstructiveCode": { + "value": true, + "from": "default" + }, + "nodeVersion": { + "from": "default" + }, + "numTestsKeptInMemory": { + "value": 0, + "from": "config" + }, + "platform": { + "value": "darwin", + "from": "default" + }, + "pageLoadTimeout": { + "value": 60000, + "from": "default" + }, + "port": { + "value": null, + "from": "default" + }, + "projectId": { + "value": null, + "from": "default" + }, + "redirectionLimit": { + "value": 20, + "from": "default" + }, + "reporter": { + "value": "spec", + "from": "default" + }, + "reporterOptions": { + "value": null, + "from": "default" + }, + "requestTimeout": { + "value": 5000, + "from": "default" + }, + "resolvedNodePath": { + "value": null, + "from": "default" + }, + "resolvedNodeVersion": { + "value": null, + "from": "default" + }, + "responseTimeout": { + "value": 30000, + "from": "default" + }, + "retries": { + "value": { + "runMode": 0, + "openMode": 0 + }, + "from": "default" + }, + "screenshotOnRunFailure": { + "value": true, + "from": "default" + }, + "screenshotsFolder": { + "value": "cypress/screenshots", + "from": "default" + }, + "slowTestThreshold": { + "value": 10000, + "from": "default" + }, + "scrollBehavior": { + "value": "top", + "from": "default" + }, + "supportFile": { + "value": "cypress/support/e2e.ts", + "from": "config" + }, + "supportFolder": { + "value": false, + "from": "default" + }, + "taskTimeout": { + "value": 60000, + "from": "default" + }, + "testIsolation": { + "value": true, + "from": "default" + }, + "trashAssetsBeforeRuns": { + "value": true, + "from": "default" + }, + "userAgent": { + "value": null, + "from": "default" + }, + "video": { + "value": true, + "from": "default" + }, + "videoCompression": { + "value": 32, + "from": "default" + }, + "videosFolder": { + "value": "cypress/videos", + "from": "default" + }, + "videoUploadOnPasses": { + "value": true, + "from": "default" + }, + "viewportHeight": { + "value": 660, + "from": "default" + }, + "viewportWidth": { + "value": 1000, + "from": "default" + }, + "waitForAnimations": { + "value": true, + "from": "default" + }, + "watchForFileChanges": { + "value": false, + "from": "config" + }, + "specPattern": { + "value": "cypress/*/**/*.spec.js", + "from": "config" + }, + "browsers": { + "value": [ + { + "name": "chrome", + "family": "chromium", + "channel": "stable", + "displayName": "Chrome", + "version": "116.0.5845.179", + "path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "minSupportedVersion": 64, + "majorVersion": "116" + }, + { + "name": "edge", + "family": "chromium", + "channel": "stable", + "displayName": "Edge", + "version": "116.0.1938.76", + "path": "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge", + "minSupportedVersion": 79, + "majorVersion": "116" + }, + { + "name": "electron", + "channel": "stable", + "family": "chromium", + "displayName": "Electron", + "version": "106.0.5249.51", + "path": "", + "majorVersion": 106 + } + ], + "from": "runtime" + }, + "hosts": { + "value": null, + "from": "default" + }, + "isInteractive": { + "value": true, + "from": "default" + } + }, + "resolvedNodePath": "/Users/miguelangarano/.nvm/versions/node/v18.14.2/bin/node", + "resolvedNodeVersion": "18.14.2", + "responseTimeout": 30000, + "retries": { + "runMode": 0, + "openMode": 0 + }, + "screenshotOnRunFailure": true, + "screenshotsFolder": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots", + "scrollBehavior": "top", + "setupNodeEvents": "[Function setupNodeEvents]", + "slowTestThreshold": 10000, + "socketId": "7qpxyfdhn8", + "socketIoCookie": "__socket", + "socketIoRoute": "/__socket", + "specPattern": "cypress/*/**/*.spec.js", + "supportFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support/e2e.ts", + "supportFolder": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support", + "taskTimeout": 60000, + "testIsolation": true, + "trashAssetsBeforeRuns": true, + "userAgent": null, + "version": "12.17.4", + "video": true, + "videoCompression": 32, + "videoUploadOnPasses": true, + "videosFolder": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos", + "viewportHeight": 660, + "viewportWidth": 1000, + "waitForAnimations": true, + "watchForFileChanges": false, + "testingType": "e2e" + }, + "status": "finished", + "runUrl": "https://app.currents.dev/run/6f943a835aca8b4f" +} \ No newline at end of file diff --git a/e2e/cypress-12-demo/package.json b/e2e/cypress-12-demo/package.json new file mode 100644 index 0000000..20136c4 --- /dev/null +++ b/e2e/cypress-12-demo/package.json @@ -0,0 +1,22 @@ +{ + "name": "cypress-12-demo", + "version": "0.0.0", + "private": true, + "scripts": { + "files": "ts-node scripts/files.ts", + "validate": "ts-node scripts/validate.ts", + "test": "ts-node scripts/test.ts" + }, + "dependencies": { + "colors": "^1.4.0", + "cypress-cloud": "*" + }, + "devDependencies": { + "@types/chai": "^4.3.6", + "@types/node": "^17.0.12", + "chai": "^4.3.8", + "cypress": "^12.17.4", + "tsconfig": "*", + "typescript": "^5.2.2" + } +} diff --git a/e2e/cypress-12-demo/scripts/files.ts b/e2e/cypress-12-demo/scripts/files.ts new file mode 100644 index 0000000..fc463dd --- /dev/null +++ b/e2e/cypress-12-demo/scripts/files.ts @@ -0,0 +1,56 @@ +import { run } from "cypress-cloud"; +import fs from "fs"; +(async function runTests() { + const projectId = process.env.CURRENTS_PROJECT_ID || "projectId"; + const recordKey = process.env.CURRENTS_RECORD_KEY || "recordKey"; + const apiKey = process.env.CURRENTS_API_KEY || "apiKey"; + const apiUrl = + process.env.CURRENTS_RUN_BASE_URL || "https://api.currents.dev/v1/runs/"; + + const ciBuildId = `run-api-smoke-${new Date().toISOString()}`; + const result: any = await run({ + ciBuildId, + projectId, + recordKey, + batchSize: 4, + }); + + const headers = new Headers({ + Authorization: `Bearer ${apiKey}`, + }); + + fs.writeFile( + "data-references/ccy-1.10-cypress-12/cypress-cloud-output-reference.json", + JSON.stringify(result), + (err) => { + if (err) throw err; + console.log("file saved"); + } + ); + + const runUrl = result.runUrl; + + await fetch(`${apiUrl}${runUrl.split("run/")[1]}`, { + method: "GET", + headers, + }) + .then((response) => { + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + return response.json(); + }) + .then((data) => { + fs.writeFile( + "data-references/ccy-1.10-cypress-12/currents-api-output-reference.json", + JSON.stringify(data), + (err) => { + if (err) throw err; + console.log("file saved"); + } + ); + }) + .catch((error) => { + console.error("There was an error in fetch request:", error.message); + }); +})(); diff --git a/e2e/cypress-12-demo/scripts/test.ts b/e2e/cypress-12-demo/scripts/test.ts new file mode 100644 index 0000000..011e5a6 --- /dev/null +++ b/e2e/cypress-12-demo/scripts/test.ts @@ -0,0 +1,466 @@ +import fs from "fs"; +import { expect } from "chai"; +import { run } from "cypress-cloud"; +import colors from "colors"; +colors.enable(); + +type ComparisonResult = { + path: string; + valueA: any; + valueB: any; + isEqual: boolean; + note?: string; +}; + +function compareObjectsRecursively( + objA: any, + objB: any, + path: string = "" +): ComparisonResult[] { + let results: ComparisonResult[] = []; + + // If both are objects but neither arrays nor strings. + if ( + typeof objA === "object" && + objA !== null && + !(objA instanceof Array) && + typeof objA !== "string" && + typeof objB === "object" && + objB !== null && + !(objB instanceof Array) && + typeof objB !== "string" + ) { + const keys = new Set([...Object.keys(objA), ...Object.keys(objB)]); + + keys.forEach((key) => { + const newPath = path ? `${path}.${key}` : key; + results = results.concat( + compareObjectsRecursively(objA[key], objB[key], newPath) + ); + }); + } + // If both are arrays + else if (Array.isArray(objA) && Array.isArray(objB)) { + const maxLength = Math.max(objA.length, objB.length); + for (let i = 0; i < maxLength; i++) { + const newPath = `${path}[${i}]`; + results = results.concat( + compareObjectsRecursively(objA[i], objB[i], newPath) + ); + } + } else { + const isEqual = objA === objB; + const note = + objA === undefined + ? "Does not exist in A" + : objB === undefined + ? "Does not exist in B" + : undefined; + + results.push({ + path: path || "root", + valueA: objA, + valueB: objB, + isEqual: isEqual, + note: note, + }); + } + + return results; +} + +const avoidableProperties: { + property: string | RegExp; + mustHave: boolean; + isRegex?: boolean; +}[] = [ + { + property: "runId", + mustHave: true, + }, + { + property: "createdAt", + mustHave: true, + }, + { + property: "groupId", + mustHave: true, + }, + { + property: "createdAt", + mustHave: true, + }, + { + property: "ciBuildId", + mustHave: true, + }, + { + property: "instanceId", + mustHave: true, + }, + { + property: "claimedAt", + mustHave: true, + }, + { + property: "completedAt", + mustHave: true, + }, + { + property: "machineId", + mustHave: true, + }, + { + property: "videoUrl", + mustHave: true, + }, + { + property: "duration", + mustHave: true, + }, + { + property: "endedAt", + mustHave: true, + }, + { + property: "startedAt", + mustHave: true, + }, + { + property: "wallClockDuration", + mustHave: true, + }, + { + property: "wallClockStartedAt", + mustHave: true, + }, + { + property: "wallClockEndedAt", + mustHave: true, + }, + { + property: "screenshotId", + mustHave: true, + }, + { + property: "takenAt", + mustHave: true, + }, + { + property: "screenshotURL", + mustHave: true, + }, + { + property: "size", + mustHave: false, + }, + { + property: "dimensions", + mustHave: false, + }, + { + property: "multipart", + mustHave: false, + }, + { + property: "specName", + mustHave: false, + }, + { + property: "testFailure", + mustHave: false, + }, + { + property: "scaled", + mustHave: false, + }, + { + property: "blackout", + mustHave: false, + }, + { + property: "blackout", + mustHave: false, + }, + { + property: "totalDuration", + mustHave: true, + }, + { + property: "start", + mustHave: true, + }, + { + property: "end", + mustHave: true, + }, + { + property: "error.message", + mustHave: true, + }, + { + property: "error.stack", + mustHave: true, + }, + { + property: "lifecycle", + mustHave: true, + }, + { + property: "fnDuration", + mustHave: true, + }, + { + property: "afterFnDuration", + mustHave: true, + }, + { + property: "videoTimestamp", + mustHave: true, + }, + { + property: "config.resolved.env.currents_temp_file.value", + mustHave: true, + }, + { + property: "socketId", + mustHave: true, + }, + { + property: "runUrl", + mustHave: true, + }, + { + property: "commit.message", + mustHave: true, + }, + { + property: "commit.sha", + mustHave: true, + }, + { + property: "cypressVersion", + mustHave: true, + }, + { + property: "env.currents_temp_file", + mustHave: true, + }, + { + property: "config.browsers[0].version", + mustHave: true, + }, + { + property: "config.resolved.browsers.value[0].version", + mustHave: true, + }, +]; + +const avoidedButNeedeProperties: { + property: string | RegExp; + mustHave: boolean; + isRegex?: boolean; +}[] = [ + { + property: + /runs\[\d+\]\.tests\[\d+\]\.attempts\[\d+\]\.timings\.after each\[1\]/, + mustHave: true, + isRegex: true, + }, + { + property: /runs\[\d+\]\.tests\[\d+\]\.attempts\[\d+\]\.timings\.after all/, + mustHave: true, + isRegex: true, + }, + { + property: "runs[2].tests[0].attempts[0]", + mustHave: true, + }, + { + property: "runs[2].tests[0].testId", + mustHave: true, + }, +]; + +const similarProperties: { property: string; similarProperty: string }[] = []; + +function isAvoidableProperty(property: string) { + const avoidableData = [ + ...avoidableProperties, + ...avoidedButNeedeProperties, + ].find((item) => { + if (item.isRegex) { + return (item.property as RegExp).test(property); + } + + return property.includes(item.property as string); + }); + if (avoidableData) { + return avoidableData; + } + return; +} + +function isSimilarProperty(propertyA: string) { + const similarData = similarProperties.find((item) => + propertyA.includes(item.property) + ); + if (similarData) { + return similarData; + } + return; +} + +function testEachResults(results: ComparisonResult[]) { + const errors: string[] = []; + results.forEach((result) => { + try { + if (result.valueA) { + const avoidableData = isAvoidableProperty(result.path); + const similarData = isSimilarProperty(result.path); + + if (similarData) { + const similarPath = result.path.split(similarData.property); + const valueB = results.find( + (item) => + item.path === `${similarPath[0]}${similarData.similarProperty}` + )?.valueB; + expect( + result.valueA, + `The values are not equal at: ${result.path}. ${result.note ?? ""}` + ).to.equal(valueB); + return; + } + + if (!avoidableData) { + expect( + result.valueA, + `The values are not equal at: ${result.path}. ${result.note ?? ""}` + ).to.equal(result.valueB); + return; + } + + if (avoidableData.mustHave) { + expect( + result.valueB, + `The values at ${result.path} does not exist and it should. ${ + result.note ?? "" + }` + ).not.to.equal("Does not exist"); + expect( + result.valueB, + `The values at ${result.path} does not exist and it should. ${ + result.note ?? "" + }` + ).not.to.equal("undefined"); + return; + } + } + } catch (e: any) { + const error = `${errors.length}.- ${e.toString()}`; + errors.push(error); + console.log(error.red); + } + }); + return errors; +} + +async function runTests() { + const projectId = process.env.CURRENTS_PROJECT_ID || "projectId"; + const recordKey = process.env.CURRENTS_RECORD_KEY || "recordKey"; + + const ciBuildId = `run-api-smoke-${new Date().toISOString()}`; + const result: any = await run({ + ciBuildId, + projectId, + recordKey, + batchSize: 4, + }); + + return result; +} + +async function getApiData(runUrl: string) { + const apiKey = process.env.CURRENTS_API_KEY || "apiKey"; + const apiUrl = + process.env.CURRENTS_RUN_BASE_URL || "https://api.currents.dev/v1/runs/"; + + const headers = new Headers({ + Authorization: `Bearer ${apiKey}`, + }); + + try { + const response = await fetch(`${apiUrl}${runUrl.split("run/")[1]}`, { + method: "GET", + headers, + }); + const result = await response.json(); + + return result; + } catch (e: any) { + throw new Error(e.toString()); + } +} + +(async function runTest() { + try { + const originalCurrentApiFile = fs.readFileSync( + "data-references/ccy-1.9.4-cypress-12/currents-api-output-reference.json", + "utf8" + ); + const originalCypressCloudFile = fs.readFileSync( + "data-references/ccy-1.9.4-cypress-12/cypress-cloud-output-reference.json", + "utf8" + ); + + const originalCurrentApi = JSON.parse(originalCurrentApiFile); + const originalCypressCloud = JSON.parse(originalCypressCloudFile); + + const cypressCloudData = await runTests(); + const currentsApiData = await getApiData(cypressCloudData.runUrl); + + const modifiedCurrentApi = currentsApiData; + const modifiedCypressCloud = cypressCloudData; + + const currentsApiResults = compareObjectsRecursively( + originalCurrentApi, + modifiedCurrentApi + ); + + console.log("Starting test: Currents API output".yellow); + + const currentsApiErrors = testEachResults(currentsApiResults); + + if (currentsApiErrors.length === 0) { + console.log( + "Test Passed: Currents API output is the same in ccy 1.9 cypress 12 without change and ccy 1.10 cypress 12 with changes" + .green + ); + } + + console.log("Starting test: Cypress Cloud output".yellow); + + const cypressCloudResults = compareObjectsRecursively( + originalCypressCloud, + modifiedCypressCloud + ); + + const cypressCloudErrors = testEachResults(cypressCloudResults); + + if (cypressCloudErrors.length === 0) { + console.log( + "Test Passed: Cypress Cloud output is the same in ccy 1.9 cypress 12 without change and ccy 1.9 cypress 12 with changes" + .green + ); + } + + if (currentsApiErrors.length > 0 || cypressCloudErrors.length > 0) { + process.exit(1); + } else { + process.exit(0); + } + } catch (err) { + console.error("Process error:", err); + process.exit(1); + } +})(); diff --git a/e2e/cypress-12-demo/scripts/validate.ts b/e2e/cypress-12-demo/scripts/validate.ts new file mode 100644 index 0000000..1c0439d --- /dev/null +++ b/e2e/cypress-12-demo/scripts/validate.ts @@ -0,0 +1,122 @@ +import fs from "fs"; + +type ComparisonResult = { + path: string; + valueA: any; + valueB: any; + isEqual: boolean; + note?: string; +}; + +function compareObjectsRecursively( + objA: any, + objB: any, + path: string = "" +): ComparisonResult[] { + let results: ComparisonResult[] = []; + + // Si ambos son objetos pero no arrays ni strings + if ( + typeof objA === "object" && + objA !== null && + !(objA instanceof Array) && + typeof objA !== "string" && + typeof objB === "object" && + objB !== null && + !(objB instanceof Array) && + typeof objB !== "string" + ) { + const keys = new Set([...Object.keys(objA), ...Object.keys(objB)]); + + keys.forEach((key) => { + const newPath = path ? `${path}.${key}` : key; + results = results.concat( + compareObjectsRecursively(objA[key], objB[key], newPath) + ); + }); + } + // Si ambos son arrays + else if (Array.isArray(objA) && Array.isArray(objB)) { + const maxLength = Math.max(objA.length, objB.length); + for (let i = 0; i < maxLength; i++) { + const newPath = `${path}[${i}]`; + results = results.concat( + compareObjectsRecursively(objA[i], objB[i], newPath) + ); + } + } else { + const isEqual = objA === objB; + const note = + objA === undefined + ? "Does not exist in A" + : objB === undefined + ? "Does not exist in B" + : undefined; + + results.push({ + path: path || "root", + valueA: objA, + valueB: objB, + isEqual: isEqual, + note: note, + }); + } + + return results; +} + +(async function runValidation() { + try { + const originalCurrentApiFile = fs.readFileSync( + "data-references/ccy-1.9.4-cypress-12/currents-api-output-reference.json", + "utf8" + ); + const originalCypressCloudFile = fs.readFileSync( + "data-references/ccy-1.9.4-cypress-12/cypress-cloud-output-reference.json", + "utf8" + ); + + const originalCurrentApi = JSON.parse(originalCurrentApiFile); + const originalCypressCloud = JSON.parse(originalCypressCloudFile); + + const modifiedCurrentApiFile = fs.readFileSync( + "data-references/ccy-1.10-cypress-12/currents-api-output-reference.json", + "utf8" + ); + const modifiedCypressCloudFile = fs.readFileSync( + "data-references/ccy-1.10-cypress-12/cypress-cloud-output-reference.json", + "utf8" + ); + + const modifiedCurrentApi = JSON.parse(modifiedCurrentApiFile); + const modifiedCypressCloud = JSON.parse(modifiedCypressCloudFile); + + const apiComparisonResult = compareObjectsRecursively( + originalCurrentApi, + modifiedCurrentApi + ); + fs.writeFile( + "validation-results/currents-api-validation.json", + JSON.stringify(apiComparisonResult), + (err) => { + if (err) throw err; + console.log("file saved"); + } + ); + + const packageComparisonResult = compareObjectsRecursively( + originalCypressCloud, + modifiedCypressCloud + ); + fs.writeFile( + "validation-results/cypress-cloud-validation.json", + JSON.stringify(packageComparisonResult), + (err) => { + if (err) throw err; + console.log("file saved"); + } + ); + } catch (err) { + console.error("Process error:", err); + } +})(); diff --git a/e2e/cypress-12-demo/tsconfig.json b/e2e/cypress-12-demo/tsconfig.json new file mode 100644 index 0000000..83d1ff0 --- /dev/null +++ b/e2e/cypress-12-demo/tsconfig.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Next.js", + "compilerOptions": { + "baseUrl": ".", + "composite": false, + "declaration": true, + "declarationMap": true, + "inlineSources": false, + "moduleResolution": "node", + "noUnusedLocals": false, + "noUnusedParameters": false, + "preserveWatchOutput": true, + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "incremental": true, + "esModuleInterop": true, + "module": "esnext", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve" + }, + "ts-node": { + "compilerOptions": { + "module": "CommonJS" + } + }, + + "exclude": ["node_modules"] +} diff --git a/e2e/cypress-12-demo/validation-results/currents-api-validation.json b/e2e/cypress-12-demo/validation-results/currents-api-validation.json new file mode 100644 index 0000000..f9e0c5e --- /dev/null +++ b/e2e/cypress-12-demo/validation-results/currents-api-validation.json @@ -0,0 +1 @@ +[{"path":"status","valueA":"OK","valueB":"OK","isEqual":true},{"path":"data.runId","valueA":"6f943a835aca8b4f","valueB":"77cec387a5c57c87","isEqual":false},{"path":"data.projectId","valueA":"2cI1I5","valueB":"2cI1I5","isEqual":true},{"path":"data.createdAt","valueA":"2023-09-08T03:26:39.793Z","valueB":"2023-09-08T13:42:31.499Z","isEqual":false},{"path":"data.cypressVersion","valueA":"12.17.4","valueB":"12.17.4","isEqual":true},{"path":"data.cancellation","valueA":null,"valueB":null,"isEqual":true},{"path":"data.timeout.isTimeout","valueA":false,"valueB":false,"isEqual":true},{"path":"data.groups[0].groupId","valueA":"run-api-smoke-2023-09-08T03:26:36.052Z","valueB":"run-api-smoke-2023-09-08T13:42:28.508Z","isEqual":false},{"path":"data.groups[0].platform.osName","valueA":"darwin","valueB":"darwin","isEqual":true},{"path":"data.groups[0].platform.osVersion","valueA":"22.5.0","valueB":"22.5.0","isEqual":true},{"path":"data.groups[0].platform.browserName","valueA":"Electron","valueB":"Electron","isEqual":true},{"path":"data.groups[0].platform.browserVersion","valueA":"106.0.5249.51","valueB":"106.0.5249.51","isEqual":true},{"path":"data.groups[0].createdAt","valueA":"2023-09-08T03:26:39.793Z","valueB":"2023-09-08T13:42:31.499Z","isEqual":false},{"path":"data.groups[0].instances.overall","valueA":4,"valueB":4,"isEqual":true},{"path":"data.groups[0].instances.claimed","valueA":4,"valueB":4,"isEqual":true},{"path":"data.groups[0].instances.complete","valueA":4,"valueB":4,"isEqual":true},{"path":"data.groups[0].instances.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"data.groups[0].instances.failures","valueA":2,"valueB":2,"isEqual":true},{"path":"data.groups[0].tests.overall","valueA":7,"valueB":7,"isEqual":true},{"path":"data.groups[0].tests.passes","valueA":4,"valueB":4,"isEqual":true},{"path":"data.groups[0].tests.failures","valueA":2,"valueB":2,"isEqual":true},{"path":"data.groups[0].tests.pending","valueA":1,"valueB":1,"isEqual":true},{"path":"data.groups[0].tests.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.groups[0].tests.retries","valueA":1,"valueB":1,"isEqual":true},{"path":"data.groups[0].tests.flaky","valueA":1,"valueB":1,"isEqual":true},{"path":"data.meta.ciBuildId","valueA":"run-api-smoke-2023-09-08T03:26:36.052Z","valueB":"run-api-smoke-2023-09-08T13:42:28.508Z","isEqual":false},{"path":"data.meta.commit.branch","valueA":"fix/cypress-13-validation","valueB":"fix/cypress-13-validation","isEqual":true},{"path":"data.meta.commit.remoteOrigin","valueA":null,"valueB":null,"isEqual":true},{"path":"data.meta.commit.authorEmail","valueA":"miguelangarano@gmail.com","valueB":"miguelangarano@gmail.com","isEqual":true},{"path":"data.meta.commit.authorName","valueA":"Miguel Langarano","valueB":"Miguel Langarano","isEqual":true},{"path":"data.meta.commit.message","valueA":"added viewer for results comparison\n","valueB":"added viewer for results comparison\n","isEqual":true},{"path":"data.meta.commit.sha","valueA":"675f830a7b1fb6ff74de7830a312bc8fb417f8ce","valueB":"675f830a7b1fb6ff74de7830a312bc8fb417f8ce","isEqual":true},{"path":"data.meta.platform.osName","valueA":"darwin","valueB":"darwin","isEqual":true},{"path":"data.meta.platform.osVersion","valueA":"22.5.0","valueB":"22.5.0","isEqual":true},{"path":"data.meta.platform.browserName","valueA":"Electron","valueB":"Electron","isEqual":true},{"path":"data.meta.platform.browserVersion","valueA":"106.0.5249.51","valueB":"106.0.5249.51","isEqual":true},{"path":"data.specs[0].groupId","valueA":"run-api-smoke-2023-09-08T03:26:36.052Z","valueB":"run-api-smoke-2023-09-08T13:42:28.508Z","isEqual":false},{"path":"data.specs[0].spec","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"data.specs[0].instanceId","valueA":"UvwcsmMNZYZo","valueB":"qMAYSIcFMtXQ","isEqual":false},{"path":"data.specs[0].claimedAt","valueA":"2023-09-08T03:26:40.339Z","valueB":"2023-09-08T13:42:31.887Z","isEqual":false},{"path":"data.specs[0].completedAt","valueA":"2023-09-08T03:27:01.544Z","valueB":"2023-09-08T13:42:52.389Z","isEqual":false},{"path":"data.specs[0].machineId","valueA":"1OGNRsYXmc6T","valueB":"yHaFqM5V6gKh","isEqual":false},{"path":"data.specs[0].worker","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[0].results.videoUrl","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/UvwcsmMNZYZo_bhdh6SqfUfJV.mp4?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=RaYxFGecTNV3OWWxJQBTnKipuLBm-Z50XUum-NtYsqsv97HG~9BaxNBXMqaiagOKGr8zowM0zMM6nhLeoXE9g4-K8iBOAv8Ez0xASLT8fgRUA~z4PNSnv-hiuaT1m0g33~eBAI5xuk6dRLeqVf-x37Ev~xLX4bldOsSJ0HrcgfDaRpISCy8~1vumyrS9SVIS93EgCy1nOPmrlMnx-PV5M37oosKYNz3tA~YsorHcjQP~KweHerxmLhUjOyMXIuvQWe-Xaa8kCXltjys4-QSi2~pGrX8ArcDveZQ~ukUO9makARRqsoANrBm4ZUMUC2ATNvhhqNpL-98~jItDpFRRjg__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/qMAYSIcFMtXQ_tJPh3Axtz77x.mp4?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=OfUb0HaYtfK9IrP3c2-UIHT7bmm~DCGqySgHcfQmZCYLbB~W~pI3gjtJ1NvDUA1SYzL3PrbPe6UVtmhdzd0ABgsIBTwzqUdzEuMOofUDNgI7BsPongzGm86VJ~Lg5aw9ZaV861cAbrn-FAV1x5EQvYOE5HTd1PYdHsp5CdR80FEyPUvJqbFRxqkhaVjFWHdSI5kjOUoXhB3dUBMZPQM2ps1b2zTGJ99g2OZ3orwgTJJwh1dFt57-nOnWBH1iceiqnw0qmf1i-dDtP0VYXqnfC8Z4FTocNwhmDi1fsWaYhXWGrurDSUrmzUv8kDv85y~qEGrIvyzdgvvro2M1eJgZhw__","isEqual":false},{"path":"data.specs[0].results.stats.duration","valueA":13947,"valueB":13846,"isEqual":false},{"path":"data.specs[0].results.stats.endedAt","valueA":"2023-09-08T03:26:59.631Z","valueB":"2023-09-08T13:42:50.598Z","isEqual":false},{"path":"data.specs[0].results.stats.startedAt","valueA":"2023-09-08T03:26:45.684Z","valueB":"2023-09-08T13:42:36.752Z","isEqual":false},{"path":"data.specs[0].results.stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[0].results.stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[0].results.stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[0].results.stats.wallClockDuration","valueA":13947,"valueB":13846,"isEqual":false},{"path":"data.specs[0].results.stats.wallClockStartedAt","valueA":"2023-09-08T03:26:45.684Z","valueB":"2023-09-08T13:42:36.752Z","isEqual":false},{"path":"data.specs[0].results.stats.wallClockEndedAt","valueA":"2023-09-08T03:26:59.631Z","valueB":"2023-09-08T13:42:50.598Z","isEqual":false},{"path":"data.specs[0].results.screenshots[0].screenshotId","valueA":"BhmIYMZH33yWpSIfVsDZq","valueB":"OIFkUXw8B2U8OqJAdZ0o1","isEqual":false},{"path":"data.specs[0].results.screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[0].results.screenshots[0].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[0].results.screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[0].takenAt","valueA":"2023-09-08T03:26:50.486Z","valueB":"2023-09-08T13:42:41.446Z","isEqual":false},{"path":"data.specs[0].results.screenshots[0].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/dh7xKpIdsolZ.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=EZi3YON9~M0vPswgja9~uX7l2VjyDfAXEFoahI4S4wpVFA3c~L5KWl69Lw9JcN1fpndGNU~EmFuDT6d9fh38leLrt-dtBdd98oTWsMzWCgU4huANp5gkF22n8LJ99PJqtwyxP5J9m3yHR0Sn4Tv2AQExVNtmjAWM~cJdrO0u7hEjFp5W-i~pN~-9tYvnMlT~eEDhFN057tCUx2Nqdh1s1NHdjJsJgU9F1Yr~mHvV0nzKkf9khTsEG-KeHP5VxhltQzk68QNv3ytCtpbMMpq7z7ubcJsOT7Rk8E7hbjSINt3wq69Vy0G9CDe4U3jA~cEJPVZ6pnPuaCV5TJTaFyM7~Q__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/ZlKLfoSVgYCc.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=a1sVvwQiIT8GjfjP60bArZsnt1IebqEkbOqTKL-Xu1v2XL3dcFbJoOMORT1xqieGVa5Gs2qgWMJwxQ7yUg9UiEmIJ4bMHowVNm41DYEPH9zeM7ZxSBwonCixdMboQY2C2LSqjTjaJhogvFLPerAdlq7ZijB3RS9c8tEndwe5xW2DgpmRdCMhG~Ugu6jQjprvzCbCUQOL4czb3AHJv9o51rzandeUBUnIx7ExZ9H20JJUMvVQOoJ4IipfFFqpy5W~AHrhgZR8MCD1pfCIE7HbvB0btm6OXudUKdIxFebbj7aaZdoM6mXju3N~u-8rMzZLE6lJTggMui6zj-8B4gJEiQ__","isEqual":false},{"path":"data.specs[0].results.screenshots[0].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[0].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[0].size","valueB":349423,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[0].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[0].duration","valueB":304,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[1].screenshotId","valueA":"jyku9VtXtsjeq_eZiG3s9","valueB":"5BJFDWKXTwbubxcj1owJc","isEqual":false},{"path":"data.specs[0].results.screenshots[1].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[0].results.screenshots[1].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[0].results.screenshots[1].testAttemptIndex","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[0].results.screenshots[1].takenAt","valueA":"2023-09-08T03:26:54.942Z","valueB":"2023-09-08T13:42:45.908Z","isEqual":false},{"path":"data.specs[0].results.screenshots[1].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/JGy1yDNmoM9E.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=eCqTDLG9IAXVXEldGbSKSOvtyYGTiVUvJv2Tgu3o5eNOHHOWsidB6-~U4wW~PKpZfftVmR5U86pJFgetOSAgc36I7BwMqo7LvAGOh92~VKthRde2hTte5NJNgjj4ZdW90uCCgkGz3SiIf~vHKK2FdosGHkWRJZChQQkOYE8iGTBMw4Iq~LIA4d70E2OubSKUbYJ-B96mL53EBQhdRfkiSUYCTpO2ReoS3sJdFJx3mGWB5AGpPsOopZa1iSYKrJsljZmuBefXKNUHKYw3cNu9K9KThtdMJAA0Kt5-EtB1u4UAGw58i1TJPV5Tc35YqK7gJmeZCu1a5j-JipBO3EreNQ__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/7DEScNt5RYar.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=jWIwCe42mSjR~2ZTEPdkvqzQTH6pidjOPERzDf45hB9Rfw0caJz19mO9LGWDzl6ROQs22pgUYj754EFQrs-6klMYH~1RA162ajPujkraCKvKh0r0mcUjI7XMbtJbH-2ptHFjVwbT~hks7v2WXWY1Z6BEdkBWFQc~9QcksRpdD6GlpdFdEoTZJOqA4DAGDog8oLsf0vy3KjwBMUmBGg-Ss8l9xkK9kmewK-x3JLCSpc~edwI3zDGenxYadT7ZjTI--lBuRCuo0s8bPwHLM87XpvRXwicT~J5Sx7XZeyeJHruA85f4kB8NCxeeeQ22hFNCZeru~QGVil5SpSXnjjTo4g__","isEqual":false},{"path":"data.specs[0].results.screenshots[1].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[1].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[1].size","valueB":360089,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[1].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[1].multipart","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[1].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[1].testFailure","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[1].scaled","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[1].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[1].duration","valueB":214,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[2].screenshotId","valueA":"2FIfErAPtl2b2vsgJQhc5","valueB":"QN2J2LHZGeuCrOyxOsQsG","isEqual":false},{"path":"data.specs[0].results.screenshots[2].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[0].results.screenshots[2].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[0].results.screenshots[2].testAttemptIndex","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[0].results.screenshots[2].takenAt","valueA":"2023-09-08T03:26:59.369Z","valueB":"2023-09-08T13:42:50.334Z","isEqual":false},{"path":"data.specs[0].results.screenshots[2].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/06jiVfjeiszk.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=qMvUYaN0I5AgYMomaLf0L5N-~WhAVTzgRi0MZPeq1qIaa1YzqwnT8dQb~v670hIq0QIa8lnS2iCloyzJKHQPbkLq~uKx-PG8UbhBBvWWyr0NpjiZ4gUfopSj5eVnyjcDXvkBJNST8ZBuKaIjX9HL630fH9PPef5Qs3TFbxuoIB7A1xSfBLFPZGArvH3rivcNGDkZ3VLEsW1p14DhkAAsYONYtM8kLGivmzTtsFdR3i7s6cu1HIbUorIiYvisiV-hmWXfrr1FrrcXFzfogaIo1JY-Mr-HxxE3zg2vO-2-uX0d0~9kLgIEkkpieTRdVL6wJ1H03RvDZtMK38Jlm6gBRA__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/iFNMNa1CHXLX.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=FgBKvyaLOOmlB6HwQSaO2-2PbHgv6Ngn9Ot6zP~KoHBq6KsH3NIbq9QV97RIRwrzB5wPGCAoNj-rmxYhhO5iSFlXrjtDtHjklibsI6Qbh7BhVI7FaCizIHI7ojTS02xVaCmSTP55jHbKkosRjZo1mVFJUq2ra~Ob8O1ZbFUnVuLVyURUNPrOrfhjs~efoemi1dz6ecYIBkqGybDe82vhyhcmSFzu6G1gfpy1pv0kq4Vp4YK70VCDkG64btpLcvmMKkvpznhGjRiR7PaamYy7WL8UQriVZKD5QkAQsl8yh6Ms2T3zjnsYbQUhkVAt65D2l20uKNs4WGmnykr9tyKqnQ__","isEqual":false},{"path":"data.specs[0].results.screenshots[2].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[2].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[2].size","valueB":363302,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[2].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[2].multipart","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[2].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[2].testFailure","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[2].scaled","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[2].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.screenshots[2].duration","valueB":206,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[0].results.exception","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[0].results.flaky","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].groupId","valueA":"run-api-smoke-2023-09-08T03:26:36.052Z","valueB":"run-api-smoke-2023-09-08T13:42:28.508Z","isEqual":false},{"path":"data.specs[1].spec","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"data.specs[1].instanceId","valueA":"zdWGdtcaCuQn","valueB":"qdTJDmiKQ2wa","isEqual":false},{"path":"data.specs[1].claimedAt","valueA":"2023-09-08T03:26:40.357Z","valueB":"2023-09-08T13:42:31.904Z","isEqual":false},{"path":"data.specs[1].completedAt","valueA":"2023-09-08T03:27:34.715Z","valueB":"2023-09-08T13:43:22.717Z","isEqual":false},{"path":"data.specs[1].machineId","valueA":"1OGNRsYXmc6T","valueB":"yHaFqM5V6gKh","isEqual":false},{"path":"data.specs[1].worker","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[1].results.videoUrl","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/zdWGdtcaCuQn_8UpWRCgEUGLI.mp4?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=kU5KiY7cE84BrwFb8laM7Zl2ALxWdexwq22K-ktG5o6Q-hv-fE8Ko-fyp0VPlQmWTkQJRKq9ZpVMpe-3jaFOZOUUi9ExXfL2AfHY3cWLg8gS0-oiEDWP6S38fEloWL8QWsFV1lpT8G23LU76zzAb-IkzTQ5EumkDy1rwcY8XZ4D9O5QPCons88f9u5vacMUfGgLFXVR7MwX4HkME5PuFcaea~izao428Ff-Pg4zlUcE~2jWYQz0VGJXznu68uMC0PNINliv6Rz555Az-zblIwiaCjIobrRRCq~g1aohyppeUbD-5x2uEJ8~rOc0DOEQZMxAXmjhv02Gu3EGibQDdBg__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/qdTJDmiKQ2wa_ukHle2cAQBAs.mp4?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=XWbRzVvrvQm9SGhIYTQB8o-8d1T841TkfYYLvY6u0qrZXgI9BzK4T96QLjbcXgJfClDuYIZKI0lsVtYWg-vVoKixOmSnY7AGLQZ5bcnVGJ93lh99aGt6v2~wnGeSZkdrBNtgc4SZ0rfidmoDnebbH3qrOP8F7pjKLosL3RMHIOGPTovJvfaUyEk07ZEPKAjj4PUrCyOs1aiIHnNItg9mamv4EVdMUfj0Gh261d4dZRJJzvliBZlqISNScpEbXCi9UGSH0PveVR~eI8bcXy3~n8~TcxkcV5cjD781XNhVNq2Ji53IWyfchaEGcwxjvkj-ZgA2~t0BsN8WCNTn~Hs--g__","isEqual":false},{"path":"data.specs[1].results.stats.duration","valueA":20745,"valueB":18212,"isEqual":false},{"path":"data.specs[1].results.stats.endedAt","valueA":"2023-09-08T03:27:32.145Z","valueB":"2023-09-08T13:43:20.716Z","isEqual":false},{"path":"data.specs[1].results.stats.startedAt","valueA":"2023-09-08T03:27:11.400Z","valueB":"2023-09-08T13:43:02.504Z","isEqual":false},{"path":"data.specs[1].results.stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[1].results.stats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[1].results.stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[1].results.stats.tests","valueA":3,"valueB":3,"isEqual":true},{"path":"data.specs[1].results.stats.wallClockDuration","valueA":20745,"valueB":18212,"isEqual":false},{"path":"data.specs[1].results.stats.wallClockStartedAt","valueA":"2023-09-08T03:27:11.400Z","valueB":"2023-09-08T13:43:02.504Z","isEqual":false},{"path":"data.specs[1].results.stats.wallClockEndedAt","valueA":"2023-09-08T03:27:32.145Z","valueB":"2023-09-08T13:43:20.716Z","isEqual":false},{"path":"data.specs[1].results.screenshots[0].screenshotId","valueA":"Qj1yY2Vneuehs3CfGypSC","valueB":"QgWsuBQRTZMQOrhnro_ro","isEqual":false},{"path":"data.specs[1].results.screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[1].results.screenshots[0].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[1].results.screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[0].takenAt","valueA":"2023-09-08T03:27:15.638Z","valueB":"2023-09-08T13:43:06.785Z","isEqual":false},{"path":"data.specs[1].results.screenshots[0].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/AGusL0mLRpOv.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=tXlK3RlGbX0oK1Z-A8lgK4XcseRE0UH6FqBKYJ7zxTuTk2eFG46R6oGLn6JG~HEBG2kGz80iznDdQCq77ehmsnCxBf0~e8iel6kNIjImajb2XXBQVjc-NieJ7Agxlvt2KT-3Pki7YvzL5xqVzpFoNAPyKk5T~2H5A5JeSNmUUoHGlKdegeoppRH58KjojRgZU3i8fHk7j4oI4bZdLYl7vGOEUMhwECZAB3W1aBm3zve3Ij6vFRu1cMpk7SFil83MdKQo4-795Q96JWAqF3~bjhg4b4fnc7fLJQe4gKZm7t~g~EimFYDWhujXkXjBNVRpmEMqg1fa330afVwyVyG5vw__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/horBZ3DuOMGr.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=ZvoziF30y~hzSoHR3rVM2YPJbz0KtwR1XInqIWj2aD5Q4HBalxHaWj9VmNc9Y3nGEMzaNIDkDg7mfeH73eZ5f9xZUQj9jPVjELojuHTlNaDNv98M7Ov1btFE2wS7zYWJh7wVmbTWh-MR8kNzRBHt5mWrO3PnZMY8RQDjt02MdIOPk-tYjUeQaVHcEHBbapy3G1gbwLcp-XinsZ32mO24Fqnh6avxHfBR4E1I1Flh25Uiyy0wQcgWgg6eXnqXcYjEmaLHqPsI0Amg8Purk5duteZUF0Cu9WTVwL6TI7UawutSwQFWHvEs3hQc4zEtYGD7OS7teBRQhs8cJJ7sA6UoHw__","isEqual":false},{"path":"data.specs[1].results.screenshots[0].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[0].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[0].size","valueB":374162,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[0].duration","valueB":258,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[1].screenshotId","valueA":"YbI1DbeNflu_3-vTrLVrV","valueB":"iYc4VXEvkJ5Z8TbRDWsZd","isEqual":false},{"path":"data.specs[1].results.screenshots[1].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[1].results.screenshots[1].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[1].results.screenshots[1].testAttemptIndex","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[1].results.screenshots[1].takenAt","valueA":"2023-09-08T03:27:20.065Z","valueB":"2023-09-08T13:43:11.191Z","isEqual":false},{"path":"data.specs[1].results.screenshots[1].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/juCd0WOBa6Gv.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=L3HDwbOzbcd80A1DjlqH9HO9Om9iVi9HD3gUlFms7y8v0DExYVJPuBKnhilSYSRNBjaF4cdKEiCeTRzVM2DDArpDqiFx~OR5vlzEixsC3SVNe0Op7or2dlaFka-pZVCjjFNSDx0uJS9qs5OhB93sMH340c8x57K1hdLPGbeHXr0jekc6TsLUgDi7JA85ZCa1t3BbFdbzRHfWqRaAHjIOu7kdHJYHEhh-WK2~k0KNqoq6TNLFFehEo5qdinWy8mxQmCzw~seufs-7EOnaTwlyVsMl1xlvVzm3VGU8TKVbp3jSnWLb8fdGCfUN9s3iFJYKn0ie17IitwNRdSW5-9tzug__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/3w09MBuTuFWG.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=LX5yKw0zEy3w66Ca1DC1QY-Twoler9DEp6qffW18oXeZj0Q-ke9G8z~BFXpErD5QTXJLgHjWaqPm6JObfcoQ7K4~8W9Bx6tjaPeVDcE~x9ZQ5wajx48eJE-eifCIpb6xzPufyfSMx7b~qqKgvo6dv0v1bke700UQ7cMotm1r-ky~JzF4Mtfbo-opuBhbMki0y7tAiDQqOAk1lk9~17pdYDK1NF17ycKmj~gMzAWaroMwX-HiOdV-6NAFNnm0ZFUZ-7aoIEiD3U8PocmQvnKdhu40Ptvv3pHkyyp8OQuzyG12JASt5~jcV4NmYvqIMu92u57a~cl8kkmyUyAL~3gK8Q__","isEqual":false},{"path":"data.specs[1].results.screenshots[1].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[1].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[1].size","valueB":377830,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[1].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[1].multipart","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[1].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[1].testFailure","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[1].scaled","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[1].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[1].duration","valueB":281,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[2].screenshotId","valueA":"ysN7-f-IGi9SuBfWeh-Ln","valueB":"N7VLnS5SoBxKEdpk7dOYp","isEqual":false},{"path":"data.specs[1].results.screenshots[2].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[1].results.screenshots[2].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[1].results.screenshots[2].testAttemptIndex","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[1].results.screenshots[2].takenAt","valueA":"2023-09-08T03:27:24.443Z","valueB":"2023-09-08T13:43:15.688Z","isEqual":false},{"path":"data.specs[1].results.screenshots[2].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/vUWYbwFRpZvK.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=YKiaMUdNYhNK~2YGWg0pAkjZaPW65oSWP52~lol9v9hTA91EyaQwa-ObUvYYvJhGZGb72Ddyo-UlsksY6PwwFHeW~5Rxgv3HCqY5dF2yFc63Rug8bSn9kQ6aT0Jqrlgm0J3HxEmZ2PvY7q6l5aixcZRef0HARdhK3Co743Kxb7wK73rrdifLgTUe3py5E0M9CArj1fJW6f6iZhXKdtHdSGhQz1mgOlpQtTJ2MtVvQUO8-0ERuJJ0tAT6Wi8EFunTzAmTH5KlJMH9b5bNS3AwR4pyPqG8N8y~aeHjL~zmHYE6joRmkKYye9XGGxZ2g73U2-VSZQNRST2wq5gJf6cpZg__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/u22UHn3JZ0Gc.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=PbufeWtMwI0KP6iJwJrQJFvAtk9kbpXibGoSIQJ8u9sD2W3w~mYf0UdhcwdHjVeqjgujG-z58GKOpMTpYsSdvu3VGEFl7j4b4bmWUBNNmmwU80mEEN-CNbWzUj70cxX5ZjX7RsTNBDptiFL03aAMBV1RjoRa4d6oKVHNqFVwrMgPzZKaiRKU7lSsWjxb89r3m4PEWluDidKmP-vQ2sdv3qorZa~BGumiIRI9-aPdORky6~QlTH3lNNcfw-uVQs3w51mq1IZjO7shnlhs-HLYXAv3tgGqsYJRAbCvpzvngtUEnqHKYCVMTy7-V0ZJuAB0XawyABIH~ds9MJgRL5CqaA__","isEqual":false},{"path":"data.specs[1].results.screenshots[2].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[2].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[2].size","valueB":375503,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[2].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[2].multipart","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[2].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[2].testFailure","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[2].scaled","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[2].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[2].duration","valueB":233,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[3].screenshotId","valueA":"pJtB86p_uQ04UWCWJxRRU","valueB":"0FcsNENWstOxPmSzmcyDS","isEqual":false},{"path":"data.specs[1].results.screenshots[3].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[1].results.screenshots[3].testId","valueA":"r2","valueB":"r2","isEqual":true},{"path":"data.specs[1].results.screenshots[3].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[3].takenAt","valueA":"2023-09-08T03:27:31.673Z","valueB":"2023-09-08T13:43:20.250Z","isEqual":false},{"path":"data.specs[1].results.screenshots[3].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/wub3R0PgzyhS.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=siAwsu2rDmnAOLnIcTEv1nHjUpqf1cfs3mTq4g3ivyEZL4j9SpM~i0ieQobkROGrWbeubiJKSRKnWAUgom~U33CiW~NXzjOYLEcCCOFOVg~q0YylTqWN~JsaSvlF3uxpuIDYpA1tacSQL4QkAl0bdmBBkFjei2XAPiAkdzVFEeloDbhBN7AOfQ2D5TAkCWRJW08Pm3bl7uG7wcdgGP40T0UPCOP2ABC5FhH3FwCULO8tbr2zdAapUB3NkcNscMxMCfXRGv77kFaO3o485tZoScigiGTS4FLiPTXJP40kTbURBgJ5R~Ol1Pil~szWAeMPRXw3f3WKNJOszsuDJvq6YA__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/bVytB6veRTaW.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=I5kRRfAu~qmfL6u8z8hrzz95Neg5Rhy8FyvPeMnp99ApitxlcL6sb-CWX3PJiijxWKb19RwDUHGJ7FINKEHSZSQJNG1KONd641odmnrArHoiijAnVFqK-lc5xbrA7R~YfrxgxTl~ScohGSi7zFcqG0jt~NCcNq4smTdrLwb8zVt-M9MXuNvXHX9spjw1cAz3UrDjEtp6~oeDfTudKGgIwWZdyUidv0UecyOoyWWP3KwDgckyRMXJrz79nLzeah87IVyzCrU4K~JDimNQzpWV58tPJ2JUbrKhyNSepn~swbk7f0haPWjhzJFQe7DMX4Md7CFYhLJVVy-k0ZERLkwwgQ__","isEqual":false},{"path":"data.specs[1].results.screenshots[3].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[3].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[3].size","valueB":378982,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[3].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[3].multipart","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[3].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[3].testFailure","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[3].scaled","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[3].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.screenshots[3].duration","valueB":209,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[1].results.exception","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[1].results.flaky","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[2].groupId","valueA":"run-api-smoke-2023-09-08T03:26:36.052Z","valueB":"run-api-smoke-2023-09-08T13:42:28.508Z","isEqual":false},{"path":"data.specs[2].spec","valueA":"cypress/e2e/c.spec.js","valueB":"cypress/e2e/c.spec.js","isEqual":true},{"path":"data.specs[2].instanceId","valueA":"PV4tL5vDMpv9","valueB":"YJXj6GeHgi9Z","isEqual":false},{"path":"data.specs[2].claimedAt","valueA":"2023-09-08T03:26:40.351Z","valueB":"2023-09-08T13:42:31.898Z","isEqual":false},{"path":"data.specs[2].completedAt","valueA":"2023-09-08T03:27:10.418Z","valueB":"2023-09-08T13:43:01.593Z","isEqual":false},{"path":"data.specs[2].machineId","valueA":"1OGNRsYXmc6T","valueB":"yHaFqM5V6gKh","isEqual":false},{"path":"data.specs[2].worker","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[2].results.videoUrl","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/PV4tL5vDMpv9_fGFwQBQMjufh.mp4?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=rZquPnQgOf-VdFGmLzZDZ6I2a~~yxwNQ5D4hb5KYZDOclrW5bVHuEqDKza~Ii6~5vfKXUNtH~gZOGZLNm4zjCiTrI5GaplASpUdCIExaEJMqGtvpwFoDqNbDQ8fTYKMHftfFDy0eZf1ePq29gtN4D5QDrqkXoZ0k0OXxCd4MV1hnHECDAtrCIRKZtkyt4Y9FnKjc6MKLaKLyZbI1vgThaZEje73-anFYUCJaox7womBChcxJhViGuAJ2NJ38Yttk3HREG~82O7KS3F7VR7GIA~Hl-5XS0SBsVdC1mfeTJTYUE3HfGOZlD8CTEWBZRNCi7fYxlrPbYH7qX~9HOTvRlA__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/YJXj6GeHgi9Z_3az7f5VZ0AUl.mp4?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=r31DkISnKQrj5va9ZeXFwGvdeDV~T~P4FKSzBWyeaNSrH-3wzAb7Xk6ZcT8w7X~2Up0EVIy6FuPWX6Xytnix-LL3tuZZtiMRE61LvnoZtPcURzln-HTJc-jQWKjO8aamqwTaZC~imnkudC-SMLjMUrbAgNtdNiHBgamQdVujmmH2-PIEUMHwmcqsqsXR4nt6~qDLXdrf~xpWLN6p1aTjbCAJ4alkvo13vEN6i2rJXyKWqr~XZbvuNQBL~Pkhq7fkPBZTZcOBbIm4ztXh3AUEPHLA8i8Bbf6Di6DejJsUeov2vvkA5H9y9NJfuwlKmKWoOO9iRsc3LqapF0t8JCux8Q__","isEqual":false},{"path":"data.specs[2].results.stats.duration","valueA":53,"valueB":67,"isEqual":false},{"path":"data.specs[2].results.stats.endedAt","valueA":"2023-09-08T03:27:08.972Z","valueB":"2023-09-08T13:43:00.018Z","isEqual":false},{"path":"data.specs[2].results.stats.startedAt","valueA":"2023-09-08T03:27:08.919Z","valueB":"2023-09-08T13:42:59.951Z","isEqual":false},{"path":"data.specs[2].results.stats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[2].results.stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[2].results.stats.pending","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[2].results.stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[2].results.stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[2].results.stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[2].results.stats.wallClockDuration","valueA":53,"valueB":67,"isEqual":false},{"path":"data.specs[2].results.stats.wallClockStartedAt","valueA":"2023-09-08T03:27:08.919Z","valueB":"2023-09-08T13:42:59.951Z","isEqual":false},{"path":"data.specs[2].results.stats.wallClockEndedAt","valueA":"2023-09-08T03:27:08.972Z","valueB":"2023-09-08T13:43:00.018Z","isEqual":false},{"path":"data.specs[2].results.exception","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[2].results.flaky","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].groupId","valueA":"run-api-smoke-2023-09-08T03:26:36.052Z","valueB":"run-api-smoke-2023-09-08T13:42:28.508Z","isEqual":false},{"path":"data.specs[3].spec","valueA":"cypress/e2e/d.spec.js","valueB":"cypress/e2e/d.spec.js","isEqual":true},{"path":"data.specs[3].instanceId","valueA":"sTkPbZdVJeQH","valueB":"Mzlt7nMYwIdn","isEqual":false},{"path":"data.specs[3].claimedAt","valueA":"2023-09-08T03:26:40.345Z","valueB":"2023-09-08T13:42:31.892Z","isEqual":false},{"path":"data.specs[3].completedAt","valueA":"2023-09-08T03:27:07.785Z","valueB":"2023-09-08T13:42:58.850Z","isEqual":false},{"path":"data.specs[3].machineId","valueA":"1OGNRsYXmc6T","valueB":"yHaFqM5V6gKh","isEqual":false},{"path":"data.specs[3].worker","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[3].results.videoUrl","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/sTkPbZdVJeQH_Sg1vqs1impAS.mp4?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=C-8f3b3GdwWabJQm0cM-gzA0Va~l~SIAIuaDXHyDwhDcf5Amr86pQV2jr73dt5vsvMyOamVjPPJG-luvzwOZo5CyumMWJ9fTvn7W2Xu~en2~K0rxZK9C8oT~6FWUb46BRwPB~doa5-SYgHQndp8QcXbwWTAZReNhXsTBZOGbJWISlKctUF9YVxvQAxj9~6qrnnQyRzCyFpiWNZeL7lr9es37NtK24kBzuCnUxJ3xeXU~lz6lOxnOKus~ZQhzOIT7nueuLI7DSrzm7QILmTqEODoo4uK6fbV1XGdcusuvVTV8g4ao-DR6hqS8sh-9VWU4u0ZDxqUJ-xgK0yqnPTOfDw__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/Mzlt7nMYwIdn_KLFYL9MMJTat.mp4?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=InSU3itmKaS4fua2YC1Tz8FLKmg-~ilVxh5LzwiTzHKdgADnAIz35i8xz-pA-GB9fncy6C3zprnrJuBgtDSLi-F25bcUTJsRV~yYZbV9tIaJJDqdM~Ny3a4DGDEIUP~5-MbsuZg~r5F7QPMQ95QV88l1Dv-VJnDnGNeo~IlvkaZOWicdkuh1A0NKnPLuxiXRnpnWQM2roQeICgngp75Y9bxzbeQ2wyd4~Vp0Yj0VOBN~NPY-7cUZZ9Z60Hy2MF0HK3fZrYJf~1CvLm7Rn0XLCL2qrgqR5dT~jrVyz5znCXacjD5JpbYe7uVFOFDaOcKnisrtyaaRLiAG2ppW4GHxXg__","isEqual":false},{"path":"data.specs[3].results.stats.duration","valueA":1079,"valueB":1108,"isEqual":false},{"path":"data.specs[3].results.stats.endedAt","valueA":"2023-09-08T03:27:06.029Z","valueB":"2023-09-08T13:42:57.027Z","isEqual":false},{"path":"data.specs[3].results.stats.startedAt","valueA":"2023-09-08T03:27:04.950Z","valueB":"2023-09-08T13:42:55.919Z","isEqual":false},{"path":"data.specs[3].results.stats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.stats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[3].results.stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[3].results.stats.tests","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[3].results.stats.wallClockDuration","valueA":1079,"valueB":1108,"isEqual":false},{"path":"data.specs[3].results.stats.wallClockStartedAt","valueA":"2023-09-08T03:27:04.950Z","valueB":"2023-09-08T13:42:55.919Z","isEqual":false},{"path":"data.specs[3].results.stats.wallClockEndedAt","valueA":"2023-09-08T03:27:06.029Z","valueB":"2023-09-08T13:42:57.027Z","isEqual":false},{"path":"data.specs[3].results.screenshots[0].screenshotId","valueA":"uReGdOXki5oUZtaZ4JNQZ","valueB":"x2G5Ca6DBxNl3zzjv9EDG","isEqual":false},{"path":"data.specs[3].results.screenshots[0].name","valueA":"internal-assert-screenshot","valueB":"internal-assert-screenshot","isEqual":true},{"path":"data.specs[3].results.screenshots[0].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[3].results.screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.screenshots[0].takenAt","valueA":"2023-09-08T03:27:05.165Z","valueB":"2023-09-08T13:42:56.156Z","isEqual":false},{"path":"data.specs[3].results.screenshots[0].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/zFhaTH1sV5Yb.png?Expires=1694402849&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=apRIvw~0jaY3pEvZ5IhkSiGMFdkn~oLAdQxNa7H10ESfp2yDHMDV8jhYfGMZxBMYtW2y86-vmCAbKgg8zd8m5TemSAGAf2X7PMAFwA5LJduvekk-~DL9yvmCNgarq3gKQBAFoMFNYJiv7DrFhMn0OSWugrjpjjwmtTd5zO-6bNlQ7xaKqh6DGOO2OzQ54BWXFl7f7slnyb1JJAbjDOyZ~5ifWuJE94HQguYEqDxjAp-hEq2n6sFRgcfhXbslOiv7waWt6G~-Q6Vh0TSTlTR4D6FPNJR2RfkYtmCQYp5giOSlJt2029aoTEwAyFELEs5WT4EnTD1D7EyI8sKBqn57KQ__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/7Dehjgyld5N2.png?Expires=1694439797&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=vh~0BbcrzKw6aFw36cTA5LBHwkxgprOw0ChNElg69NFNlrZI2nIVEORd4ykB4~U8OpAnRUTg4Qr1Xtyk2vWgSyuf7L3PDJwHnCaz7v~DMVqCBemdr0MllYEIMc6lFjsEu3-5HS6~lN3SFzmboZj4~ea3fJ4AF2SWu3nChI7TacHXEEUMW26A5B8A-qrnNFfngf8vcYoKiNL2pTsuPQbU0kyZEBWRybcySBnsV4NimJYX45jK-5LgBuVtS3ZADyM~NF1NzAC8-ZwG55J6Z5B45Zrtj0pyLNPXhR6jnGSxJMAOhT9XWYGeWo453OVEfe-3pzZBLKj3A7M6ai2AcToIRg__","isEqual":false},{"path":"data.specs[3].results.screenshots[0].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.screenshots[0].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.screenshots[0].size","valueB":234576,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[3].results.screenshots[0].dimensions","valueB":{"width":2000,"height":1320},"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[3].results.screenshots[0].multipart","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[3].results.screenshots[0].pixelRatio","valueB":2,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[3].results.screenshots[0].specName","valueB":"d.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[3].results.screenshots[0].scaled","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[3].results.screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[3].results.screenshots[0].duration","valueB":732,"isEqual":false,"note":"Does not exist in A"},{"path":"data.specs[3].results.exception","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[3].results.flaky","valueA":0,"valueB":0,"isEqual":true},{"path":"data.completionState","valueA":"COMPLETE","valueB":"COMPLETE","isEqual":true},{"path":"data.status","valueA":"FAILED","valueB":"FAILED","isEqual":true}] \ No newline at end of file diff --git a/e2e/cypress-12-demo/validation-results/cypress-cloud-validation.json b/e2e/cypress-12-demo/validation-results/cypress-cloud-validation.json new file mode 100644 index 0000000..68ee56b --- /dev/null +++ b/e2e/cypress-12-demo/validation-results/cypress-cloud-validation.json @@ -0,0 +1 @@ +[{"path":"totalDuration","valueA":35824,"valueB":33233,"isEqual":false},{"path":"totalSuites","valueA":4,"valueB":4,"isEqual":true},{"path":"totalPending","valueA":1,"valueB":1,"isEqual":true},{"path":"totalFailed","valueA":2,"valueB":2,"isEqual":true},{"path":"totalSkipped","valueA":0,"valueB":0,"isEqual":true},{"path":"totalPassed","valueA":4,"valueB":4,"isEqual":true},{"path":"totalTests","valueA":7,"valueB":7,"isEqual":true},{"path":"runs[0].stats.duration","valueA":13947,"valueB":13846,"isEqual":false},{"path":"runs[0].stats.endedAt","valueA":"2023-09-08T03:26:59.631Z","valueB":"2023-09-08T13:42:50.598Z","isEqual":false},{"path":"runs[0].stats.startedAt","valueA":"2023-09-08T03:26:45.684Z","valueB":"2023-09-08T13:42:36.752Z","isEqual":false},{"path":"runs[0].stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"runs[0].reporterStats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].reporterStats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].reporterStats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].reporterStats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].reporterStats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].reporterStats.start","valueA":"2023-09-08T03:26:45.686Z","valueB":"2023-09-08T13:42:36.754Z","isEqual":false},{"path":"runs[0].reporterStats.end","valueA":"2023-09-08T03:26:59.644Z","valueB":"2023-09-08T13:42:50.611Z","isEqual":false},{"path":"runs[0].reporterStats.duration","valueA":13958,"valueB":13857,"isEqual":false},{"path":"runs[0].spec.fileExtension","valueA":".js","valueB":".js","isEqual":true},{"path":"runs[0].spec.baseName","valueA":"a.spec.js","valueB":"a.spec.js","isEqual":true},{"path":"runs[0].spec.fileName","valueA":"a","valueB":"a","isEqual":true},{"path":"runs[0].spec.specFileExtension","valueA":".spec.js","valueB":".spec.js","isEqual":true},{"path":"runs[0].spec.relativeToCommonRoot","valueA":"a.spec.js","valueB":"a.spec.js","isEqual":true},{"path":"runs[0].spec.specType","valueA":"integration","valueB":"integration","isEqual":true},{"path":"runs[0].spec.name","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].spec.relative","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].spec.absolute","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[0].video","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/a.spec.js.mp4","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/a.spec.js.mp4","isEqual":true},{"path":"runs[0].shouldUploadVideo","valueA":true,"valueB":true,"isEqual":true},{"path":"runs[0].hooks[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[0].hooks[0].hookName","valueA":"before each","valueB":"before each","isEqual":true},{"path":"runs[0].hooks[0].title[0]","valueA":"\"before each\" hook","valueB":"\"before each\" hook","isEqual":true},{"path":"runs[0].hooks[0].body","valueA":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}","valueB":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}","isEqual":true},{"path":"runs[0].hooks[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[0].hooks[1].hookName","valueA":"before each","valueB":"before each","isEqual":true},{"path":"runs[0].hooks[1].title[0]","valueA":"\"before each\" hook","valueB":"\"before each\" hook","isEqual":true},{"path":"runs[0].hooks[1].body","valueA":"function () {\n cy.visit(\"/\");\n}","valueB":"function () {\n cy.visit(\"/\");\n}","isEqual":true},{"path":"runs[0].hooks[2].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[0].hooks[2].hookName","valueA":"after each","valueB":"after each","isEqual":true},{"path":"runs[0].hooks[2].title[0]","valueA":"\"after each\" hook","valueB":"\"after each\" hook","isEqual":true},{"path":"runs[0].hooks[2].body","valueA":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }","valueB":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }","isEqual":true},{"path":"runs[0].hooks[3].hookId","valueA":"h5","valueB":"h5","isEqual":true},{"path":"runs[0].hooks[3].hookName","valueA":"after each","valueB":"after each","isEqual":true},{"path":"runs[0].hooks[3].title[0]","valueA":"\"after each\" hook","valueB":"\"after each\" hook","isEqual":true},{"path":"runs[0].hooks[3].body","valueA":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}","valueB":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}","isEqual":true},{"path":"runs[0].hooks[4].hookId","valueA":"h3","valueB":"h3","isEqual":true},{"path":"runs[0].hooks[4].hookName","valueA":"after all","valueB":"after all","isEqual":true},{"path":"runs[0].hooks[4].title[0]","valueA":"\"after all\" hook","valueB":"\"after all\" hook","isEqual":true},{"path":"runs[0].hooks[4].body","valueA":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }","valueB":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }","isEqual":true},{"path":"runs[0].tests[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[0].tests[0].title[0]","valueA":"Failing test with 2 attempts","valueB":"Failing test with 2 attempts","isEqual":true},{"path":"runs[0].tests[0].title[1]","valueA":"should try 2 times","valueB":"should try 2 times","isEqual":true},{"path":"runs[0].tests[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[0].tests[0].body","valueA":"() => {\n cy.wrap(false).should('be.true');\n }","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":true},{"path":"runs[0].tests[0].displayError","valueA":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","isEqual":true},{"path":"runs[0].tests[0].attempts[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true","isEqual":false},{"path":"runs[0].tests[0].attempts[0].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","isEqual":false},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.line","valueA":5,"valueB":5,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.originalFile","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.frame","valueA":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","valueB":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.lifecycle","valueA":32,"valueB":32,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.before each[0].fnDuration","valueA":34,"valueB":20,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.before each[1].fnDuration","valueA":705,"valueB":620,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.test.fnDuration","valueA":4004,"valueB":4006,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.test.afterFnDuration","valueA":299,"valueB":309,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.after each[0].fnDuration","valueA":21,"valueB":21,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":22,"afterFnDuration":1},"isEqual":false,"note":"Does not exist in B"},{"path":"runs[0].tests[0].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist in B"},{"path":"runs[0].tests[0].attempts[0].wallClockStartedAt","valueA":"2023-09-08T03:26:45.707Z","valueB":"2023-09-08T13:42:36.764Z","isEqual":false},{"path":"runs[0].tests[0].attempts[0].wallClockDuration","valueA":5120,"valueB":4988,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].videoTimestamp","valueA":2866,"valueB":null,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].startedAt","valueA":"2023-09-08T03:26:45.707Z","valueB":"2023-09-08T13:42:36.764Z","isEqual":false},{"path":"runs[0].tests[0].attempts[0].duration","valueA":5120,"valueB":4988,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].screenshots[0].screenshotId","valueA":"lv379","isEqual":false,"note":"Does not exist in B"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].takenAt","valueA":"2023-09-08T03:26:50.486Z","valueB":"2023-09-08T13:42:41.446Z","isEqual":false},{"path":"runs[0].tests[0].attempts[0].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed).png","isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].size","valueB":349423,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].duration","valueB":304,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[1].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true","isEqual":false},{"path":"runs[0].tests[0].attempts[1].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","isEqual":false},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.line","valueA":5,"valueB":5,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.originalFile","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.frame","valueA":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","valueB":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.lifecycle","valueA":28,"valueB":28,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.before each[0].fnDuration","valueA":7,"valueB":8,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.before each[1].fnDuration","valueA":66,"valueB":65,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.test.fnDuration","valueA":3991,"valueB":3994,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.test.afterFnDuration","valueA":231,"valueB":217,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.after each[0].fnDuration","valueA":23,"valueB":14,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.after each[0].afterFnDuration","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":36,"afterFnDuration":0},"isEqual":false,"note":"Does not exist in B"},{"path":"runs[0].tests[0].attempts[1].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist in B"},{"path":"runs[0].tests[0].attempts[1].wallClockStartedAt","valueA":"2023-09-08T03:26:50.848Z","valueB":"2023-09-08T13:42:41.809Z","isEqual":false},{"path":"runs[0].tests[0].attempts[1].wallClockDuration","valueA":4384,"valueB":4314,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].videoTimestamp","valueA":8007,"valueB":null,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].startedAt","valueA":"2023-09-08T03:26:50.848Z","valueB":"2023-09-08T13:42:41.809Z","isEqual":false},{"path":"runs[0].tests[0].attempts[1].duration","valueA":4384,"valueB":4314,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].screenshots[0].screenshotId","valueA":"eimp0","isEqual":false,"note":"Does not exist in B"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].testAttemptIndex","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].takenAt","valueA":"2023-09-08T03:26:54.942Z","valueB":"2023-09-08T13:42:45.908Z","isEqual":false},{"path":"runs[0].tests[0].attempts[1].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 2).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 2).png","isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].size","valueB":360089,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].duration","valueB":214,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[2].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true","isEqual":false},{"path":"runs[0].tests[0].attempts[2].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/a.spec.js:5:19)","isEqual":false},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.line","valueA":5,"valueB":5,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.originalFile","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.frame","valueA":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","valueB":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.lifecycle","valueA":50,"valueB":54,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.before each[0].fnDuration","valueA":9,"valueB":10,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.before each[1].fnDuration","valueA":68,"valueB":92,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.test.fnDuration","valueA":3990,"valueB":4004,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.test.afterFnDuration","valueA":209,"valueB":208,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.after each[0].fnDuration","valueA":15,"valueB":13,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":18,"afterFnDuration":0},"isEqual":false,"note":"Does not exist in B"},{"path":"runs[0].tests[0].attempts[2].timings.after all","valueA":[{"hookId":"h3","fnDuration":4,"afterFnDuration":0}],"isEqual":false,"note":"Does not exist in B"},{"path":"runs[0].tests[0].attempts[2].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist in B"},{"path":"runs[0].tests[0].attempts[2].wallClockStartedAt","valueA":"2023-09-08T03:26:55.247Z","valueB":"2023-09-08T13:42:46.171Z","isEqual":false},{"path":"runs[0].tests[0].attempts[2].wallClockDuration","valueA":4370,"valueB":4370,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].videoTimestamp","valueA":12406,"valueB":null,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].startedAt","valueA":"2023-09-08T03:26:55.247Z","valueB":"2023-09-08T13:42:46.171Z","isEqual":false},{"path":"runs[0].tests[0].attempts[2].duration","valueA":4370,"valueB":4370,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].screenshotId","valueA":"ve07d","isEqual":false,"note":"Does not exist in B"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].testAttemptIndex","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].takenAt","valueA":"2023-09-08T03:26:59.369Z","valueB":"2023-09-08T13:42:50.334Z","isEqual":false},{"path":"runs[0].tests[0].attempts[2].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 3).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 3).png","isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].size","valueB":363302,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].duration","valueB":206,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[1].stats.duration","valueA":1079,"valueB":1108,"isEqual":false},{"path":"runs[1].stats.endedAt","valueA":"2023-09-08T03:27:06.029Z","valueB":"2023-09-08T13:42:57.027Z","isEqual":false},{"path":"runs[1].stats.startedAt","valueA":"2023-09-08T03:27:04.950Z","valueB":"2023-09-08T13:42:55.919Z","isEqual":false},{"path":"runs[1].stats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].stats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[1].stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].stats.tests","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[1].reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"runs[1].reporterStats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].reporterStats.tests","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[1].reporterStats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[1].reporterStats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].reporterStats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].reporterStats.start","valueA":"2023-09-08T03:27:04.952Z","valueB":"2023-09-08T13:42:55.921Z","isEqual":false},{"path":"runs[1].reporterStats.end","valueA":"2023-09-08T03:27:06.032Z","valueB":"2023-09-08T13:42:57.030Z","isEqual":false},{"path":"runs[1].reporterStats.duration","valueA":1080,"valueB":1109,"isEqual":false},{"path":"runs[1].spec.fileExtension","valueA":".js","valueB":".js","isEqual":true},{"path":"runs[1].spec.baseName","valueA":"d.spec.js","valueB":"d.spec.js","isEqual":true},{"path":"runs[1].spec.fileName","valueA":"d","valueB":"d","isEqual":true},{"path":"runs[1].spec.specFileExtension","valueA":".spec.js","valueB":".spec.js","isEqual":true},{"path":"runs[1].spec.relativeToCommonRoot","valueA":"d.spec.js","valueB":"d.spec.js","isEqual":true},{"path":"runs[1].spec.specType","valueA":"integration","valueB":"integration","isEqual":true},{"path":"runs[1].spec.name","valueA":"cypress/e2e/d.spec.js","valueB":"cypress/e2e/d.spec.js","isEqual":true},{"path":"runs[1].spec.relative","valueA":"cypress/e2e/d.spec.js","valueB":"cypress/e2e/d.spec.js","isEqual":true},{"path":"runs[1].spec.absolute","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/d.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/d.spec.js","isEqual":true},{"path":"runs[1].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[1].video","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/d.spec.js.mp4","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/d.spec.js.mp4","isEqual":true},{"path":"runs[1].shouldUploadVideo","valueA":true,"valueB":true,"isEqual":true},{"path":"runs[1].hooks[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[1].hooks[0].hookName","valueA":"before each","valueB":"before each","isEqual":true},{"path":"runs[1].hooks[0].title[0]","valueA":"\"before each\" hook","valueB":"\"before each\" hook","isEqual":true},{"path":"runs[1].hooks[0].body","valueA":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}","valueB":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}","isEqual":true},{"path":"runs[1].hooks[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[1].hooks[1].hookName","valueA":"before each","valueB":"before each","isEqual":true},{"path":"runs[1].hooks[1].title[0]","valueA":"\"before each\" hook","valueB":"\"before each\" hook","isEqual":true},{"path":"runs[1].hooks[1].body","valueA":"function () {\n cy.visit(\"/\");\n}","valueB":"function () {\n cy.visit(\"/\");\n}","isEqual":true},{"path":"runs[1].hooks[2].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[1].hooks[2].hookName","valueA":"after each","valueB":"after each","isEqual":true},{"path":"runs[1].hooks[2].title[0]","valueA":"\"after each\" hook","valueB":"\"after each\" hook","isEqual":true},{"path":"runs[1].hooks[2].body","valueA":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }","valueB":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }","isEqual":true},{"path":"runs[1].hooks[3].hookId","valueA":"h5","valueB":"h5","isEqual":true},{"path":"runs[1].hooks[3].hookName","valueA":"after each","valueB":"after each","isEqual":true},{"path":"runs[1].hooks[3].title[0]","valueA":"\"after each\" hook","valueB":"\"after each\" hook","isEqual":true},{"path":"runs[1].hooks[3].body","valueA":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}","valueB":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}","isEqual":true},{"path":"runs[1].hooks[4].hookId","valueA":"h3","valueB":"h3","isEqual":true},{"path":"runs[1].hooks[4].hookName","valueA":"after all","valueB":"after all","isEqual":true},{"path":"runs[1].hooks[4].title[0]","valueA":"\"after all\" hook","valueB":"\"after all\" hook","isEqual":true},{"path":"runs[1].hooks[4].body","valueA":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }","valueB":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }","isEqual":true},{"path":"runs[1].tests[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[1].tests[0].title[0]","valueA":"Passed test with screenshot, passed test with no screenshots","valueB":"Passed test with screenshot, passed test with no screenshots","isEqual":true},{"path":"runs[1].tests[0].title[1]","valueA":"should assert and take a screenshot","valueB":"should assert and take a screenshot","isEqual":true},{"path":"runs[1].tests[0].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[1].tests[0].body","valueA":"() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }","valueB":"() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }","isEqual":true},{"path":"runs[1].tests[0].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.lifecycle","valueA":38,"valueB":35,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.before each[0].fnDuration","valueA":11,"valueB":10,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.before each[1].fnDuration","valueA":146,"valueB":160,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.test.fnDuration","valueA":727,"valueB":747,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.test.afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.after each[0].fnDuration","valueA":15,"valueB":13,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":7,"afterFnDuration":0},"isEqual":false,"note":"Does not exist in B"},{"path":"runs[1].tests[0].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist in B"},{"path":"runs[1].tests[0].attempts[0].wallClockStartedAt","valueA":"2023-09-08T03:27:04.956Z","valueB":"2023-09-08T13:42:55.932Z","isEqual":false},{"path":"runs[1].tests[0].attempts[0].wallClockDuration","valueA":952,"valueB":956,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].videoTimestamp","valueA":1172,"valueB":null,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].startedAt","valueA":"2023-09-08T03:27:04.956Z","valueB":"2023-09-08T13:42:55.932Z","isEqual":false},{"path":"runs[1].tests[0].attempts[0].duration","valueA":952,"valueB":956,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].screenshots[0].screenshotId","valueA":"mau0n","isEqual":false,"note":"Does not exist in B"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].name","valueA":"internal-assert-screenshot","valueB":"internal-assert-screenshot","isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].takenAt","valueA":"2023-09-08T03:27:05.165Z","valueB":"2023-09-08T13:42:56.156Z","isEqual":false},{"path":"runs[1].tests[0].attempts[0].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/d.spec.js/internal-assert-screenshot.png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/d.spec.js/internal-assert-screenshot.png","isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].height","valueA":1320,"valueB":1320,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].width","valueA":2000,"valueB":2000,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].size","valueB":234576,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].dimensions","valueB":{"width":2000,"height":1320},"isEqual":false,"note":"Does not exist in A"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].multipart","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].pixelRatio","valueB":2,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].specName","valueB":"d.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].scaled","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].duration","valueB":732,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[1].tests[1].testId","valueA":"r4","valueB":"r4","isEqual":true},{"path":"runs[1].tests[1].title[0]","valueA":"Passed test with screenshot, passed test with no screenshots","valueB":"Passed test with screenshot, passed test with no screenshots","isEqual":true},{"path":"runs[1].tests[1].title[1]","valueA":"should assert that true is true","valueB":"should assert that true is true","isEqual":true},{"path":"runs[1].tests[1].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[1].tests[1].body","valueA":"() => {\n cy.wrap(true).should('be.true');\n }","valueB":"() => {\n cy.wrap(true).should('be.true');\n }","isEqual":true},{"path":"runs[1].tests[1].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[1].tests[1].attempts[0].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[1].tests[1].attempts[0].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[1].tests[1].attempts[0].timings.lifecycle","valueA":19,"valueB":22,"isEqual":false},{"path":"runs[1].tests[1].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[1].tests[1].attempts[0].timings.before each[0].fnDuration","valueA":7,"valueB":6,"isEqual":false},{"path":"runs[1].tests[1].attempts[0].timings.before each[0].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[1].tests[1].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[1].tests[1].attempts[0].timings.before each[1].fnDuration","valueA":53,"valueB":50,"isEqual":false},{"path":"runs[1].tests[1].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].tests[1].attempts[0].timings.test.fnDuration","valueA":3,"valueB":2,"isEqual":false},{"path":"runs[1].tests[1].attempts[0].timings.test.afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].tests[1].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[1].tests[1].attempts[0].timings.after each[0].fnDuration","valueA":18,"valueB":11,"isEqual":false},{"path":"runs[1].tests[1].attempts[0].timings.after each[0].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[1].tests[1].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":8,"afterFnDuration":0},"isEqual":false,"note":"Does not exist in B"},{"path":"runs[1].tests[1].attempts[0].timings.after all","valueA":[{"hookId":"h3","fnDuration":3,"afterFnDuration":1}],"isEqual":false,"note":"Does not exist in B"},{"path":"runs[1].tests[1].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist in B"},{"path":"runs[1].tests[1].attempts[0].wallClockStartedAt","valueA":"2023-09-08T03:27:05.910Z","valueB":"2023-09-08T13:42:56.918Z","isEqual":false},{"path":"runs[1].tests[1].attempts[0].wallClockDuration","valueA":118,"valueB":82,"isEqual":false},{"path":"runs[1].tests[1].attempts[0].videoTimestamp","valueA":2126,"valueB":null,"isEqual":false},{"path":"runs[1].tests[1].attempts[0].startedAt","valueA":"2023-09-08T03:27:05.910Z","valueB":"2023-09-08T13:42:56.918Z","isEqual":false},{"path":"runs[1].tests[1].attempts[0].duration","valueA":118,"valueB":82,"isEqual":false},{"path":"runs[2].stats.duration","valueA":53,"valueB":67,"isEqual":false},{"path":"runs[2].stats.endedAt","valueA":"2023-09-08T03:27:08.972Z","valueB":"2023-09-08T13:43:00.018Z","isEqual":false},{"path":"runs[2].stats.startedAt","valueA":"2023-09-08T03:27:08.919Z","valueB":"2023-09-08T13:42:59.951Z","isEqual":false},{"path":"runs[2].stats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].stats.pending","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[2].stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[2].stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[2].reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"runs[2].reporterStats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[2].reporterStats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[2].reporterStats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].reporterStats.pending","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[2].reporterStats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].reporterStats.start","valueA":"2023-09-08T03:27:08.921Z","valueB":"2023-09-08T13:42:59.953Z","isEqual":false},{"path":"runs[2].reporterStats.end","valueA":"2023-09-08T03:27:08.978Z","valueB":"2023-09-08T13:43:00.021Z","isEqual":false},{"path":"runs[2].reporterStats.duration","valueA":57,"valueB":68,"isEqual":false},{"path":"runs[2].spec.fileExtension","valueA":".js","valueB":".js","isEqual":true},{"path":"runs[2].spec.baseName","valueA":"c.spec.js","valueB":"c.spec.js","isEqual":true},{"path":"runs[2].spec.fileName","valueA":"c","valueB":"c","isEqual":true},{"path":"runs[2].spec.specFileExtension","valueA":".spec.js","valueB":".spec.js","isEqual":true},{"path":"runs[2].spec.relativeToCommonRoot","valueA":"c.spec.js","valueB":"c.spec.js","isEqual":true},{"path":"runs[2].spec.specType","valueA":"integration","valueB":"integration","isEqual":true},{"path":"runs[2].spec.name","valueA":"cypress/e2e/c.spec.js","valueB":"cypress/e2e/c.spec.js","isEqual":true},{"path":"runs[2].spec.relative","valueA":"cypress/e2e/c.spec.js","valueB":"cypress/e2e/c.spec.js","isEqual":true},{"path":"runs[2].spec.absolute","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/c.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/c.spec.js","isEqual":true},{"path":"runs[2].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[2].video","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/c.spec.js.mp4","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/c.spec.js.mp4","isEqual":true},{"path":"runs[2].shouldUploadVideo","valueA":true,"valueB":true,"isEqual":true},{"path":"runs[2].hooks[0].hookId","valueA":"h3","valueB":"h3","isEqual":true},{"path":"runs[2].hooks[0].hookName","valueA":"after all","valueB":"after all","isEqual":true},{"path":"runs[2].hooks[0].title[0]","valueA":"\"after all\" hook","valueB":"\"after all\" hook","isEqual":true},{"path":"runs[2].hooks[0].body","valueA":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }","valueB":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }","isEqual":true},{"path":"runs[2].tests[0].testId","valueA":"r3","valueB":"r0}","isEqual":false},{"path":"runs[2].tests[0].title[0]","valueA":"Ignored test","valueB":"Ignored test","isEqual":true},{"path":"runs[2].tests[0].title[1]","valueA":"should be a skipped test","valueB":"should be a skipped test","isEqual":true},{"path":"runs[2].tests[0].state","valueA":"pending","valueB":"pending","isEqual":true},{"path":"runs[2].tests[0].body","valueA":"() => {\n cy.wrap(false).should('be.true');\n }","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":true},{"path":"runs[2].tests[0].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[2].tests[0].attempts[0]","valueA":{"state":"pending","error":null,"timings":{"lifecycle":31,"after all":[{"hookId":"h3","fnDuration":5,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-08T03:27:08.934Z","wallClockDuration":36,"videoTimestamp":1122,"startedAt":"2023-09-08T03:27:08.934Z","duration":36,"screenshots":[]},"isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].stats.duration","valueA":20745,"valueB":18212,"isEqual":false},{"path":"runs[3].stats.endedAt","valueA":"2023-09-08T03:27:32.145Z","valueB":"2023-09-08T13:43:20.716Z","isEqual":false},{"path":"runs[3].stats.startedAt","valueA":"2023-09-08T03:27:11.400Z","valueB":"2023-09-08T13:43:02.504Z","isEqual":false},{"path":"runs[3].stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].stats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[3].stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].stats.tests","valueA":3,"valueB":3,"isEqual":true},{"path":"runs[3].reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"runs[3].reporterStats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].reporterStats.tests","valueA":3,"valueB":3,"isEqual":true},{"path":"runs[3].reporterStats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[3].reporterStats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].reporterStats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].reporterStats.start","valueA":"2023-09-08T03:27:11.402Z","valueB":"2023-09-08T13:43:02.505Z","isEqual":false},{"path":"runs[3].reporterStats.end","valueA":"2023-09-08T03:27:32.149Z","valueB":"2023-09-08T13:43:20.721Z","isEqual":false},{"path":"runs[3].reporterStats.duration","valueA":20747,"valueB":18216,"isEqual":false},{"path":"runs[3].spec.fileExtension","valueA":".js","valueB":".js","isEqual":true},{"path":"runs[3].spec.baseName","valueA":"b.spec.js","valueB":"b.spec.js","isEqual":true},{"path":"runs[3].spec.fileName","valueA":"b","valueB":"b","isEqual":true},{"path":"runs[3].spec.specFileExtension","valueA":".spec.js","valueB":".spec.js","isEqual":true},{"path":"runs[3].spec.relativeToCommonRoot","valueA":"b.spec.js","valueB":"b.spec.js","isEqual":true},{"path":"runs[3].spec.specType","valueA":"integration","valueB":"integration","isEqual":true},{"path":"runs[3].spec.name","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].spec.relative","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].spec.absolute","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[3].video","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/b.spec.js.mp4","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos/b.spec.js.mp4","isEqual":true},{"path":"runs[3].shouldUploadVideo","valueA":true,"valueB":true,"isEqual":true},{"path":"runs[3].hooks[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[3].hooks[0].hookName","valueA":"before each","valueB":"before each","isEqual":true},{"path":"runs[3].hooks[0].title[0]","valueA":"\"before each\" hook","valueB":"\"before each\" hook","isEqual":true},{"path":"runs[3].hooks[0].body","valueA":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}","valueB":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}","isEqual":true},{"path":"runs[3].hooks[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[3].hooks[1].hookName","valueA":"before each","valueB":"before each","isEqual":true},{"path":"runs[3].hooks[1].title[0]","valueA":"\"before each\" hook","valueB":"\"before each\" hook","isEqual":true},{"path":"runs[3].hooks[1].body","valueA":"function () {\n cy.visit(\"/\");\n}","valueB":"function () {\n cy.visit(\"/\");\n}","isEqual":true},{"path":"runs[3].hooks[2].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[3].hooks[2].hookName","valueA":"after each","valueB":"after each","isEqual":true},{"path":"runs[3].hooks[2].title[0]","valueA":"\"after each\" hook","valueB":"\"after each\" hook","isEqual":true},{"path":"runs[3].hooks[2].body","valueA":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }","valueB":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }","isEqual":true},{"path":"runs[3].hooks[3].hookId","valueA":"h5","valueB":"h5","isEqual":true},{"path":"runs[3].hooks[3].hookName","valueA":"after each","valueB":"after each","isEqual":true},{"path":"runs[3].hooks[3].title[0]","valueA":"\"after each\" hook","valueB":"\"after each\" hook","isEqual":true},{"path":"runs[3].hooks[3].body","valueA":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}","valueB":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}","isEqual":true},{"path":"runs[3].hooks[4].hookId","valueA":"h3","valueB":"h3","isEqual":true},{"path":"runs[3].hooks[4].hookName","valueA":"after all","valueB":"after all","isEqual":true},{"path":"runs[3].hooks[4].title[0]","valueA":"\"after all\" hook","valueB":"\"after all\" hook","isEqual":true},{"path":"runs[3].hooks[4].body","valueA":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }","valueB":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }","isEqual":true},{"path":"runs[3].tests[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[3].tests[0].title[0]","valueA":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","valueB":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","isEqual":true},{"path":"runs[3].tests[0].title[1]","valueA":"should try 2 times","valueB":"should try 2 times","isEqual":true},{"path":"runs[3].tests[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[3].tests[0].body","valueA":"() => {\n cy.wrap(false).should('be.true');\n }","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":true},{"path":"runs[3].tests[0].displayError","valueA":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","isEqual":true},{"path":"runs[3].tests[0].attempts[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[3].tests[0].attempts[0].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[3].tests[0].attempts[0].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true","isEqual":false},{"path":"runs[3].tests[0].attempts[0].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","isEqual":false},{"path":"runs[3].tests[0].attempts[0].error.codeFrame.line","valueA":6,"valueB":6,"isEqual":true},{"path":"runs[3].tests[0].attempts[0].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[3].tests[0].attempts[0].error.codeFrame.originalFile","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].tests[0].attempts[0].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].tests[0].attempts[0].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].tests[0].attempts[0].error.codeFrame.frame","valueA":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","valueB":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","isEqual":true},{"path":"runs[3].tests[0].attempts[0].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[3].tests[0].attempts[0].timings.lifecycle","valueA":44,"valueB":52,"isEqual":false},{"path":"runs[3].tests[0].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[3].tests[0].attempts[0].timings.before each[0].fnDuration","valueA":13,"valueB":23,"isEqual":false},{"path":"runs[3].tests[0].attempts[0].timings.before each[0].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[3].tests[0].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[3].tests[0].attempts[0].timings.before each[1].fnDuration","valueA":160,"valueB":178,"isEqual":false},{"path":"runs[3].tests[0].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[0].attempts[0].timings.test.fnDuration","valueA":4012,"valueB":4013,"isEqual":false},{"path":"runs[3].tests[0].attempts[0].timings.test.afterFnDuration","valueA":256,"valueB":260,"isEqual":false},{"path":"runs[3].tests[0].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[3].tests[0].attempts[0].timings.after each[0].fnDuration","valueA":13,"valueB":15,"isEqual":false},{"path":"runs[3].tests[0].attempts[0].timings.after each[0].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[3].tests[0].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":17,"afterFnDuration":0},"isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[0].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[0].attempts[0].wallClockStartedAt","valueA":"2023-09-08T03:27:11.405Z","valueB":"2023-09-08T13:43:02.515Z","isEqual":false},{"path":"runs[3].tests[0].attempts[0].wallClockDuration","valueA":4519,"valueB":4528,"isEqual":false},{"path":"runs[3].tests[0].attempts[0].videoTimestamp","valueA":1153,"valueB":null,"isEqual":false},{"path":"runs[3].tests[0].attempts[0].startedAt","valueA":"2023-09-08T03:27:11.405Z","valueB":"2023-09-08T13:43:02.515Z","isEqual":false},{"path":"runs[3].tests[0].attempts[0].duration","valueA":4519,"valueB":4528,"isEqual":false},{"path":"runs[3].tests[0].attempts[0].screenshots[0].screenshotId","valueA":"uah46","isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[0].attempts[0].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[3].tests[0].attempts[0].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[3].tests[0].attempts[0].screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[0].attempts[0].screenshots[0].takenAt","valueA":"2023-09-08T03:27:15.638Z","valueB":"2023-09-08T13:43:06.785Z","isEqual":false},{"path":"runs[3].tests[0].attempts[0].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed).png","isEqual":true},{"path":"runs[3].tests[0].attempts[0].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[3].tests[0].attempts[0].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[3].tests[0].attempts[0].screenshots[0].size","valueB":374162,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[0].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[0].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[0].screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[0].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[0].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[0].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[0].screenshots[0].duration","valueB":258,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[1].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[3].tests[0].attempts[1].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[3].tests[0].attempts[1].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true","isEqual":false},{"path":"runs[3].tests[0].attempts[1].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","isEqual":false},{"path":"runs[3].tests[0].attempts[1].error.codeFrame.line","valueA":6,"valueB":6,"isEqual":true},{"path":"runs[3].tests[0].attempts[1].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[3].tests[0].attempts[1].error.codeFrame.originalFile","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].tests[0].attempts[1].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].tests[0].attempts[1].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].tests[0].attempts[1].error.codeFrame.frame","valueA":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","valueB":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","isEqual":true},{"path":"runs[3].tests[0].attempts[1].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[3].tests[0].attempts[1].timings.lifecycle","valueA":27,"valueB":27,"isEqual":true},{"path":"runs[3].tests[0].attempts[1].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[3].tests[0].attempts[1].timings.before each[0].fnDuration","valueA":15,"valueB":8,"isEqual":false},{"path":"runs[3].tests[0].attempts[1].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[0].attempts[1].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[3].tests[0].attempts[1].timings.before each[1].fnDuration","valueA":62,"valueB":59,"isEqual":false},{"path":"runs[3].tests[0].attempts[1].timings.before each[1].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[3].tests[0].attempts[1].timings.test.fnDuration","valueA":3999,"valueB":3993,"isEqual":false},{"path":"runs[3].tests[0].attempts[1].timings.test.afterFnDuration","valueA":227,"valueB":284,"isEqual":false},{"path":"runs[3].tests[0].attempts[1].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[3].tests[0].attempts[1].timings.after each[0].fnDuration","valueA":16,"valueB":19,"isEqual":false},{"path":"runs[3].tests[0].attempts[1].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[0].attempts[1].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":19,"afterFnDuration":0},"isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[0].attempts[1].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[0].attempts[1].wallClockStartedAt","valueA":"2023-09-08T03:27:15.958Z","valueB":"2023-09-08T13:43:07.100Z","isEqual":false},{"path":"runs[3].tests[0].attempts[1].wallClockDuration","valueA":4368,"valueB":4373,"isEqual":false},{"path":"runs[3].tests[0].attempts[1].videoTimestamp","valueA":5706,"valueB":null,"isEqual":false},{"path":"runs[3].tests[0].attempts[1].startedAt","valueA":"2023-09-08T03:27:15.958Z","valueB":"2023-09-08T13:43:07.100Z","isEqual":false},{"path":"runs[3].tests[0].attempts[1].duration","valueA":4368,"valueB":4373,"isEqual":false},{"path":"runs[3].tests[0].attempts[1].screenshots[0].screenshotId","valueA":"mmkc1","isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[0].attempts[1].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[3].tests[0].attempts[1].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[3].tests[0].attempts[1].screenshots[0].testAttemptIndex","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].tests[0].attempts[1].screenshots[0].takenAt","valueA":"2023-09-08T03:27:20.065Z","valueB":"2023-09-08T13:43:11.191Z","isEqual":false},{"path":"runs[3].tests[0].attempts[1].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 2).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 2).png","isEqual":true},{"path":"runs[3].tests[0].attempts[1].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[3].tests[0].attempts[1].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[3].tests[0].attempts[1].screenshots[0].size","valueB":377830,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[1].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[1].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[1].screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[1].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[1].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[1].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[1].screenshots[0].duration","valueB":281,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[2].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[3].tests[0].attempts[2].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[3].tests[0].attempts[2].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true","isEqual":false},{"path":"runs[3].tests[0].attempts[2].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:6:19)","isEqual":false},{"path":"runs[3].tests[0].attempts[2].error.codeFrame.line","valueA":6,"valueB":6,"isEqual":true},{"path":"runs[3].tests[0].attempts[2].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[3].tests[0].attempts[2].error.codeFrame.originalFile","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].tests[0].attempts[2].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].tests[0].attempts[2].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].tests[0].attempts[2].error.codeFrame.frame","valueA":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","valueB":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","isEqual":true},{"path":"runs[3].tests[0].attempts[2].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[3].tests[0].attempts[2].timings.lifecycle","valueA":44,"valueB":45,"isEqual":false},{"path":"runs[3].tests[0].attempts[2].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[3].tests[0].attempts[2].timings.before each[0].fnDuration","valueA":10,"valueB":8,"isEqual":false},{"path":"runs[3].tests[0].attempts[2].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[0].attempts[2].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[3].tests[0].attempts[2].timings.before each[1].fnDuration","valueA":52,"valueB":100,"isEqual":false},{"path":"runs[3].tests[0].attempts[2].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[0].attempts[2].timings.test.fnDuration","valueA":3991,"valueB":4002,"isEqual":false},{"path":"runs[3].tests[0].attempts[2].timings.test.afterFnDuration","valueA":224,"valueB":236,"isEqual":false},{"path":"runs[3].tests[0].attempts[2].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[3].tests[0].attempts[2].timings.after each[0].fnDuration","valueA":16,"valueB":23,"isEqual":false},{"path":"runs[3].tests[0].attempts[2].timings.after each[0].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[3].tests[0].attempts[2].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":21,"afterFnDuration":0},"isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[0].attempts[2].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[0].attempts[2].wallClockStartedAt","valueA":"2023-09-08T03:27:20.341Z","valueB":"2023-09-08T13:43:11.528Z","isEqual":false},{"path":"runs[3].tests[0].attempts[2].wallClockDuration","valueA":4363,"valueB":4395,"isEqual":false},{"path":"runs[3].tests[0].attempts[2].videoTimestamp","valueA":10089,"valueB":null,"isEqual":false},{"path":"runs[3].tests[0].attempts[2].startedAt","valueA":"2023-09-08T03:27:20.341Z","valueB":"2023-09-08T13:43:11.528Z","isEqual":false},{"path":"runs[3].tests[0].attempts[2].duration","valueA":4363,"valueB":4395,"isEqual":false},{"path":"runs[3].tests[0].attempts[2].screenshots[0].screenshotId","valueA":"kw950","isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[0].attempts[2].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[3].tests[0].attempts[2].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[3].tests[0].attempts[2].screenshots[0].testAttemptIndex","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[3].tests[0].attempts[2].screenshots[0].takenAt","valueA":"2023-09-08T03:27:24.443Z","valueB":"2023-09-08T13:43:15.688Z","isEqual":false},{"path":"runs[3].tests[0].attempts[2].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 3).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 3).png","isEqual":true},{"path":"runs[3].tests[0].attempts[2].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[3].tests[0].attempts[2].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[3].tests[0].attempts[2].screenshots[0].size","valueB":375503,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[2].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[2].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[2].screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[2].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[2].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[2].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[0].attempts[2].screenshots[0].duration","valueB":233,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[1].testId","valueA":"r4","valueB":"r4","isEqual":true},{"path":"runs[3].tests[1].title[0]","valueA":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","valueB":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","isEqual":true},{"path":"runs[3].tests[1].title[1]","valueA":"should assert that true is true","valueB":"should assert that true is true","isEqual":true},{"path":"runs[3].tests[1].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[3].tests[1].body","valueA":"() => {\n cy.wrap(true).should('be.true');\n }","valueB":"() => {\n cy.wrap(true).should('be.true');\n }","isEqual":true},{"path":"runs[3].tests[1].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[3].tests[1].attempts[0].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[3].tests[1].attempts[0].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[3].tests[1].attempts[0].timings.lifecycle","valueA":43,"valueB":35,"isEqual":false},{"path":"runs[3].tests[1].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[3].tests[1].attempts[0].timings.before each[0].fnDuration","valueA":13,"valueB":10,"isEqual":false},{"path":"runs[3].tests[1].attempts[0].timings.before each[0].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[3].tests[1].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[3].tests[1].attempts[0].timings.before each[1].fnDuration","valueA":391,"valueB":57,"isEqual":false},{"path":"runs[3].tests[1].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[1].attempts[0].timings.test.fnDuration","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[3].tests[1].attempts[0].timings.test.afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[1].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[3].tests[1].attempts[0].timings.after each[0].fnDuration","valueA":14,"valueB":12,"isEqual":false},{"path":"runs[3].tests[1].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[1].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":9,"afterFnDuration":1},"isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[1].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[1].attempts[0].wallClockStartedAt","valueA":"2023-09-08T03:27:24.722Z","valueB":"2023-09-08T13:43:16.013Z","isEqual":false},{"path":"runs[3].tests[1].attempts[0].wallClockDuration","valueA":475,"valueB":107,"isEqual":false},{"path":"runs[3].tests[1].attempts[0].videoTimestamp","valueA":14470,"valueB":null,"isEqual":false},{"path":"runs[3].tests[1].attempts[0].startedAt","valueA":"2023-09-08T03:27:24.722Z","valueB":"2023-09-08T13:43:16.013Z","isEqual":false},{"path":"runs[3].tests[1].attempts[0].duration","valueA":475,"valueB":107,"isEqual":false},{"path":"runs[3].tests[2].testId","valueA":"r5","valueB":"r5","isEqual":true},{"path":"runs[3].tests[2].title[0]","valueA":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","valueB":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","isEqual":true},{"path":"runs[3].tests[2].title[1]","valueA":"should fail on the first attempt and pass on the second","valueB":"should fail on the first attempt and pass on the second","isEqual":true},{"path":"runs[3].tests[2].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[3].tests[2].body","valueA":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","valueB":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","isEqual":true},{"path":"runs[3].tests[2].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[3].tests[2].attempts[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[3].tests[2].attempts[0].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[3].tests[2].attempts[0].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true","isEqual":false},{"path":"runs[3].tests[2].attempts[0].error.stack","valueA":" at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:16:21)","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-12-demo/./cypress/e2e/b.spec.js:16:21)","isEqual":false},{"path":"runs[3].tests[2].attempts[0].error.codeFrame.line","valueA":16,"valueB":16,"isEqual":true},{"path":"runs[3].tests[2].attempts[0].error.codeFrame.column","valueA":22,"valueB":22,"isEqual":true},{"path":"runs[3].tests[2].attempts[0].error.codeFrame.originalFile","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].tests[2].attempts[0].error.codeFrame.relativeFile","valueA":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].tests[2].attempts[0].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[3].tests[2].attempts[0].error.codeFrame.frame","valueA":" 14 | if (attempt === 0) {\n 15 | attempt++;\n> 16 | cy.wrap(false).should('be.true'); // This will fail on the first attempt\n | ^\n 17 | } else {\n 18 | cy.wrap(true).should('be.true'); // This will pass on the second attempt\n 19 | }","valueB":" 14 | if (attempt === 0) {\n 15 | attempt++;\n> 16 | cy.wrap(false).should('be.true'); // This will fail on the first attempt\n | ^\n 17 | } else {\n 18 | cy.wrap(true).should('be.true'); // This will pass on the second attempt\n 19 | }","isEqual":true},{"path":"runs[3].tests[2].attempts[0].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[3].tests[2].attempts[0].timings.lifecycle","valueA":34,"valueB":27,"isEqual":false},{"path":"runs[3].tests[2].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[3].tests[2].attempts[0].timings.before each[0].fnDuration","valueA":7,"valueB":7,"isEqual":true},{"path":"runs[3].tests[2].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[2].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[3].tests[2].attempts[0].timings.before each[1].fnDuration","valueA":2438,"valueB":75,"isEqual":false},{"path":"runs[3].tests[2].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[2].attempts[0].timings.test.fnDuration","valueA":3993,"valueB":3986,"isEqual":false},{"path":"runs[3].tests[2].attempts[0].timings.test.afterFnDuration","valueA":237,"valueB":211,"isEqual":false},{"path":"runs[3].tests[2].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[3].tests[2].attempts[0].timings.after each[0].fnDuration","valueA":12,"valueB":17,"isEqual":false},{"path":"runs[3].tests[2].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[2].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":15,"afterFnDuration":0},"isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[2].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[2].attempts[0].wallClockStartedAt","valueA":"2023-09-08T03:27:25.199Z","valueB":"2023-09-08T13:43:16.150Z","isEqual":false},{"path":"runs[3].tests[2].attempts[0].wallClockDuration","valueA":6737,"valueB":4310,"isEqual":false},{"path":"runs[3].tests[2].attempts[0].videoTimestamp","valueA":14947,"valueB":null,"isEqual":false},{"path":"runs[3].tests[2].attempts[0].startedAt","valueA":"2023-09-08T03:27:25.199Z","valueB":"2023-09-08T13:43:16.150Z","isEqual":false},{"path":"runs[3].tests[2].attempts[0].duration","valueA":6737,"valueB":4310,"isEqual":false},{"path":"runs[3].tests[2].attempts[0].screenshots[0].screenshotId","valueA":"9ljg2","isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[2].attempts[0].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[3].tests[2].attempts[0].screenshots[0].testId","valueA":"r5","valueB":"r5","isEqual":true},{"path":"runs[3].tests[2].attempts[0].screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[2].attempts[0].screenshots[0].takenAt","valueA":"2023-09-08T03:27:31.673Z","valueB":"2023-09-08T13:43:20.250Z","isEqual":false},{"path":"runs[3].tests[2].attempts[0].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should fail on the first attempt and pass on the second (failed).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should fail on the first attempt and pass on the second (failed).png","isEqual":true},{"path":"runs[3].tests[2].attempts[0].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[3].tests[2].attempts[0].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[3].tests[2].attempts[0].screenshots[0].size","valueB":378982,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[2].attempts[0].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[2].attempts[0].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[2].attempts[0].screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[2].attempts[0].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[2].attempts[0].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[2].attempts[0].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[2].attempts[0].screenshots[0].duration","valueB":209,"isEqual":false,"note":"Does not exist in A"},{"path":"runs[3].tests[2].attempts[1].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[3].tests[2].attempts[1].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[3].tests[2].attempts[1].timings.lifecycle","valueA":37,"valueB":56,"isEqual":false},{"path":"runs[3].tests[2].attempts[1].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[3].tests[2].attempts[1].timings.before each[0].fnDuration","valueA":14,"valueB":10,"isEqual":false},{"path":"runs[3].tests[2].attempts[1].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[2].attempts[1].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[3].tests[2].attempts[1].timings.before each[1].fnDuration","valueA":107,"valueB":97,"isEqual":false},{"path":"runs[3].tests[2].attempts[1].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[2].attempts[1].timings.test.fnDuration","valueA":3,"valueB":3,"isEqual":true},{"path":"runs[3].tests[2].attempts[1].timings.test.afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[2].attempts[1].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[3].tests[2].attempts[1].timings.after each[0].fnDuration","valueA":15,"valueB":13,"isEqual":false},{"path":"runs[3].tests[2].attempts[1].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].tests[2].attempts[1].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":11,"afterFnDuration":0},"isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[2].attempts[1].timings.after all","valueA":[{"hookId":"h3","fnDuration":4,"afterFnDuration":0}],"isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[2].attempts[1].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist in B"},{"path":"runs[3].tests[2].attempts[1].wallClockStartedAt","valueA":"2023-09-08T03:27:31.946Z","valueB":"2023-09-08T13:43:20.511Z","isEqual":false},{"path":"runs[3].tests[2].attempts[1].wallClockDuration","valueA":196,"valueB":167,"isEqual":false},{"path":"runs[3].tests[2].attempts[1].videoTimestamp","valueA":21694,"valueB":null,"isEqual":false},{"path":"runs[3].tests[2].attempts[1].startedAt","valueA":"2023-09-08T03:27:31.946Z","valueB":"2023-09-08T13:43:20.511Z","isEqual":false},{"path":"runs[3].tests[2].attempts[1].duration","valueA":196,"valueB":167,"isEqual":false},{"path":"startedTestsAt","valueA":"2023-09-08T03:26:45.684Z","valueB":"2023-09-08T13:42:36.752Z","isEqual":false},{"path":"endedTestsAt","valueA":"2023-09-08T03:27:32.145Z","valueB":"2023-09-08T13:43:20.716Z","isEqual":false},{"path":"config.animationDistanceThreshold","valueA":5,"valueB":5,"isEqual":true},{"path":"config.arch","valueA":"arm64","valueB":"arm64","isEqual":true},{"path":"config.autoOpen","valueA":false,"valueB":false,"isEqual":true},{"path":"config.baseUrl","valueA":"https://todomvc.com/examples/vanillajs","valueB":"https://todomvc.com/examples/vanillajs","isEqual":true},{"path":"config.blockHosts","valueA":null,"valueB":null,"isEqual":true},{"path":"config.browsers[0].name","valueA":"chrome","valueB":"chrome","isEqual":true},{"path":"config.browsers[0].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.browsers[0].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.browsers[0].displayName","valueA":"Chrome","valueB":"Chrome","isEqual":true},{"path":"config.browsers[0].version","valueA":"116.0.5845.179","valueB":"116.0.5845.179","isEqual":true},{"path":"config.browsers[0].path","valueA":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","valueB":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","isEqual":true},{"path":"config.browsers[0].minSupportedVersion","valueA":64,"valueB":64,"isEqual":true},{"path":"config.browsers[0].majorVersion","valueA":"116","valueB":"116","isEqual":true},{"path":"config.browsers[1].name","valueA":"edge","valueB":"edge","isEqual":true},{"path":"config.browsers[1].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.browsers[1].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.browsers[1].displayName","valueA":"Edge","valueB":"Edge","isEqual":true},{"path":"config.browsers[1].version","valueA":"116.0.1938.76","valueB":"116.0.1938.76","isEqual":true},{"path":"config.browsers[1].path","valueA":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","valueB":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","isEqual":true},{"path":"config.browsers[1].minSupportedVersion","valueA":79,"valueB":79,"isEqual":true},{"path":"config.browsers[1].majorVersion","valueA":"116","valueB":"116","isEqual":true},{"path":"config.browsers[2].name","valueA":"electron","valueB":"electron","isEqual":true},{"path":"config.browsers[2].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.browsers[2].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.browsers[2].displayName","valueA":"Electron","valueB":"Electron","isEqual":true},{"path":"config.browsers[2].version","valueA":"106.0.5249.51","valueB":"106.0.5249.51","isEqual":true},{"path":"config.browsers[2].path","valueA":"","valueB":"","isEqual":true},{"path":"config.browsers[2].majorVersion","valueA":106,"valueB":106,"isEqual":true},{"path":"config.chromeWebSecurity","valueA":true,"valueB":true,"isEqual":true},{"path":"config.clientRoute","valueA":"/__/","valueB":"/__/","isEqual":true},{"path":"config.configFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress.config.ts","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress.config.ts","isEqual":true},{"path":"config.cypressBinaryRoot","valueA":"/Users/miguelangarano/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app","valueB":"/Users/miguelangarano/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app","isEqual":true},{"path":"config.cypressEnv","valueA":"production","valueB":"production","isEqual":true},{"path":"config.defaultCommandTimeout","valueA":4000,"valueB":4000,"isEqual":true},{"path":"config.devServerPublicPathRoute","valueA":"/__cypress/src","valueB":"/__cypress/src","isEqual":true},{"path":"config.downloadsFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/downloads","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/downloads","isEqual":true},{"path":"config.env.currents_temp_file","valueA":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-99075-DhSNMfp2WQcu","valueB":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-20155-pBOzRF3wo7HA","isEqual":false},{"path":"config.env.currents_debug_enabled","valueA":false,"valueB":false,"isEqual":true},{"path":"config.excludeSpecPattern","valueA":"*.hot-update.js","valueB":"*.hot-update.js","isEqual":true},{"path":"config.execTimeout","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.experimentalCspAllowList","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalFetchPolyfill","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalInteractiveRunEvents","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalMemoryManagement","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalModifyObstructiveThirdPartyCode","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalOriginDependencies","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalRunAllSpecs","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalSingleTabRunMode","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalSkipDomainInjection","valueA":null,"valueB":null,"isEqual":true},{"path":"config.experimentalSourceRewriting","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalStudio","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalWebKitSupport","valueA":false,"valueB":false,"isEqual":true},{"path":"config.fileServerFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","isEqual":true},{"path":"config.fixturesFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/fixtures","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/fixtures","isEqual":true},{"path":"config.hosts","valueA":null,"valueB":null,"isEqual":true},{"path":"config.includeShadowDom","valueA":false,"valueB":false,"isEqual":true},{"path":"config.isInteractive","valueA":true,"valueB":true,"isEqual":true},{"path":"config.isTextTerminal","valueA":true,"valueB":true,"isEqual":true},{"path":"config.keystrokeDelay","valueA":0,"valueB":0,"isEqual":true},{"path":"config.modifyObstructiveCode","valueA":true,"valueB":true,"isEqual":true},{"path":"config.morgan","valueA":false,"valueB":false,"isEqual":true},{"path":"config.namespace","valueA":"__cypress","valueB":"__cypress","isEqual":true},{"path":"config.numTestsKeptInMemory","valueA":0,"valueB":0,"isEqual":true},{"path":"config.pageLoadTimeout","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.platform","valueA":"darwin","valueB":"darwin","isEqual":true},{"path":"config.port","valueA":null,"valueB":null,"isEqual":true},{"path":"config.projectId","valueA":null,"valueB":null,"isEqual":true},{"path":"config.projectName","valueA":"cypress-12-demo","valueB":"cypress-12-demo","isEqual":true},{"path":"config.projectRoot","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","isEqual":true},{"path":"config.rawJson.e2e.baseUrl","valueA":"https://todomvc.com/examples/vanillajs","valueB":"https://todomvc.com/examples/vanillajs","isEqual":true},{"path":"config.rawJson.e2e.supportFile","valueA":"cypress/support/e2e.ts","valueB":"cypress/support/e2e.ts","isEqual":true},{"path":"config.rawJson.e2e.specPattern","valueA":"cypress/*/**/*.spec.js","valueB":"cypress/*/**/*.spec.js","isEqual":true},{"path":"config.rawJson.e2e.setupNodeEvents","valueA":"[Function setupNodeEvents]","valueB":"[Function setupNodeEvents]","isEqual":true},{"path":"config.rawJson.component.specPattern[0]","valueA":"pages/__tests__/*.spec.tsx","valueB":"pages/__tests__/*.spec.tsx","isEqual":true},{"path":"config.rawJson.component.setupNodeEvents","valueA":"[Function setupNodeEvents]","valueB":"[Function setupNodeEvents]","isEqual":true},{"path":"config.rawJson.component.devServer.framework","valueA":"next","valueB":"next","isEqual":true},{"path":"config.rawJson.component.devServer.bundler","valueA":"webpack","valueB":"webpack","isEqual":true},{"path":"config.rawJson.baseUrl","valueA":"https://todomvc.com/examples/vanillajs","valueB":"https://todomvc.com/examples/vanillajs","isEqual":true},{"path":"config.rawJson.supportFile","valueA":"cypress/support/e2e.ts","valueB":"cypress/support/e2e.ts","isEqual":true},{"path":"config.rawJson.specPattern","valueA":"cypress/*/**/*.spec.js","valueB":"cypress/*/**/*.spec.js","isEqual":true},{"path":"config.rawJson.setupNodeEvents","valueA":"[Function setupNodeEvents]","valueB":"[Function setupNodeEvents]","isEqual":true},{"path":"config.rawJson.projectRoot","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo","isEqual":true},{"path":"config.rawJson.projectName","valueA":"cypress-12-demo","valueB":"cypress-12-demo","isEqual":true},{"path":"config.rawJson.repoRoot","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","isEqual":true},{"path":"config.redirectionLimit","valueA":20,"valueB":20,"isEqual":true},{"path":"config.repoRoot","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","isEqual":true},{"path":"config.report","valueA":true,"valueB":true,"isEqual":true},{"path":"config.reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"config.reporterOptions","valueA":null,"valueB":null,"isEqual":true},{"path":"config.reporterRoute","valueA":"/__cypress/reporter","valueB":"/__cypress/reporter","isEqual":true},{"path":"config.requestTimeout","valueA":5000,"valueB":5000,"isEqual":true},{"path":"config.resolved.animationDistanceThreshold.value","valueA":5,"valueB":5,"isEqual":true},{"path":"config.resolved.animationDistanceThreshold.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.arch.value","valueA":"arm64","valueB":"arm64","isEqual":true},{"path":"config.resolved.arch.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.baseUrl.value","valueA":"https://todomvc.com/examples/vanillajs","valueB":"https://todomvc.com/examples/vanillajs","isEqual":true},{"path":"config.resolved.baseUrl.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.blockHosts.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.blockHosts.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.chromeWebSecurity.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.chromeWebSecurity.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.clientCertificates.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.defaultCommandTimeout.value","valueA":4000,"valueB":4000,"isEqual":true},{"path":"config.resolved.defaultCommandTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.downloadsFolder.value","valueA":"cypress/downloads","valueB":"cypress/downloads","isEqual":true},{"path":"config.resolved.downloadsFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.env.currents_temp_file.value","valueA":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-99075-DhSNMfp2WQcu","valueB":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-20155-pBOzRF3wo7HA","isEqual":false},{"path":"config.resolved.env.currents_temp_file.from","valueA":"cli","valueB":"cli","isEqual":true},{"path":"config.resolved.env.currents_debug_enabled.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.env.currents_debug_enabled.from","valueA":"cli","valueB":"cli","isEqual":true},{"path":"config.resolved.execTimeout.value","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.resolved.execTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalCspAllowList.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalCspAllowList.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalFetchPolyfill.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalFetchPolyfill.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalInteractiveRunEvents.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalInteractiveRunEvents.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalRunAllSpecs.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalRunAllSpecs.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalMemoryManagement.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalMemoryManagement.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalModifyObstructiveThirdPartyCode.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalModifyObstructiveThirdPartyCode.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalSkipDomainInjection.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.experimentalSkipDomainInjection.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalOriginDependencies.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalOriginDependencies.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalSourceRewriting.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalSourceRewriting.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalSingleTabRunMode.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalSingleTabRunMode.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalStudio.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalStudio.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalWebKitSupport.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalWebKitSupport.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.fileServerFolder.value","valueA":"","valueB":"","isEqual":true},{"path":"config.resolved.fileServerFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.fixturesFolder.value","valueA":"cypress/fixtures","valueB":"cypress/fixtures","isEqual":true},{"path":"config.resolved.fixturesFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.excludeSpecPattern.value","valueA":"*.hot-update.js","valueB":"*.hot-update.js","isEqual":true},{"path":"config.resolved.excludeSpecPattern.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.includeShadowDom.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.includeShadowDom.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.keystrokeDelay.value","valueA":0,"valueB":0,"isEqual":true},{"path":"config.resolved.keystrokeDelay.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.modifyObstructiveCode.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.modifyObstructiveCode.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.nodeVersion.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.numTestsKeptInMemory.value","valueA":0,"valueB":0,"isEqual":true},{"path":"config.resolved.numTestsKeptInMemory.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.platform.value","valueA":"darwin","valueB":"darwin","isEqual":true},{"path":"config.resolved.platform.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.pageLoadTimeout.value","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.resolved.pageLoadTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.port.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.port.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.projectId.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.projectId.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.redirectionLimit.value","valueA":20,"valueB":20,"isEqual":true},{"path":"config.resolved.redirectionLimit.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.reporter.value","valueA":"spec","valueB":"spec","isEqual":true},{"path":"config.resolved.reporter.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.reporterOptions.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.reporterOptions.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.requestTimeout.value","valueA":5000,"valueB":5000,"isEqual":true},{"path":"config.resolved.requestTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.resolvedNodePath.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.resolvedNodePath.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.resolvedNodeVersion.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.resolvedNodeVersion.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.responseTimeout.value","valueA":30000,"valueB":30000,"isEqual":true},{"path":"config.resolved.responseTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.retries.value.runMode","valueA":0,"valueB":0,"isEqual":true},{"path":"config.resolved.retries.value.openMode","valueA":0,"valueB":0,"isEqual":true},{"path":"config.resolved.retries.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.screenshotOnRunFailure.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.screenshotOnRunFailure.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.screenshotsFolder.value","valueA":"cypress/screenshots","valueB":"cypress/screenshots","isEqual":true},{"path":"config.resolved.screenshotsFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.slowTestThreshold.value","valueA":10000,"valueB":10000,"isEqual":true},{"path":"config.resolved.slowTestThreshold.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.scrollBehavior.value","valueA":"top","valueB":"top","isEqual":true},{"path":"config.resolved.scrollBehavior.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.supportFile.value","valueA":"cypress/support/e2e.ts","valueB":"cypress/support/e2e.ts","isEqual":true},{"path":"config.resolved.supportFile.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.supportFolder.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.supportFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.taskTimeout.value","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.resolved.taskTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.testIsolation.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.testIsolation.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.trashAssetsBeforeRuns.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.trashAssetsBeforeRuns.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.userAgent.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.userAgent.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.video.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.video.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.videoCompression.value","valueA":32,"valueB":32,"isEqual":true},{"path":"config.resolved.videoCompression.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.videosFolder.value","valueA":"cypress/videos","valueB":"cypress/videos","isEqual":true},{"path":"config.resolved.videosFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.videoUploadOnPasses.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.videoUploadOnPasses.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.viewportHeight.value","valueA":660,"valueB":660,"isEqual":true},{"path":"config.resolved.viewportHeight.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.viewportWidth.value","valueA":1000,"valueB":1000,"isEqual":true},{"path":"config.resolved.viewportWidth.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.waitForAnimations.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.waitForAnimations.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.watchForFileChanges.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.watchForFileChanges.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.specPattern.value","valueA":"cypress/*/**/*.spec.js","valueB":"cypress/*/**/*.spec.js","isEqual":true},{"path":"config.resolved.specPattern.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.browsers.value[0].name","valueA":"chrome","valueB":"chrome","isEqual":true},{"path":"config.resolved.browsers.value[0].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.resolved.browsers.value[0].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.resolved.browsers.value[0].displayName","valueA":"Chrome","valueB":"Chrome","isEqual":true},{"path":"config.resolved.browsers.value[0].version","valueA":"116.0.5845.179","valueB":"116.0.5845.179","isEqual":true},{"path":"config.resolved.browsers.value[0].path","valueA":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","valueB":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","isEqual":true},{"path":"config.resolved.browsers.value[0].minSupportedVersion","valueA":64,"valueB":64,"isEqual":true},{"path":"config.resolved.browsers.value[0].majorVersion","valueA":"116","valueB":"116","isEqual":true},{"path":"config.resolved.browsers.value[1].name","valueA":"edge","valueB":"edge","isEqual":true},{"path":"config.resolved.browsers.value[1].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.resolved.browsers.value[1].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.resolved.browsers.value[1].displayName","valueA":"Edge","valueB":"Edge","isEqual":true},{"path":"config.resolved.browsers.value[1].version","valueA":"116.0.1938.76","valueB":"116.0.1938.76","isEqual":true},{"path":"config.resolved.browsers.value[1].path","valueA":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","valueB":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","isEqual":true},{"path":"config.resolved.browsers.value[1].minSupportedVersion","valueA":79,"valueB":79,"isEqual":true},{"path":"config.resolved.browsers.value[1].majorVersion","valueA":"116","valueB":"116","isEqual":true},{"path":"config.resolved.browsers.value[2].name","valueA":"electron","valueB":"electron","isEqual":true},{"path":"config.resolved.browsers.value[2].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.resolved.browsers.value[2].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.resolved.browsers.value[2].displayName","valueA":"Electron","valueB":"Electron","isEqual":true},{"path":"config.resolved.browsers.value[2].version","valueA":"106.0.5249.51","valueB":"106.0.5249.51","isEqual":true},{"path":"config.resolved.browsers.value[2].path","valueA":"","valueB":"","isEqual":true},{"path":"config.resolved.browsers.value[2].majorVersion","valueA":106,"valueB":106,"isEqual":true},{"path":"config.resolved.browsers.from","valueA":"runtime","valueB":"runtime","isEqual":true},{"path":"config.resolved.hosts.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.hosts.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.isInteractive.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.isInteractive.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolvedNodePath","valueA":"/Users/miguelangarano/.nvm/versions/node/v18.14.2/bin/node","valueB":"/Users/miguelangarano/.nvm/versions/node/v18.14.2/bin/node","isEqual":true},{"path":"config.resolvedNodeVersion","valueA":"18.14.2","valueB":"18.14.2","isEqual":true},{"path":"config.responseTimeout","valueA":30000,"valueB":30000,"isEqual":true},{"path":"config.retries.runMode","valueA":0,"valueB":0,"isEqual":true},{"path":"config.retries.openMode","valueA":0,"valueB":0,"isEqual":true},{"path":"config.screenshotOnRunFailure","valueA":true,"valueB":true,"isEqual":true},{"path":"config.screenshotsFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/screenshots","isEqual":true},{"path":"config.scrollBehavior","valueA":"top","valueB":"top","isEqual":true},{"path":"config.setupNodeEvents","valueA":"[Function setupNodeEvents]","valueB":"[Function setupNodeEvents]","isEqual":true},{"path":"config.slowTestThreshold","valueA":10000,"valueB":10000,"isEqual":true},{"path":"config.socketId","valueA":"7qpxyfdhn8","valueB":"dtsrh5hv0f","isEqual":false},{"path":"config.socketIoCookie","valueA":"__socket","valueB":"__socket","isEqual":true},{"path":"config.socketIoRoute","valueA":"/__socket","valueB":"/__socket","isEqual":true},{"path":"config.specPattern","valueA":"cypress/*/**/*.spec.js","valueB":"cypress/*/**/*.spec.js","isEqual":true},{"path":"config.supportFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support/e2e.ts","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support/e2e.ts","isEqual":true},{"path":"config.supportFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/support","isEqual":true},{"path":"config.taskTimeout","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.testIsolation","valueA":true,"valueB":true,"isEqual":true},{"path":"config.trashAssetsBeforeRuns","valueA":true,"valueB":true,"isEqual":true},{"path":"config.userAgent","valueA":null,"valueB":null,"isEqual":true},{"path":"config.version","valueA":"12.17.4","valueB":"12.17.4","isEqual":true},{"path":"config.video","valueA":true,"valueB":true,"isEqual":true},{"path":"config.videoCompression","valueA":32,"valueB":32,"isEqual":true},{"path":"config.videoUploadOnPasses","valueA":true,"valueB":true,"isEqual":true},{"path":"config.videosFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-12-demo/cypress/videos","isEqual":true},{"path":"config.viewportHeight","valueA":660,"valueB":660,"isEqual":true},{"path":"config.viewportWidth","valueA":1000,"valueB":1000,"isEqual":true},{"path":"config.waitForAnimations","valueA":true,"valueB":true,"isEqual":true},{"path":"config.watchForFileChanges","valueA":false,"valueB":false,"isEqual":true},{"path":"config.testingType","valueA":"e2e","valueB":"e2e","isEqual":true},{"path":"status","valueA":"finished","valueB":"finished","isEqual":true},{"path":"runUrl","valueA":"https://app.currents.dev/run/6f943a835aca8b4f","valueB":"https://app.currents.dev/run/77cec387a5c57c87","isEqual":false}] \ No newline at end of file diff --git a/e2e/cypress-13-demo/currents.config.js b/e2e/cypress-13-demo/currents.config.js new file mode 100644 index 0000000..6d8c9c2 --- /dev/null +++ b/e2e/cypress-13-demo/currents.config.js @@ -0,0 +1,13 @@ +module.exports = { + e2e: { + batchSize: 3, // how many specs to send in one batch + }, + component: { + batchSize: 5, // how many specs to send in one batch + }, + // eslint-disable-next-line turbo/no-undeclared-env-vars + projectId: !!(process.env.GITHUB_ACTION || process.env.CIRCLE_BRANCH) + ? "Ij0RfK" + : "l4zuz8", + // cloudServiceUrl: "http://localhost:1234", +}; diff --git a/e2e/cypress-13-demo/cypress.config.ts b/e2e/cypress-13-demo/cypress.config.ts new file mode 100644 index 0000000..a6893cc --- /dev/null +++ b/e2e/cypress-13-demo/cypress.config.ts @@ -0,0 +1,27 @@ +import { defineConfig } from "cypress"; +import currents from "cypress-cloud/plugin"; + +module.exports = defineConfig({ + video: true, + e2e: { + baseUrl: "https://todomvc.com/examples/vanillajs", + supportFile: "cypress/support/e2e.ts", + specPattern: "cypress/*/**/*.spec.js", + setupNodeEvents(on, config) { + require("@cypress/grep/src/plugin")(config); + // require("cypress-terminal-report/src/installLogsPrinter")(on); + return currents(on, config); + }, + }, + + component: { + specPattern: ["pages/__tests__/*.spec.tsx"], + setupNodeEvents(on, config) { + return currents(on, config); + }, + devServer: { + framework: "next", + bundler: "webpack", + }, + }, +}); diff --git a/e2e/cypress-13-demo/cypress/e2e/a.spec.js b/e2e/cypress-13-demo/cypress/e2e/a.spec.js new file mode 100644 index 0000000..0ba5b60 --- /dev/null +++ b/e2e/cypress-13-demo/cypress/e2e/a.spec.js @@ -0,0 +1,7 @@ +describe('Failing test with 2 attempts', () => { + it('should try 2 times', { + retries: 2, + }, () => { + cy.wrap(false).should('be.true'); + }); +}); diff --git a/e2e/cypress-13-demo/cypress/e2e/b.spec.js b/e2e/cypress-13-demo/cypress/e2e/b.spec.js new file mode 100644 index 0000000..87843a6 --- /dev/null +++ b/e2e/cypress-13-demo/cypress/e2e/b.spec.js @@ -0,0 +1,21 @@ +let attempt = 0; +describe('Failing test with 2 attempts, passed test and flaky test with 2 attempts', () => { + it('should try 2 times', { + retries: 2, + }, () => { + cy.wrap(false).should('be.true'); + }); + + it('should assert that true is true', () => { + cy.wrap(true).should('be.true'); + }); + + it('should fail on the first attempt and pass on the second', { retries: 2 }, () => { + if (attempt === 0) { + attempt++; + cy.wrap(false).should('be.true'); // This will fail on the first attempt + } else { + cy.wrap(true).should('be.true'); // This will pass on the second attempt + } + }); +}); diff --git a/e2e/cypress-13-demo/cypress/e2e/c.spec.js b/e2e/cypress-13-demo/cypress/e2e/c.spec.js new file mode 100644 index 0000000..47486ad --- /dev/null +++ b/e2e/cypress-13-demo/cypress/e2e/c.spec.js @@ -0,0 +1,5 @@ +describe('Ignored test', () => { + it.skip('should be a skipped test', () => { + cy.wrap(false).should('be.true'); + }); +}); diff --git a/e2e/cypress-13-demo/cypress/e2e/d.spec.js b/e2e/cypress-13-demo/cypress/e2e/d.spec.js new file mode 100644 index 0000000..405f45f --- /dev/null +++ b/e2e/cypress-13-demo/cypress/e2e/d.spec.js @@ -0,0 +1,13 @@ +describe('Passed test with screenshot, passed test with no screenshots', () => { + it('should assert and take a screenshot', () => { + // Assert that true is true + cy.wrap(true).should('be.true'); + + // Take a screenshot + cy.screenshot('internal-assert-screenshot'); + }); + + it('should assert that true is true', () => { + cy.wrap(true).should('be.true'); + }); +}); diff --git a/e2e/cypress-13-demo/cypress/e2e/e.spec.js b/e2e/cypress-13-demo/cypress/e2e/e.spec.js new file mode 100644 index 0000000..584060e --- /dev/null +++ b/e2e/cypress-13-demo/cypress/e2e/e.spec.js @@ -0,0 +1,5 @@ +describe('Should throw an error', () => { + it('Should throw an error', () => { + throw new Error("test error") + }); +}); diff --git a/e2e/cypress-13-demo/cypress/support/commands.ts b/e2e/cypress-13-demo/cypress/support/commands.ts new file mode 100644 index 0000000..a8278b3 --- /dev/null +++ b/e2e/cypress-13-demo/cypress/support/commands.ts @@ -0,0 +1,119 @@ +/// +// *********************************************** +// 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 +// } +// } +// } + +// *********************************************** +// This example commands.js shows you how to +// create the custom commands: 'createDefaultTodos' +// and 'createTodo'. +// +// The commands.js file is a great place to +// modify existing commands and create custom +// commands for use throughout your tests. +// +// You can read more about custom commands here: +// https://on.cypress.io/commands +// *********************************************** + +Cypress.Commands.add("createDefaultTodos", function () { + let TODO_ITEM_ONE = "buy some cheese"; + let TODO_ITEM_TWO = "feed the cat"; + let TODO_ITEM_THREE = "book a doctors appointment"; + + // begin the command here, which by will display + // as a 'spinning blue state' in the UI to indicate + // the command is running + let cmd = Cypress.log({ + name: "create default todos", + message: [], + consoleProps() { + // we're creating our own custom message here + // which will print out to our browsers console + // whenever we click on this command + return { + "Inserted Todos": [TODO_ITEM_ONE, TODO_ITEM_TWO, TODO_ITEM_THREE], + }; + }, + }); + + // additionally we pass {log: false} to all of our + // sub-commands so none of them will output to + // our command log + + cy.get(".new-todo", { log: false }) + .type(`${TODO_ITEM_ONE}{enter}`, { log: false }) + .type(`${TODO_ITEM_TWO}{enter}`, { log: false }) + .type(`${TODO_ITEM_THREE}{enter}`, { log: false }); + + cy.get(".todo-list li", { log: false }).then(function ($listItems) { + // once we're done inserting each of the todos + // above we want to return the .todo-list li's + // to allow for further chaining and then + // we want to snapshot the state of the DOM + // and end the command so it goes from that + // 'spinning blue state' to the 'finished state' + cmd.set({ $el: $listItems }).snapshot().end(); + }); +}); + +Cypress.Commands.add("createTodo", function (todo) { + let cmd = Cypress.log({ + name: "create todo", + message: todo, + consoleProps() { + return { + "Inserted Todo": todo, + }; + }, + }); + + // create the todo + cy.get(".new-todo", { log: false }).type(`${todo}{enter}`, { log: false }); + + // now go find the actual todo + // in the todo list so we can + // easily alias this in our tests + // and set the $el so its highlighted + cy.get(".todo-list", { log: false }) + .contains("li", todo.trim(), { log: false }) + .then(function ($li) { + // set the $el for the command so + // it highlights when we hover over + // our command + cmd.set({ $el: $li }).snapshot().end(); + }); +}); diff --git a/e2e/cypress-13-demo/cypress/support/component-index.html b/e2e/cypress-13-demo/cypress/support/component-index.html new file mode 100644 index 0000000..3e16e9b --- /dev/null +++ b/e2e/cypress-13-demo/cypress/support/component-index.html @@ -0,0 +1,14 @@ + + + + + + + Components App + +
+ + +
+ + \ No newline at end of file diff --git a/e2e/cypress-13-demo/cypress/support/component.ts b/e2e/cypress-13-demo/cypress/support/component.ts new file mode 100644 index 0000000..e11a5fe --- /dev/null +++ b/e2e/cypress-13-demo/cypress/support/component.ts @@ -0,0 +1,39 @@ +// *********************************************************** +// 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/react18"; + +// 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() diff --git a/e2e/cypress-13-demo/cypress/support/e2e.ts b/e2e/cypress-13-demo/cypress/support/e2e.ts new file mode 100644 index 0000000..32bd259 --- /dev/null +++ b/e2e/cypress-13-demo/cypress/support/e2e.ts @@ -0,0 +1,9 @@ +import registerCypressGrep from "@cypress/grep/src/support"; +require("cypress-terminal-report/src/installLogsCollector")(); +require("cypress-cloud/support"); +require("./commands"); + +registerCypressGrep(); +beforeEach(() => { + cy.visit("/"); +}); diff --git a/e2e/cypress-13-demo/data-references/ccy-1.10-cy-13-crapi.json b/e2e/cypress-13-demo/data-references/ccy-1.10-cy-13-crapi.json new file mode 100644 index 0000000..57fb1af --- /dev/null +++ b/e2e/cypress-13-demo/data-references/ccy-1.10-cy-13-crapi.json @@ -0,0 +1 @@ +{"status":"OK","data":{"runId":"ff965046ffbf2977","projectId":"2cI1I5","createdAt":"2023-09-14T03:52:54.719Z","tags":[],"cypressVersion":"13.1.0","cancellation":null,"timeout":{"isTimeout":false},"groups":[{"groupId":"run-compat-test-2023-09-14T03:52:51.461Z","platform":{"osName":"darwin","osVersion":"22.5.0","browserName":"Electron","browserVersion":"106.0.5249.51"},"createdAt":"2023-09-14T03:52:54.719Z","instances":{"overall":5,"claimed":5,"complete":5,"passes":2,"failures":3},"tests":{"overall":8,"passes":4,"failures":3,"pending":1,"skipped":0,"retries":1,"flaky":1}}],"meta":{"ciBuildId":"run-compat-test-2023-09-14T03:52:51.461Z","commit":{"branch":"fix/cypress-13-validation","remoteOrigin":null,"authorEmail":"miguelangarano@gmail.com","authorName":"Miguel Langarano","message":"added throw error test\n","sha":"25ed7c8161f4a9f228557d80e3e56d3bb3b40062"},"platform":{"osName":"darwin","osVersion":"22.5.0","browserName":"Electron","browserVersion":"106.0.5249.51"}},"specs":[{"groupId":"run-compat-test-2023-09-14T03:52:51.461Z","spec":"cypress/e2e/a.spec.js","instanceId":"fdXzcLKZYTrL","claimedAt":"2023-09-14T03:52:55.404Z","completedAt":"2023-09-14T03:53:16.594Z","machineId":"Biln0UhchSnD","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/fdXzcLKZYTrL_3jASkGr6HmZB.mp4?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=V6~VDQ7OXpKqJsm0hTXtBFEGdfgzwErmElIby7iT~WPcB~4WK6WenUwqC5KYLQnbIZVBdcfVuda20EnUgy91WYBoXyUY0VBnNwrLJB~WNv7zfjlz3dlBcxuBG00mQvnfnwqEsSwzTqFrXd55WOI6axQH-VlqVQ1fxTkttsmHbDWBIvuZAjAmZAI09sDgBhROhCprVut3Ha03kaBJhUXq-4uYC0dmsdBGhRMh-hgXwHRJzrJutHAGEqmxKiVB5guwX0BdDVWUlYM~wS3Wzd6hKTdzolXuGm-cCylCId-BIiohQr3dmAT~g-rhkJuxaLb7gL5wFdcIwmVHNR2p-DVWHg__","stats":{"duration":14346,"endedAt":"2023-09-14T03:53:14.889Z","startedAt":"2023-09-14T03:53:00.543Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1,"wallClockDuration":14346,"wallClockStartedAt":"2023-09-14T03:53:00.543Z","wallClockEndedAt":"2023-09-14T03:53:14.889Z"},"screenshots":[{"testAttemptIndex":0,"size":347345,"takenAt":"2023-09-14T03:53:05.049Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":284,"testId":"r0","screenshotId":"diAJEQN2srLMBUjgeZ7Bt","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/tUza47SEtE0c.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=mQNfKhwRV7kmnW9vNsYouelwx5F7IL8rFV2DnqZYoXzb02oYzG2hTJVDHprQum~g4YuoiXREOsBM1Swo0PF3peSdm2itJ8y1ApOxIeATnrmetu~iPazBEF8lUSUYgGDD26k0vqBvRZVdAwNPT~bO0jsZ206kG0t9RsyTKUCAqODQgvXv4J7WKmvhhVK4X9QWMtulZtc25jiCYpBW4IWXUAuL69ufR3aFYeu6pcF6srMDDatyn5-uCdrGOxaZONnY7EpuGtOm4eKMwpmUVghabEtk1DZg~vImjb31RBtV8biJSx8Eho8i0nnWdeo~TSup2jR0xYlj87Zwsk9jzznIDg__","height":0,"width":0},{"testAttemptIndex":1,"size":363028,"takenAt":"2023-09-14T03:53:10.125Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":209,"testId":"r0","screenshotId":"2XD1qkX-Bq___FcQyBTEM","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/gy5201yXip0k.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=ILJd6j0lhnrZH8q7i23JzbYLtTtDhj9h-iKQ0YKzX1j4KybB-eWc41lSMh61EdMVjySKAfeUHu13-4T9M9gojHIV7HgIeFrnrXrT-ye4qa4f8IzfTFseFLYihSljRgWo6f~or-aS9jE1QQoGZTiN6X4KgsLJmWo6RobZNInSg13qr-o-UTmvGkbte3mxciSwVfRRU8pb3g5Ad1evPI-0APn0ytak7lQhd8Eu1dfM2DPF~wdyX0z1Uy9oXqeOIC5eWFQ8dE0wBGgjhUtrH4FZCHvihs4mfgJLt4dk3mBpH3Iv9S8Ll0tzkGnzXir5gHdcHpWMBRpmbLWSHfNrGShz8g__","height":0,"width":0},{"testAttemptIndex":2,"size":362832,"takenAt":"2023-09-14T03:53:14.573Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":237,"testId":"r0","screenshotId":"NheEGgqfTAz9TKqLHh5-K","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/NjyQrubO5SwF.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=FWIXmsmsNBZRa1tIGkHluJE9kK-9D4cfaURY~AXCeHNK3giE1wV00AXnt6wCInlPM8pNVj1~rmPxgiLwpyqE3FkhM4tf7CPAVccv2ogqnVB~-Rhp4Jiwku5-KjrQ9~PiOjkar6XZ3qzWAJfH3VFY5LdOLlvx-GDZW4B~MMUinY6QMk0mBpVa6~6Hvme2kZjRPnmPPg2m~Bm9Lo0WWZyNDuAMW8Q7NBPkMQ-Ke8WHaeoPEPzPzRUy2DYEoIJFy9fPvT9N45-iz0qs6zY~UpPXkoZJpJeQZIX56XbB3rrcVTGIfnpWUdeDcZOTKnZVYD7X84Zunoiy9AUfHKuQjuUoyw__","height":0,"width":0}],"exception":null,"flaky":0}},{"groupId":"run-compat-test-2023-09-14T03:52:51.461Z","spec":"cypress/e2e/b.spec.js","instanceId":"xx0otRDoP5yw","claimedAt":"2023-09-14T03:52:55.432Z","completedAt":"2023-09-14T03:53:46.048Z","machineId":"Biln0UhchSnD","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/xx0otRDoP5yw_Pl369tmA1QoX.mp4?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=sEZ4r40gaDQ0r6nS40r0tb98LCkzd507v3CHPXN67COO0F-493M1B2gdfdz8y0CeAlytX525P~Kwui70aN9bv0I~g6mpuXi0vHbV0VeAiJAoC35oMK3F7of10YWtrXDqevZbUB8ooiiVBpQB59GL5~gYxv6NiK61YlvuVvPDyn6Bw~h8ER3Nt2NZeIv0GfpriFbWQEbBajI35WG9O8~eo5VAsU8psA-LVC7z4KFkQObOUCnQrorNabR17nIRmTBVtyE1RjQx7a0wzbQ0j23NIy7yJ1dTOjEwmUjmbgv1JorzYoxsWmSyJwbC3NwvpY2-KW6x3rhthBnoF2JaAyZnNA__","stats":{"duration":18348,"endedAt":"2023-09-14T03:53:44.443Z","startedAt":"2023-09-14T03:53:26.095Z","failures":1,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":3,"wallClockDuration":18348,"wallClockStartedAt":"2023-09-14T03:53:26.095Z","wallClockEndedAt":"2023-09-14T03:53:44.443Z"},"screenshots":[{"testAttemptIndex":0,"size":373963,"takenAt":"2023-09-14T03:53:30.465Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":241,"testId":"r0","screenshotId":"93w4h82VCC2K27FUF2LKy","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/sj5oEw67tr6f.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=QZY4vsdY0Rh~J3k7Abo~UgrGiX33~qRyhUtANJuwnGmi2~cpncR5MLyVwsiKqiIyy1KbED1RNqKDSy6nil-qyZJkQ056pDoWKgN~NnyrbOLeYyMzylVAGy0dZaBmxKpaD0GfOxbEqFbp1hhay1sJ6oSG5GlWB2C2N9P1z~AZu0MmSH2cz8FLqYsG9HeAzO~wjlcOgNwXlA2hq2h9NnbjuArOsruqe-2d5uGfPSjMI2aMHH9cjXJcbwl30xA9lQtWTqDVXuZMooSnalye-ScW1fuzODx6Rh8Leob~ALL0ThKK7t5q9eiPKsPT~rXE1kSOmlaKh6xo6oagNy6YaDOFtw__","height":0,"width":0},{"testAttemptIndex":1,"size":375260,"takenAt":"2023-09-14T03:53:34.931Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":223,"testId":"r0","screenshotId":"AuE2zGILEwr_jXw2TsMaA","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/OdnD7qux2S0O.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=m-vTDtOCwIpZ0I1NIbVCTjqUkh90fiiUoTI69-J5hQB6aoiaNMSsxIZOpdpacUb59x3IvxyRNObiNKHJT2voUg4SeFqVPJtX3TWvcAJ0RGX7jExgi8otY8LRnpYhkhpZOCZgBCQQQoiKHmeKftTmTqu6Ljd49pFucRPxbnSCvPbPUUjVOVLVyUy4R6spQCPg6ialj~Vru8n8ClL8XlCtb6EE4lLib~Jw0rM~z3Skx956RMHa6teGnUqmhcBcSDaiuC4anjDUp-DaeTfBgorg31SwYYTDK~4PbBdSV60CCnnVOhITxFk6Oo26ekPdrZgaEitsHUrdVV5xuE8NJ4rzrA__","height":0,"width":0},{"testAttemptIndex":2,"size":376481,"takenAt":"2023-09-14T03:53:39.342Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":209,"testId":"r0","screenshotId":"d8ToZpHHQVBWo_KCXwRNB","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/AfIBpt04Vo8w.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=QTTiGKS2KI57Pcs4rWc~uvXBPwPjIlz2fxbZeuEgHLGofeX6fclce-F57UXWL8JBEv~7TxKHxGITG5uF4glcj0UwPMH3YXOOrPwEo0blgUuetjVMo6LyrNHvuagXLsbwpWPyFpO6gIklQoX7EpkcSd6IyTgFmwcDm~ilEZ9Bvfs2cn3u35VYqVhqmCGmTZ3wEkqrj~KPzYbZevWibBJyVpFK9ZgweGXQEnNlHzSRfoBVLCzUvbXUa3ujLcomvF4MXM7yGoo3Wgy0~Jvzcvv36FDSimo2eXrcKEgrUtnvLdAe~O1fUQAQPa1vdoMJKSK9gSdZqeCu4Fndmvskc3F4RA__","height":0,"width":0},{"testAttemptIndex":0,"size":375772,"takenAt":"2023-09-14T03:53:43.887Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":229,"testId":"r2","screenshotId":"OFdIFK9wOabNUseOYZCif","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/HLMkTXqc0m2u.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=tVFRIzCL1lmtIoiE1NY6NCuOTb7xumxAd-VqyJTGb81zFLorZ1dvdzkYSjuT1FZajnhkwdX-cVeP5-7pqmuIulvDKIR4wFwUehWwvX1cSd6DCCUbzRJ~C6-kam3f19ktQeLmW19wD3HEyW1wYBTu3aEjOUs-dVDMoj-GnaiUKrM7MjLfsFWZT73SNT8YQd6lh86aOzKM7LcxitxtWgqS~pgsXrTSvr4pFhSUTO8Hf6QJAfCrmgB-cr9mwhYGrO2YxV2fB78GQ00LJ3EdPnOc-qZsfSzL5axjCI~QjroQNXRKcv~dK6K07Phv3YhkEn1N~GPkru~er6CTqXF6-DFOVQ__","height":0,"width":0}],"exception":null,"flaky":1}},{"groupId":"run-compat-test-2023-09-14T03:52:51.461Z","spec":"cypress/e2e/c.spec.js","instanceId":"uAHXfRd3z1Gk","claimedAt":"2023-09-14T03:52:55.425Z","completedAt":"2023-09-14T03:53:25.403Z","machineId":"Biln0UhchSnD","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/uAHXfRd3z1Gk_4kMgrxfVxu4v.mp4?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=TVu9lYrOSSfK~ya0RAcB25vTHvwG0AZcdWYYrnJVJxbJvoDXfIy1pT06rqK~dSUA1s5x8LMGqtLfbTNFuNkuyZetAV742sXKQ7iWG1SFNJXUWyOwZkr2rI-EzcWaMWaqpJj19do3BijUQ86HCNqdJJvPt5ukCROI8c115PfjazDlbhsVwygo2Y3GfU~IcWVsmeYlg3J7DwxvzTavHhbzQxGzn3hbJg63PTiJoSMXa516ikl1wAvIFbyapuzQXcioHArZ-phSthjSIWwxcR-AcnxIZjAOHW9ndYpIP8CEWr4RDwFtpLQXkyXNyM70kVdSyiR8IgzzDzAi17YgN2nIBQ__","stats":{"duration":58,"endedAt":"2023-09-14T03:53:23.768Z","startedAt":"2023-09-14T03:53:23.710Z","failures":0,"passes":0,"pending":1,"skipped":0,"suites":1,"tests":1,"wallClockDuration":58,"wallClockStartedAt":"2023-09-14T03:53:23.710Z","wallClockEndedAt":"2023-09-14T03:53:23.768Z"},"screenshots":[],"exception":null,"flaky":0}},{"groupId":"run-compat-test-2023-09-14T03:52:51.461Z","spec":"cypress/e2e/d.spec.js","instanceId":"gNlNTVGKE2pT","claimedAt":"2023-09-14T03:52:55.418Z","completedAt":"2023-09-14T03:53:22.880Z","machineId":"Biln0UhchSnD","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/gNlNTVGKE2pT_WBwvKhHNdHBM.mp4?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=GFZMO4pa-YgNi8WshvAI1KknQpi5-oP~7~MjSCDt2i4TSQ9rBjpbLiNMLh0Bmwg3KANx4QDbDjjy2Scteb6QU6HX-SOf3YBmWveb5pDfLZrWbA~qqxlP14lRQJD9GHJ6eVKxRrt1w3-EVc7HKV7JyhWQCMom2cRuOHOJqalM5xeW0x15GASTzztdMfBxM7l5Gi5yV66k8hmpZkQzvErjBhZdCkQTTSVL30DXMtsMB6zPh0bLfmhRdZ~i8uBv6q4iCDfM8szoOBeESLGomNQ7GOlaODjyHLFTPk9wWLLAZlUY1IA9qvvinKw1aSA1fA4KSzcPoGGckPoiq~sOg9pxKg__","stats":{"duration":1160,"endedAt":"2023-09-14T03:53:21.287Z","startedAt":"2023-09-14T03:53:20.127Z","failures":0,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":2,"wallClockDuration":1160,"wallClockStartedAt":"2023-09-14T03:53:20.127Z","wallClockEndedAt":"2023-09-14T03:53:21.287Z"},"screenshots":[{"testAttemptIndex":0,"size":234575,"takenAt":"2023-09-14T03:53:20.414Z","dimensions":{"width":2000,"height":1320},"multipart":true,"pixelRatio":2,"name":"internal-assert-screenshot","specName":"d.spec.js","scaled":false,"blackout":[],"duration":711,"testId":"r0","screenshotId":"-yeNPTnbUs8AJfbdDMFWQ","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/BLQniwl8oRqi.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=QNdF-ti79lKr6F6p~wicj4N3lvNzX4Oxz3X11vqiYC5SbjRq1Fo4nWrR1Ol3Ipy1wTn6ZJauUcKnIUWcPkYza3lbWIE3fdSWk7euP2SD2ZKkAumPrYg0MbxJ4cFrsZUE0-slIpHyqxlTWI7-jGAxBR39AkpX687xv1BYrs4xthsfEDdTYaosPB6NVJxindBjzrt4TCYH6scYY1fwdj6OiPwt9Y5KlPmbXJG1dxYI5kwLX6yRyn3lxemRiofOWfeJbbRXtRQiUqDWJqmubW1kVTdLRv5GxbkIYo-L994OeRWOAHKlTIP19zo92obFtG-FzWjzT-NlEw5ikDQzNoR00Q__","height":0,"width":0}],"exception":null,"flaky":0}},{"groupId":"run-compat-test-2023-09-14T03:52:51.461Z","spec":"cypress/e2e/e.spec.js","instanceId":"KDnMpYjhOJyK","claimedAt":"2023-09-14T03:52:55.411Z","completedAt":"2023-09-14T03:53:19.377Z","machineId":"Biln0UhchSnD","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/KDnMpYjhOJyK_c7TwdVCAqFJz.mp4?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=SOhUzp0gO0dFgxifkc-RnLKEE9QrVtWfzk4GhHqn7Elpbi1m5DUW4tBy-9L4wcpxO2osVY3iFkmhSF4twVGAz~UDEURgS2RVd44~xALiVeD~cgAVQVS-SpYiiOpLDgM9gx4JbW09vIleIom1FXyuDoKyxlzY8fgcTjomB1M0bXJ~vHpQHmiMylsOJj2Urf0p~sB2ZJFe4UT4xWo-qWR5oskaxHMmVg6CIQPokC7Bk10XcH4y6HlbvuPDVARxHUtrAh2G~VlBYOUsB5jqu~3x0QSTlPsN2lVzLMCrYYs-cEP3QNZp4Swa2Wi3e40OFytDb9pwO4NuclQb9-dMd3eJYw__","stats":{"duration":519,"endedAt":"2023-09-14T03:53:17.725Z","startedAt":"2023-09-14T03:53:17.206Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1,"wallClockDuration":519,"wallClockStartedAt":"2023-09-14T03:53:17.206Z","wallClockEndedAt":"2023-09-14T03:53:17.725Z"},"screenshots":[{"testAttemptIndex":0,"size":333410,"takenAt":"2023-09-14T03:53:17.434Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"e.spec.js","testFailure":true,"scaled":true,"blackout":[],"duration":230,"testId":"r0","screenshotId":"CYX9w7TAZo3ZNVoB38DOW","name":"screenshot","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/U4yeDt6b7L57.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=O0k8YxZiqZYpdjoAa-kIQgcPuoPkfz4tDbkhqxsh8ZKMGK-SH8bO7DOP0Tpfh5fZx4oNqvlyIYG2GYm~kHEy9gKP8PzFc6rryAgk8pSgXM5N7zkwp87amMMFQu54d6EF6NopYYPBmFvxh0emNRF~wxCnlqB-UHPSjmfa3toj52JYZtRIl8Yg0BjwEpVJARg4iD7tVy7oAO~dvZ9UJQTqyIrx9Kp2szAQSH38PxtJJNuEY~-OLH5ylWxBMRpS9qiCVda5NsgHUHDCDXrU4Yzz8gto1PNDwmuSKcFDDiIGEOa~jG69iwH7IN-JVJF1oBEJJ~r7I2ofgBwWrK5KZGi2WA__","height":0,"width":0}],"exception":null,"flaky":0}}],"completionState":"COMPLETE","status":"FAILED"}} \ No newline at end of file diff --git a/e2e/cypress-13-demo/data-references/ccy-1.10-cy-13-cycl.json b/e2e/cypress-13-demo/data-references/ccy-1.10-cy-13-cycl.json new file mode 100644 index 0000000..a9b60bf --- /dev/null +++ b/e2e/cypress-13-demo/data-references/ccy-1.10-cy-13-cycl.json @@ -0,0 +1 @@ +{"totalDuration":34431,"totalSuites":5,"totalPending":1,"totalFailed":3,"totalSkipped":0,"totalPassed":4,"totalTests":8,"runs":[{"stats":{"duration":14346,"endedAt":"2023-09-14T03:53:14.889Z","startedAt":"2023-09-14T03:53:00.543Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":0,"failures":1,"start":"2023-09-14T03:53:00.548Z","end":"2023-09-14T03:53:14.896Z","duration":14348},"spec":{"absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","fileExtension":".js","fileName":"a","name":"cypress/e2e/a.spec.js","relative":"cypress/e2e/a.spec.js","baseName":"a.spec.js","specFileExtension":".spec.js","relativeToCommonRoot":"a.spec.js","specType":"integration"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/a.spec.js.mp4","shouldUploadVideo":true,"hooks":[],"tests":[{"attempts":[{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","codeFrame":{"line":5,"column":20,"originalFile":"cypress/e2e/a.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/a.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","frame":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","language":"js"}},"timings":{"lifecycle":21,"before each":[{"hookId":"h1","fnDuration":20,"afterFnDuration":0},{"hookId":"h2","fnDuration":444,"afterFnDuration":0}],"test":{"fnDuration":4010,"afterFnDuration":290},"after each":[{"hookId":"h4","fnDuration":34,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(false).should('be.true');\n }","wallClockStartedAt":"2023-09-14T03:53:00.548Z","wallClockDuration":4787,"videoTimestamp":5,"startedAt":"2023-09-14T03:53:00.548Z","duration":4787,"screenshots":[{"testAttemptIndex":0,"size":347345,"takenAt":"2023-09-14T03:53:05.049Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed).png","scaled":true,"blackout":[],"duration":284,"testId":"r3","height":1440,"width":2560,"screenshotId":"8IA1zC","name":"screenshot"}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","codeFrame":{"line":5,"column":20,"originalFile":"cypress/e2e/a.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/a.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","frame":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","language":"js"}},"timings":{"lifecycle":29,"before each":[{"hookId":"h1","fnDuration":10,"afterFnDuration":0},{"hookId":"h2","fnDuration":668,"afterFnDuration":0}],"test":{"fnDuration":3993,"afterFnDuration":215},"after each":[{"hookId":"h4","fnDuration":18,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(false).should('be.true');\n }","wallClockStartedAt":"2023-09-14T03:53:05.420Z","wallClockDuration":4918,"videoTimestamp":4877,"startedAt":"2023-09-14T03:53:05.420Z","duration":4918,"screenshots":[{"testAttemptIndex":1,"size":363028,"takenAt":"2023-09-14T03:53:10.125Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 2).png","scaled":true,"blackout":[],"duration":209,"testId":"r3","height":1440,"width":2560,"screenshotId":"5SKdny","name":"screenshot"}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","codeFrame":{"line":5,"column":20,"originalFile":"cypress/e2e/a.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/a.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","frame":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","language":"js"}},"timings":{"lifecycle":39,"before each":[{"hookId":"h1","fnDuration":11,"afterFnDuration":0},{"hookId":"h2","fnDuration":108,"afterFnDuration":0}],"test":{"fnDuration":4001,"afterFnDuration":245},"after each":[{"hookId":"h4","fnDuration":16,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(false).should('be.true');\n }","wallClockStartedAt":"2023-09-14T03:53:10.411Z","wallClockDuration":4405,"videoTimestamp":9868,"startedAt":"2023-09-14T03:53:10.411Z","duration":4405,"screenshots":[{"testAttemptIndex":2,"size":362832,"takenAt":"2023-09-14T03:53:14.573Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"a.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 3).png","scaled":true,"blackout":[],"duration":237,"testId":"r3","height":1440,"width":2560,"screenshotId":"yjWhIO","name":"screenshot"}]}],"displayError":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","duration":14283,"state":"failed","title":["Failing test with 2 attempts","should try 2 times"],"testId":"r3","body":"() => {\n cy.wrap(false).should('be.true');\n }"}]},{"stats":{"duration":519,"endedAt":"2023-09-14T03:53:17.725Z","startedAt":"2023-09-14T03:53:17.206Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":0,"failures":1,"start":"2023-09-14T03:53:17.211Z","end":"2023-09-14T03:53:17.730Z","duration":519},"spec":{"absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/e.spec.js","fileExtension":".js","fileName":"e","name":"cypress/e2e/e.spec.js","relative":"cypress/e2e/e.spec.js","baseName":"e.spec.js","specFileExtension":".spec.js","relativeToCommonRoot":"e.spec.js","specType":"integration"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/e.spec.js.mp4","shouldUploadVideo":true,"hooks":[],"tests":[{"attempts":[{"state":"failed","error":{"name":"Error","message":"test error","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/e.spec.js:3:10)","codeFrame":{"line":3,"column":11,"originalFile":"cypress/e2e/e.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/e.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/e.spec.js","frame":" 1 | describe('Should throw an error', () => {\n 2 | it('Should throw an error', () => {\n> 3 | throw new Error(\"test error\")\n | ^\n 4 | });\n 5 | });\n 6 | ","language":"js"}},"timings":{"lifecycle":37,"before each":[{"hookId":"h1","fnDuration":11,"afterFnDuration":1},{"hookId":"h2","fnDuration":166,"afterFnDuration":0}],"test":{"fnDuration":2,"afterFnDuration":235},"after each":[{"hookId":"h4","fnDuration":15,"afterFnDuration":0}]},"body":"() => {\n throw new Error(\"test error\");\n }","wallClockStartedAt":"2023-09-14T03:53:17.211Z","wallClockDuration":456,"videoTimestamp":5,"startedAt":"2023-09-14T03:53:17.211Z","duration":456,"screenshots":[{"testAttemptIndex":0,"size":333410,"takenAt":"2023-09-14T03:53:17.434Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"e.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/e.spec.js/Should throw an error -- Should throw an error (failed).png","scaled":true,"blackout":[],"duration":230,"testId":"r3","height":1440,"width":2560,"screenshotId":"RIhLyb","name":"screenshot"}]}],"displayError":"Error: test error\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/e.spec.js:3:10)","duration":497,"state":"failed","title":["Should throw an error","Should throw an error"],"testId":"r3","body":"() => {\n throw new Error(\"test error\");\n }"}]},{"stats":{"duration":1160,"endedAt":"2023-09-14T03:53:21.287Z","startedAt":"2023-09-14T03:53:20.127Z","failures":0,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":2},"reporter":"spec","reporterStats":{"suites":1,"tests":2,"passes":2,"pending":0,"failures":0,"start":"2023-09-14T03:53:20.132Z","end":"2023-09-14T03:53:21.291Z","duration":1159},"spec":{"absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/d.spec.js","fileExtension":".js","fileName":"d","name":"cypress/e2e/d.spec.js","relative":"cypress/e2e/d.spec.js","baseName":"d.spec.js","specFileExtension":".spec.js","relativeToCommonRoot":"d.spec.js","specType":"integration"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/d.spec.js.mp4","shouldUploadVideo":true,"hooks":[],"tests":[{"attempts":[{"state":"passed","error":null,"timings":{"lifecycle":19,"before each":[{"hookId":"h1","fnDuration":12,"afterFnDuration":1},{"hookId":"h2","fnDuration":212,"afterFnDuration":0}],"test":{"fnDuration":720,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":15,"afterFnDuration":0}]},"body":"() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }","wallClockStartedAt":"2023-09-14T03:53:20.150Z","wallClockDuration":968,"videoTimestamp":23,"startedAt":"2023-09-14T03:53:20.150Z","duration":968,"screenshots":[{"testAttemptIndex":0,"size":234575,"takenAt":"2023-09-14T03:53:20.414Z","dimensions":{"width":2000,"height":1320},"multipart":true,"pixelRatio":2,"name":"internal-assert-screenshot","specName":"d.spec.js","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/d.spec.js/internal-assert-screenshot.png","scaled":false,"blackout":[],"duration":711,"testId":"r3","height":1320,"width":2000,"screenshotId":"mPoBQh"}]}],"displayError":null,"duration":1008,"state":"passed","title":["Passed test with screenshot, passed test with no screenshots","should assert and take a screenshot"],"testId":"r3","body":"() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }"},{"attempts":[{"state":"passed","error":null,"timings":{"lifecycle":13,"before each":[{"hookId":"h1","fnDuration":9,"afterFnDuration":0},{"hookId":"h2","fnDuration":54,"afterFnDuration":0}],"test":{"fnDuration":2,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(true).should('be.true');\n }","wallClockStartedAt":"2023-09-14T03:53:21.166Z","wallClockDuration":81,"videoTimestamp":1039,"startedAt":"2023-09-14T03:53:21.166Z","duration":81,"screenshots":[]}],"displayError":null,"duration":120,"state":"passed","title":["Passed test with screenshot, passed test with no screenshots","should assert that true is true"],"testId":"r4","body":"() => {\n cy.wrap(true).should('be.true');\n }"}]},{"stats":{"duration":58,"endedAt":"2023-09-14T03:53:23.768Z","startedAt":"2023-09-14T03:53:23.710Z","failures":0,"passes":0,"pending":1,"skipped":0,"suites":1,"tests":1},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":1,"failures":0,"start":"2023-09-14T03:53:23.714Z","end":"2023-09-14T03:53:23.771Z","duration":57},"spec":{"absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/c.spec.js","fileExtension":".js","fileName":"c","name":"cypress/e2e/c.spec.js","relative":"cypress/e2e/c.spec.js","baseName":"c.spec.js","specFileExtension":".spec.js","relativeToCommonRoot":"c.spec.js","specType":"integration"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/c.spec.js.mp4","shouldUploadVideo":true,"hooks":[],"tests":[{"attempts":[],"displayError":null,"duration":33,"state":"pending","title":["Ignored test","should be a skipped test"],"testId":"r0"}]},{"stats":{"duration":18348,"endedAt":"2023-09-14T03:53:44.443Z","startedAt":"2023-09-14T03:53:26.095Z","failures":1,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":3},"reporter":"spec","reporterStats":{"suites":1,"tests":3,"passes":2,"pending":0,"failures":1,"start":"2023-09-14T03:53:26.099Z","end":"2023-09-14T03:53:44.445Z","duration":18346},"spec":{"absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","fileExtension":".js","fileName":"b","name":"cypress/e2e/b.spec.js","relative":"cypress/e2e/b.spec.js","baseName":"b.spec.js","specFileExtension":".spec.js","relativeToCommonRoot":"b.spec.js","specType":"integration"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/b.spec.js.mp4","shouldUploadVideo":true,"hooks":[],"tests":[{"attempts":[{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","codeFrame":{"line":6,"column":20,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","frame":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","language":"js"}},"timings":{"lifecycle":13,"before each":[{"hookId":"h1","fnDuration":16,"afterFnDuration":0},{"hookId":"h2","fnDuration":294,"afterFnDuration":0}],"test":{"fnDuration":4017,"afterFnDuration":245},"after each":[{"hookId":"h4","fnDuration":52,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(false).should('be.true');\n }","wallClockStartedAt":"2023-09-14T03:53:26.117Z","wallClockDuration":4587,"videoTimestamp":22,"startedAt":"2023-09-14T03:53:26.117Z","duration":4587,"screenshots":[{"testAttemptIndex":0,"size":373963,"takenAt":"2023-09-14T03:53:30.465Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed).png","scaled":true,"blackout":[],"duration":241,"testId":"r3","height":1440,"width":2560,"screenshotId":"6qyJ4w","name":"screenshot"}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","codeFrame":{"line":6,"column":20,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","frame":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","language":"js"}},"timings":{"lifecycle":22,"before each":[{"hookId":"h1","fnDuration":16,"afterFnDuration":0},{"hookId":"h2","fnDuration":58,"afterFnDuration":0}],"test":{"fnDuration":3995,"afterFnDuration":228},"after each":[{"hookId":"h4","fnDuration":19,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(false).should('be.true');\n }","wallClockStartedAt":"2023-09-14T03:53:30.833Z","wallClockDuration":4324,"videoTimestamp":4738,"startedAt":"2023-09-14T03:53:30.833Z","duration":4324,"screenshots":[{"testAttemptIndex":1,"size":375260,"takenAt":"2023-09-14T03:53:34.931Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 2).png","scaled":true,"blackout":[],"duration":223,"testId":"r3","height":1440,"width":2560,"screenshotId":"vruaV4","name":"screenshot"}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","codeFrame":{"line":6,"column":20,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","frame":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","language":"js"}},"timings":{"lifecycle":32,"before each":[{"hookId":"h1","fnDuration":12,"afterFnDuration":0},{"hookId":"h2","fnDuration":61,"afterFnDuration":0}],"test":{"fnDuration":4002,"afterFnDuration":218},"after each":[{"hookId":"h4","fnDuration":18,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(false).should('be.true');\n }","wallClockStartedAt":"2023-09-14T03:53:35.229Z","wallClockDuration":4329,"videoTimestamp":9134,"startedAt":"2023-09-14T03:53:35.229Z","duration":4329,"screenshots":[{"testAttemptIndex":2,"size":376481,"takenAt":"2023-09-14T03:53:39.342Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 3).png","scaled":true,"blackout":[],"duration":209,"testId":"r3","height":1440,"width":2560,"screenshotId":"lqDKEA","name":"screenshot"}]}],"displayError":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","duration":13494,"state":"failed","title":["Failing test with 2 attempts, passed test and flaky test with 2 attempts","should try 2 times"],"testId":"r3","body":"() => {\n cy.wrap(false).should('be.true');\n }"},{"attempts":[{"state":"passed","error":null,"timings":{"lifecycle":13,"before each":[{"hookId":"h1","fnDuration":15,"afterFnDuration":0},{"hookId":"h2","fnDuration":54,"afterFnDuration":0}],"test":{"fnDuration":3,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":18,"afterFnDuration":0}]},"body":"() => {\n cy.wrap(true).should('be.true');\n }","wallClockStartedAt":"2023-09-14T03:53:39.673Z","wallClockDuration":87,"videoTimestamp":13578,"startedAt":"2023-09-14T03:53:39.673Z","duration":87,"screenshots":[]}],"displayError":null,"duration":128,"state":"passed","title":["Failing test with 2 attempts, passed test and flaky test with 2 attempts","should assert that true is true"],"testId":"r4","body":"() => {\n cy.wrap(true).should('be.true');\n }"},{"attempts":[{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:16:21)","codeFrame":{"line":16,"column":22,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","frame":" 14 | if (attempt === 0) {\n 15 | attempt++;\n> 16 | cy.wrap(false).should('be.true'); // This will fail on the first attempt\n | ^\n 17 | } else {\n 18 | cy.wrap(true).should('be.true'); // This will pass on the second attempt\n 19 | }","language":"js"}},"timings":{"lifecycle":20,"before each":[{"hookId":"h1","fnDuration":8,"afterFnDuration":0},{"hookId":"h2","fnDuration":58,"afterFnDuration":0}],"test":{"fnDuration":3991,"afterFnDuration":261},"after each":[{"hookId":"h4","fnDuration":40,"afterFnDuration":0}]},"body":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","wallClockStartedAt":"2023-09-14T03:53:39.803Z","wallClockDuration":4343,"videoTimestamp":13708,"startedAt":"2023-09-14T03:53:39.803Z","duration":4343,"screenshots":[{"testAttemptIndex":0,"size":375772,"takenAt":"2023-09-14T03:53:43.887Z","dimensions":{"width":2560,"height":1440},"multipart":false,"specName":"b.spec.js","testFailure":true,"path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should fail on the first attempt and pass on the second (failed).png","scaled":true,"blackout":[],"duration":229,"testId":"r5","height":1440,"width":2560,"screenshotId":"Jy98Nh","name":"screenshot"}]},{"state":"passed","error":null,"timings":{"lifecycle":26,"before each":[{"hookId":"h1","fnDuration":13,"afterFnDuration":0},{"hookId":"h2","fnDuration":107,"afterFnDuration":0}],"test":{"fnDuration":3,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0}]},"body":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","wallClockStartedAt":"2023-09-14T03:53:44.240Z","wallClockDuration":150,"videoTimestamp":18145,"startedAt":"2023-09-14T03:53:44.240Z","duration":150,"screenshots":[]}],"displayError":null,"duration":4629,"state":"passed","title":["Failing test with 2 attempts, passed test and flaky test with 2 attempts","should fail on the first attempt and pass on the second"],"testId":"r5","body":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }"}]}],"startedTestsAt":"2023-09-14T03:53:00.543Z","endedTestsAt":"2023-09-14T03:53:44.443Z","config":{"additionalIgnorePattern":[],"animationDistanceThreshold":5,"arch":"arm64","autoOpen":false,"baseUrl":"https://todomvc.com/examples/vanillajs","blockHosts":null,"browsers":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"116.0.5845.187","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"116"},{"name":"edge","family":"chromium","channel":"stable","displayName":"Edge","version":"116.0.1938.81","path":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","minSupportedVersion":79,"majorVersion":"116"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"106.0.5249.51","path":"","majorVersion":106}],"chromeWebSecurity":true,"clientCertificates":[],"clientRoute":"/__/","configFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress.config.ts","cypressBinaryRoot":"/Users/miguelangarano/Library/Caches/Cypress/13.1.0/Cypress.app/Contents/Resources/app","cypressEnv":"production","defaultCommandTimeout":4000,"devServerPublicPathRoute":"/__cypress/src","downloadsFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/downloads","env":{"currents_temp_file":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-68028-roSNIstP0PNr","currents_debug_enabled":false},"excludeSpecPattern":"*.hot-update.js","execTimeout":60000,"experimentalCspAllowList":false,"experimentalFetchPolyfill":false,"experimentalInteractiveRunEvents":false,"experimentalMemoryManagement":false,"experimentalModifyObstructiveThirdPartyCode":false,"experimentalOriginDependencies":false,"experimentalRunAllSpecs":false,"experimentalSingleTabRunMode":false,"experimentalSkipDomainInjection":null,"experimentalSourceRewriting":false,"experimentalStudio":false,"experimentalWebKitSupport":false,"fileServerFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo","fixturesFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/fixtures","hideCommandLog":false,"hideRunnerUi":false,"hosts":null,"includeShadowDom":false,"isInteractive":true,"isTextTerminal":true,"keystrokeDelay":0,"modifyObstructiveCode":true,"morgan":false,"namespace":"__cypress","numTestsKeptInMemory":0,"pageLoadTimeout":60000,"platform":"darwin","port":null,"projectId":null,"projectName":"cypress-13-demo","projectRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo","protocolEnabled":false,"rawJson":{"video":true,"e2e":{"baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/*/**/*.spec.js","setupNodeEvents":"[Function setupNodeEvents]"},"component":{"specPattern":["pages/__tests__/*.spec.tsx"],"setupNodeEvents":"[Function setupNodeEvents]","devServer":{"framework":"next","bundler":"webpack"}},"baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/*/**/*.spec.js","setupNodeEvents":"[Function setupNodeEvents]","envFile":{},"projectRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo","projectName":"cypress-13-demo","repoRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13"},"redirectionLimit":20,"repoRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","report":true,"reporter":"spec","reporterOptions":null,"reporterRoute":"/__cypress/reporter","requestTimeout":5000,"resolved":{"animationDistanceThreshold":{"value":5,"from":"default"},"arch":{"value":"arm64","from":"default"},"baseUrl":{"value":"https://todomvc.com/examples/vanillajs","from":"config"},"blockHosts":{"value":null,"from":"default"},"chromeWebSecurity":{"value":true,"from":"default"},"clientCertificates":{"value":[],"from":"default"},"defaultCommandTimeout":{"value":4000,"from":"default"},"downloadsFolder":{"value":"cypress/downloads","from":"default"},"env":{"currents_temp_file":{"value":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-68028-roSNIstP0PNr","from":"cli"},"currents_debug_enabled":{"value":false,"from":"cli"}},"execTimeout":{"value":60000,"from":"default"},"experimentalCspAllowList":{"value":false,"from":"default"},"experimentalFetchPolyfill":{"value":false,"from":"default"},"experimentalInteractiveRunEvents":{"value":false,"from":"default"},"experimentalRunAllSpecs":{"value":false,"from":"default"},"experimentalMemoryManagement":{"value":false,"from":"default"},"experimentalModifyObstructiveThirdPartyCode":{"value":false,"from":"default"},"experimentalSkipDomainInjection":{"value":null,"from":"default"},"experimentalOriginDependencies":{"value":false,"from":"default"},"experimentalSourceRewriting":{"value":false,"from":"default"},"experimentalSingleTabRunMode":{"value":false,"from":"default"},"experimentalStudio":{"value":false,"from":"default"},"experimentalWebKitSupport":{"value":false,"from":"default"},"fileServerFolder":{"value":"","from":"default"},"fixturesFolder":{"value":"cypress/fixtures","from":"default"},"excludeSpecPattern":{"value":"*.hot-update.js","from":"default"},"includeShadowDom":{"value":false,"from":"default"},"keystrokeDelay":{"value":0,"from":"default"},"modifyObstructiveCode":{"value":true,"from":"default"},"numTestsKeptInMemory":{"value":0,"from":"config"},"platform":{"value":"darwin","from":"default"},"pageLoadTimeout":{"value":60000,"from":"default"},"port":{"value":null,"from":"default"},"projectId":{"value":null,"from":"default"},"redirectionLimit":{"value":20,"from":"default"},"reporter":{"value":"spec","from":"default"},"reporterOptions":{"value":null,"from":"default"},"requestTimeout":{"value":5000,"from":"default"},"resolvedNodePath":{"value":null,"from":"default"},"resolvedNodeVersion":{"value":null,"from":"default"},"responseTimeout":{"value":30000,"from":"default"},"retries":{"value":{"runMode":0,"openMode":0},"from":"default"},"screenshotOnRunFailure":{"value":true,"from":"default"},"screenshotsFolder":{"value":"cypress/screenshots","from":"default"},"slowTestThreshold":{"value":10000,"from":"default"},"scrollBehavior":{"value":"top","from":"default"},"supportFile":{"value":"cypress/support/e2e.ts","from":"config"},"supportFolder":{"value":false,"from":"default"},"taskTimeout":{"value":60000,"from":"default"},"testIsolation":{"value":true,"from":"default"},"trashAssetsBeforeRuns":{"value":true,"from":"default"},"userAgent":{"value":null,"from":"default"},"video":{"value":true,"from":"config"},"videoCompression":{"value":false,"from":"default"},"videosFolder":{"value":"cypress/videos","from":"default"},"viewportHeight":{"value":660,"from":"default"},"viewportWidth":{"value":1000,"from":"default"},"waitForAnimations":{"value":true,"from":"default"},"watchForFileChanges":{"value":false,"from":"config"},"specPattern":{"value":"cypress/*/**/*.spec.js","from":"config"},"browsers":{"value":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"116.0.5845.187","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"116"},{"name":"edge","family":"chromium","channel":"stable","displayName":"Edge","version":"116.0.1938.81","path":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","minSupportedVersion":79,"majorVersion":"116"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"106.0.5249.51","path":"","majorVersion":106}],"from":"runtime"},"hosts":{"value":null,"from":"default"},"isInteractive":{"value":true,"from":"default"}},"resolvedNodePath":"/Users/miguelangarano/.nvm/versions/node/v18.14.2/bin/node","resolvedNodeVersion":"18.14.2","responseTimeout":30000,"retries":{"runMode":0,"openMode":0},"screenshotOnRunFailure":true,"screenshotsFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots","scrollBehavior":"top","setupNodeEvents":"[Function setupNodeEvents]","slowTestThreshold":10000,"socketId":"98vacvcliu","socketIoCookie":"__socket","socketIoRoute":"/__socket","specPattern":"cypress/*/**/*.spec.js","supportFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/support/e2e.ts","supportFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/support","taskTimeout":60000,"testIsolation":true,"trashAssetsBeforeRuns":true,"userAgent":null,"version":"13.1.0","video":true,"videoCompression":false,"videosFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos","viewportHeight":660,"viewportWidth":1000,"waitForAnimations":true,"watchForFileChanges":false,"testingType":"e2e","videoUploadOnPasses":true},"status":"finished","runUrl":"https://app.currents.dev/run/ff965046ffbf2977"} \ No newline at end of file diff --git a/e2e/cypress-13-demo/data-references/ccy-1.9.4-cy-12-crapi.json b/e2e/cypress-13-demo/data-references/ccy-1.9.4-cy-12-crapi.json new file mode 100644 index 0000000..9ddd666 --- /dev/null +++ b/e2e/cypress-13-demo/data-references/ccy-1.9.4-cy-12-crapi.json @@ -0,0 +1 @@ +{"status":"OK","data":{"runId":"7dc0426fc25d30fe","projectId":"2cI1I5","createdAt":"2023-09-14T03:08:10.182Z","tags":[],"cypressVersion":"12.17.4","cancellation":null,"timeout":{"isTimeout":false},"groups":[{"groupId":"run-compat-test-2023-09-14T03:08:06.912Z","platform":{"osName":"darwin","osVersion":"22.5.0","browserName":"Electron","browserVersion":"106.0.5249.51"},"createdAt":"2023-09-14T03:08:10.182Z","instances":{"overall":5,"claimed":5,"complete":5,"passes":2,"failures":3},"tests":{"overall":8,"passes":4,"failures":3,"pending":1,"skipped":0,"retries":1,"flaky":1}}],"meta":{"ciBuildId":"run-compat-test-2023-09-14T03:08:06.912Z","commit":{"branch":"fix/cypress-13-validation","remoteOrigin":null,"authorEmail":"miguelangarano@gmail.com","authorName":"Miguel Langarano","message":"fixes to cypress cloud and tests\n","sha":"47940f2c307da402fbad71aacddff959be45ef32"},"platform":{"osName":"darwin","osVersion":"22.5.0","browserName":"Electron","browserVersion":"106.0.5249.51"}},"specs":[{"groupId":"run-compat-test-2023-09-14T03:08:06.912Z","spec":"cypress/e2e/a.spec.js","instanceId":"z7j802NHTjwc","claimedAt":"2023-09-14T03:08:10.557Z","completedAt":"2023-09-14T03:08:30.994Z","machineId":"wxZyenuJ37lK","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/z7j802NHTjwc_6fo5obvZCLP4.mp4?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=mfomHSzuemmZJE~VDR~KhO~h-rCAcNG2rksWBGvKmyyafX7N7-j2adon-bhB9qjC9GDNW6aFlRw9krKo6nAitVE6ofOVKz8u306EluMrAbxfZ5x3ca6wxAOix46c8o1iVb3f27S6mqglA5hm-BATyJ3kN51iGU8KaoPtdSjpSzQuGmIxRQuSjc5JobpyvIFR3~rFYRuby5Me1tPh7wwBiVpXKT~queLQmXL46POdhzV~obZa9rW9iJf2AKWhiHh-oriJvrgZsjspQnGMdAmhiJzMZzLeaa3xqEbgnx05Z4ySrsax9S6i3q2voTXu1ydkL4H1odF4VpfInwO1Wnr5rg__","stats":{"duration":13634,"endedAt":"2023-09-14T03:08:29.332Z","startedAt":"2023-09-14T03:08:15.698Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1,"wallClockDuration":13634,"wallClockStartedAt":"2023-09-14T03:08:15.698Z","wallClockEndedAt":"2023-09-14T03:08:29.332Z"},"screenshots":[{"screenshotId":"cDx-L_FmVpnaMWdEx2had","name":"screenshot","testId":"r0","testAttemptIndex":0,"takenAt":"2023-09-14T03:08:20.212Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/SGZMH3JBUjws.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=nJHMP3CQyn-OE37ered0xtm6OhH9hOrVCRTmz~qHrlW6lO1FMB19QW2O75os1BsWKwxwjY0sq8BTr3-8Rudw2kkkc7QHF3XnHivYdtN9hzDqy8eVwOXpfTQ5uNFErB4eUakCe06W058wNvUHQNNJMP5uhdVt3S0Oy~GnZkNH5dRl~4nDSAxZrPgcdSyjN8SdMsB6K19xYvG2dzPMynpLmV7wXPy4zpX9TUCLE7Qtt1USjBi4lrerZNdy7WfJxh29QJ8ZPaGjPlKxVdaF5IeB5EtQ6mfp3pK3MXuU9yC8Tk396a0ZRWSzR14fskkl7AMbh8PgDkz8pxh69xiHxgiFrA__","height":0,"width":0},{"screenshotId":"PZQ2i_jN5Xl8PpStzK7-J","name":"screenshot","testId":"r0","testAttemptIndex":1,"takenAt":"2023-09-14T03:08:24.667Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/P5bpu7aSXswh.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=peP0Ac7nOIuORyJac-azv9VrsyIuLQdWduofBDaUJdqEoH6KoLHuKdB8PBVq8e7Mv4oxFmk1nGFq-s4-TBL75cEls42EZFBw8kQO4Gcf2e-uCFyB60Uy-~1aVryIBoeIFRYLYoxesHIAXg6BCEFOSPWUpNGYrPY6yaMYTdWQQzrygNvsyHRd-PvHlYsFp-PbbY9DgAnGe4sBYn4iWt5xMFJPDlrlXSDa6LHJom3UDw5CNjCGAdgXBp9G6ltEHd0YLWKljJbhbkkotU0HckLRGyF1kSw5jGszQ2czBXmuNbUlBO5BNh5jrr7Y2EECnwizYOW~hCeEIqkSndAZSQ6mfA__","height":0,"width":0},{"screenshotId":"wXJS6Ile88HN9OEE0hEKu","name":"screenshot","testId":"r0","testAttemptIndex":2,"takenAt":"2023-09-14T03:08:29.064Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/x2gVh7g8vt5v.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=llUX-gN3ELjzCJ1kFyWSKfLorgmfUnP3f9G~XPOiG~CRx~PA-~TgyzLHDtzGnnzKFUkNgE5-QnAXnfa7pv5NVqWtkGgDs3E9C3RoMu1FGIfzL38AKgtCCk4wdhD259N1ErF9WacCPrYenQNVR1LKajK8E0-7nm-62My62sTxm8WUPNpoQA9DtOvHcQGZi5Zu2nD4KeyKE7NSBJ1L-e748NYo4KDaeG~EzuW62JO9qOEzfKma9zS0Eanq0~4-Nz0W6lg4U41pzFn19CYbvS6Sw4NryFyiqjOLJYWLtX~L301DQumfcPpQlbsp19ve4AOAfxcDgpMfDR3NZtkwJAknBw__","height":0,"width":0}],"exception":null,"flaky":0}},{"groupId":"run-compat-test-2023-09-14T03:08:06.912Z","spec":"cypress/e2e/b.spec.js","instanceId":"Eg2rmIdn70Ts","claimedAt":"2023-09-14T03:08:10.587Z","completedAt":"2023-09-14T03:09:04.492Z","machineId":"wxZyenuJ37lK","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/Eg2rmIdn70Ts_PcsPXAa3iwUd.mp4?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=HJbeqdzm11n6RJ0GNKE8q~EQksTZkHYPC06gjROgkhX9L2Yo~uIooqdrHPtApSUfjwnmk9kn4CRn0Qv0L29vLVT1sL4GOTjOp5wMSZt1BcG7Lx7lFDn4Ytvgm6HdWF5iswykL18GpIeuKnQub7KC~LyNWMUku8qMsoXkzl2DtYRTQQZK4qtWPbEC9jl~DR4ePfo8a9ckhDTqYT0cgy~asCUc3kJFH8kxbPFmr-1dT-EAMktTxTeROF8Y98uhnnyirREuhyBNdKts67SASNfOsHvtRz~qbD07HrESZoq8HUhykLZ~NFe2gJy0xJBMFB3Jae2lT3skhxtVDEJOqdUtqA__","stats":{"duration":18120,"endedAt":"2023-09-14T03:09:02.909Z","startedAt":"2023-09-14T03:08:44.789Z","failures":1,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":3,"wallClockDuration":18120,"wallClockStartedAt":"2023-09-14T03:08:44.789Z","wallClockEndedAt":"2023-09-14T03:09:02.909Z"},"screenshots":[{"screenshotId":"7BuMQAy7Mz50jFTLTi9yy","name":"screenshot","testId":"r0","testAttemptIndex":0,"takenAt":"2023-09-14T03:08:48.985Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/zH49ep4qJlp3.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=bg41NId0Qvr5GbN6nh5GBLsM5odVN6X9X7QwA1nRV2HId0N-UUCrmp9kxbGNhs7jtNqBx6q2vRsDBAw9NNGLFgneAgR5lje7Ri6GcK2lPjC05yhpMa~n7DsQoOtQP-j2755Qn-hU6cpw-3jROvhiJprJCHf4Gafcn3EVsS7cZpy-NtmXddcqjd98iiSmuqaRX5dlX6jZlqn6YrR6N3av78yvmHy6j1umkQIrUVoZfIpk~qIYwhd~j9BoxHOpFHw0JDDEvJEbBBMI2TkqpyAE8oKnpreHV2fI5EinSZ3-T~x4VpGhLt7ZsPRzuJBf5lHkxf29NxevkHKq2Qd4-R5tpg__","height":0,"width":0},{"screenshotId":"XeuAuSXfpo5vJtLTmevQG","name":"screenshot","testId":"r0","testAttemptIndex":1,"takenAt":"2023-09-14T03:08:53.437Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/jRccXON9Jrnx.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=qtcPYdwr7kkoWsKv93dBe-2NMm3mN7fJRnJnjHcuDlaIuDsW6Lpa3q5DJ4jI2CHQU~oWSStBKcBDY8U80Zm-aYlRTrHuPAjW2yJiMqo6SdGezTnJbtnsfHULzgDmJlFbVsQMuX7SyA3X9CY4KECpCkx3QHTDhtuHJVm86l2xQ2W2D8mBJ4HFpfJ9~y732IwmxGg2gnb3U0I1RNCNyVB~kDnyiL~wDeUJNyGIkYRYvIgxtXTDXqILghYffasp51TWOymnJcN3Fobmy3mlsKGbCzooqCYgOC~j8Wm87m72pVSF-NFJOESojKPqHcXz9-7zRkJXiEggGFzFGl-F08cNFg__","height":0,"width":0},{"screenshotId":"kBb1BiR3uYRD8hNRGMLVk","name":"screenshot","testId":"r0","testAttemptIndex":2,"takenAt":"2023-09-14T03:08:57.842Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/aFOWLL0ADGhi.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=ru3PsE~uCSyJf2pBejMjGMhBNNMgqw11NtdHLNXSipBXk62-Fb4OdJNhdCKamkaysrg9D8lhUwW-tmZzO59Ps67~s27J5gkAiGowHee2FlZe0dH6bwPaZ4JU2dh-R1OFx4zbMVSG7h4tRHwm2NPR35SQ9wPd~8jgKVA5nLe-Jlcjox50DnVz78yVApQxqA893qEao26pwF4aMHepZrKYS9iwgJzGmke~M6liYKHCF-lyvw-fKlxO0DIrACavR6diK0rbzXjxbVKEanOLJ5-j3HBNnKBlt1HH2E~slQC6-py9-Dsq-fyn31rsdLvMihJ9oPqzCXXRuLWuoYF6N-eMeA__","height":0,"width":0},{"screenshotId":"AJIYiV9KcLXvJK_0ixljj","name":"screenshot","testId":"r2","testAttemptIndex":0,"takenAt":"2023-09-14T03:09:02.403Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/bAgprcJAWnLR.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=VzRBTtiwdUUWOwggcZjEZBfhBAqpnnnanGY0ibeUSmKUWnX9BVGUrwgQ2TROQ0qdXOPabNAk~cCBqPJmanLV47BWPDBuvCPEnJC83jT1w1Cu9Lsw8hKVWW1jKtlTUUv1FluL~DXpnDSlbqJAWILzx-kq2ODWOCc58iAFQEDpgiJqXtx89ZeDoiow4zTC6eC1wff5fidRY4vyGvvHMEMIM3B8O3pxz5nBfjs2I-S0STOeda1YCVsCjqKV6yjYt271WwFuhJHxFtABRK2n8WC5YGsJurb481pH~9K20xjfvJ1elEFWIiHyWXtule5O5cjyhgDOCClyE1UWmVBnXtWxxg__","height":0,"width":0}],"exception":null,"flaky":1}},{"groupId":"run-compat-test-2023-09-14T03:08:06.912Z","spec":"cypress/e2e/c.spec.js","instanceId":"jvImfMz5D31v","claimedAt":"2023-09-14T03:08:10.579Z","completedAt":"2023-09-14T03:08:43.777Z","machineId":"wxZyenuJ37lK","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/jvImfMz5D31v_t4OaiRbjZM74.mp4?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=kb01SpVToqoQNBoHnt9Xrlz1D-hsOZDu00PFNi9Skv6sP6sKoAsv9a~O9em3WBEmCP-4sRBSKl2yQfD3otqGSzxCl3C94cmgJNalIZFDpxCZUPxlkOsVoDZpaXHJyLnW-WPVq6X2kqoq0d55NL5G9MdsA6pVN-oumFQFkuCrDIZkMOx5ctQ1sV8RvNXiyO99yf4AjogCzlkwH2aaK0bwBvzRRUDq33KH0tWKy1qklKF4cQ3vU~kMTSS3wMYepNUgHYPw~nAJbib7q4iklJ6x~SNR4Q3giUmgpSs6aZT7UPNsMtoo1xQ7FNfR587u39gyQzuxfLdppBACpJYojZ0FLw__","stats":{"duration":68,"endedAt":"2023-09-14T03:08:42.351Z","startedAt":"2023-09-14T03:08:42.283Z","failures":0,"passes":0,"pending":1,"skipped":0,"suites":1,"tests":1,"wallClockDuration":68,"wallClockStartedAt":"2023-09-14T03:08:42.283Z","wallClockEndedAt":"2023-09-14T03:08:42.351Z"},"screenshots":[],"exception":null,"flaky":0}},{"groupId":"run-compat-test-2023-09-14T03:08:06.912Z","spec":"cypress/e2e/d.spec.js","instanceId":"QwZdd7RO1TVQ","claimedAt":"2023-09-14T03:08:10.572Z","completedAt":"2023-09-14T03:08:40.920Z","machineId":"wxZyenuJ37lK","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/QwZdd7RO1TVQ_HZQ7rUPEn6nX.mp4?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=UHY02uaM8~7c6t2apZjCWRieCxP1~tZDpwp9aMx0zEUuoHjbvYq5vXU4T-6Vlrxv20320sYm1Z75~j6Sqk0iaVr-5dqwYOza8FkZvZqwlX7yitz8OgBvJN91AZc25nMnjJX1deugAqFmmiElODqLxKxn4bzCW3LchoD0IcBa8FXXsvvLHv~47OBlu1N6NfSAhimP--u10uOjf40Lel~TCmCcghaaqThyCFQiqOVjiqt6rnRYrim9rCSvco64JnntbGAjgiHiMbfFI8NCYLccELQpiY5xlzA0fialVuUE6EzYup4MM0k4iA3biresGS3omZnrXlqOi1EGmfdm2CBMNg__","stats":{"duration":1120,"endedAt":"2023-09-14T03:08:39.327Z","startedAt":"2023-09-14T03:08:38.207Z","failures":0,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":2,"wallClockDuration":1120,"wallClockStartedAt":"2023-09-14T03:08:38.207Z","wallClockEndedAt":"2023-09-14T03:08:39.327Z"},"screenshots":[{"screenshotId":"zHKHE1RI8pA4tbHm9Cbsf","name":"internal-assert-screenshot","testId":"r0","testAttemptIndex":0,"takenAt":"2023-09-14T03:08:38.441Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/01AmZyYk7Zg4.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=FXZSgNJ4R06cVGBQRPX6o0JKiQ7HcdOReTE15GL9TqFxn5fRm4tVZ7Sr5mO3iW93EwNTzAuqQf2NQTWl1uXAYLEofD49S8ZeW-cnQ0a8b2TFuBtsv1-omV2PAV7dZNUyDywM0OXYZGHrTsIfi1CZ3SX00xtXJEZsjg8LMYEJ0bNU5BvOrYqjSJu4OgaJudf6CqkgaQeNz0V8oHkKCtMEZzr3oucA7qJcUDIO5lMkUdrUwUt~aXcfJJBStmc7NTOdXWP-BhehO8UDEyI3EcYc1~dq6a-9EPIL9qCYtNrSq6gqQh6HdaJyxDy2t5XJ5d1dm6Gl8QxCoUtqU-IJoxqqug__","height":0,"width":0}],"exception":null,"flaky":0}},{"groupId":"run-compat-test-2023-09-14T03:08:06.912Z","spec":"cypress/e2e/e.spec.js","instanceId":"TBKBczNxaQ7U","claimedAt":"2023-09-14T03:08:10.565Z","completedAt":"2023-09-14T03:08:36.822Z","machineId":"wxZyenuJ37lK","worker":null,"results":{"videoUrl":"https://fs.currents.dev/64af8eee5411be7416b22d5f/TBKBczNxaQ7U_JK86Uy1mLP9R.mp4?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=b3K~za0~nRf7udNcJk5fSR-oyo2luMvbq56tbMzzcfQZhNWioHs9roGL~7Gc7Cfrs23Xv5fUWAv2nBOh~fAURAo2NFgJw-Un3HdVkLDaPO8h388hnQnulsTnJ-kkmOGmFZelnYUk96u-ugkamzvTRHiYL5bE~RwbQn9DVvNMYO6Rs5l3ELFdshsf5Waxk~VYr6xI1PB5qWXQGpyd1Oo0wJ4QlL2UXk2xBcd1Ie9Kc0FsfJoYWllr67-Awlw6d-6kn9E~HOjitRQlVi4Y7rENrHOU5rQ8Ops~~fr27VcKZlKyWPVpixOUWBYTjVZ5bkk~zhS5BPRDMmYgYX8Im47-~w__","stats":{"duration":517,"endedAt":"2023-09-14T03:08:35.218Z","startedAt":"2023-09-14T03:08:34.701Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1,"wallClockDuration":517,"wallClockStartedAt":"2023-09-14T03:08:34.701Z","wallClockEndedAt":"2023-09-14T03:08:35.218Z"},"screenshots":[{"screenshotId":"wrjBJ1Eo6Djd1b2trkdlT","name":"screenshot","testId":"r0","testAttemptIndex":0,"takenAt":"2023-09-14T03:08:34.938Z","screenshotURL":"https://fs.currents.dev/64af8eee5411be7416b22d5f/N1toETqNYjNK.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=wZPNOHCJMsy5y9K-QTGs6ZDD-15TmI6geCx3NmZoyao9GRhWPdtGU4yDmMKn4wBsAhZUGh81IxeWGETJ1gmFGVm-nkfzOkR1ED4FbgcdmSjN8xiXUnJfXNYWwMY5TNd4-oVKSnbJBik-NETl4KrAPqT7iLNzbsD5WNHizmzEyiny09LnVGH0sQ2SoLULST3zwH24wO8vmQqjvjhVOq60l8NpdQfZauIbaYnq83UpRwk2clPzbKC-2BnGpdbGOXno6ZjRBefXJ1grEb3pcuEPlYdQ-deOHBMTHqhAEa4TOXq4B8SmDZ5oLQwDHSLwMyd9fQflyvEuWQq57IvugVQcsg__","height":0,"width":0}],"exception":null,"flaky":0}}],"completionState":"COMPLETE","status":"FAILED"}} \ No newline at end of file diff --git a/e2e/cypress-13-demo/data-references/ccy-1.9.4-cy-12-cycl.json b/e2e/cypress-13-demo/data-references/ccy-1.9.4-cy-12-cycl.json new file mode 100644 index 0000000..f4df4e0 --- /dev/null +++ b/e2e/cypress-13-demo/data-references/ccy-1.9.4-cy-12-cycl.json @@ -0,0 +1 @@ +{"totalDuration":33459,"totalSuites":5,"totalPending":1,"totalFailed":3,"totalSkipped":0,"totalPassed":4,"totalTests":8,"runs":[{"stats":{"duration":13634,"endedAt":"2023-09-14T03:08:29.332Z","startedAt":"2023-09-14T03:08:15.698Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":0,"failures":1,"start":"2023-09-14T03:08:15.700Z","end":"2023-09-14T03:08:29.345Z","duration":13645},"spec":{"fileExtension":".js","baseName":"a.spec.js","fileName":"a","specFileExtension":".spec.js","relativeToCommonRoot":"a.spec.js","specType":"integration","name":"cypress/e2e/a.spec.js","relative":"cypress/e2e/a.spec.js","absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/a.spec.js.mp4","shouldUploadVideo":true,"hooks":[{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"testId":"r3","title":["Failing test with 2 attempts","should try 2 times"],"state":"failed","body":"() => {\n cy.wrap(false).should('be.true');\n }","displayError":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","attempts":[{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","codeFrame":{"line":5,"column":20,"originalFile":"cypress/e2e/a.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/a.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","frame":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","language":"js"}},"timings":{"lifecycle":41,"before each":[{"hookId":"h1","fnDuration":17,"afterFnDuration":1},{"hookId":"h2","fnDuration":440,"afterFnDuration":0}],"test":{"fnDuration":4004,"afterFnDuration":297},"after each":[{"hookId":"h4","fnDuration":31,"afterFnDuration":0},{"hookId":"h5","fnDuration":12,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T03:08:15.704Z","wallClockDuration":4845,"videoTimestamp":2783,"startedAt":"2023-09-14T03:08:15.704Z","duration":4845,"screenshots":[{"screenshotId":"oz3vf","name":"screenshot","testId":"r3","testAttemptIndex":0,"takenAt":"2023-09-14T03:08:20.212Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed).png","height":1440,"width":2560}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","codeFrame":{"line":5,"column":20,"originalFile":"cypress/e2e/a.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/a.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","frame":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","language":"js"}},"timings":{"lifecycle":29,"before each":[{"hookId":"h1","fnDuration":10,"afterFnDuration":0},{"hookId":"h2","fnDuration":60,"afterFnDuration":1}],"test":{"fnDuration":3992,"afterFnDuration":230},"after each":[{"hookId":"h4","fnDuration":13,"afterFnDuration":0},{"hookId":"h5","fnDuration":18,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T03:08:20.571Z","wallClockDuration":4356,"videoTimestamp":7650,"startedAt":"2023-09-14T03:08:20.571Z","duration":4356,"screenshots":[{"screenshotId":"fllo0","name":"screenshot","testId":"r3","testAttemptIndex":1,"takenAt":"2023-09-14T03:08:24.667Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 2).png","height":1440,"width":2560}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","codeFrame":{"line":5,"column":20,"originalFile":"cypress/e2e/a.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/a.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","frame":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","language":"js"}},"timings":{"lifecycle":50,"before each":[{"hookId":"h1","fnDuration":9,"afterFnDuration":0},{"hookId":"h2","fnDuration":58,"afterFnDuration":0}],"test":{"fnDuration":4000,"afterFnDuration":214},"after each":[{"hookId":"h4","fnDuration":18,"afterFnDuration":0},{"hookId":"h5","fnDuration":16,"afterFnDuration":0}],"after all":[{"hookId":"h3","fnDuration":4,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T03:08:24.942Z","wallClockDuration":4375,"videoTimestamp":12021,"startedAt":"2023-09-14T03:08:24.942Z","duration":4375,"screenshots":[{"screenshotId":"fqwko","name":"screenshot","testId":"r3","testAttemptIndex":2,"takenAt":"2023-09-14T03:08:29.064Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 3).png","height":1440,"width":2560}]}]}]},{"stats":{"duration":517,"endedAt":"2023-09-14T03:08:35.218Z","startedAt":"2023-09-14T03:08:34.701Z","failures":1,"passes":0,"pending":0,"skipped":0,"suites":1,"tests":1},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":0,"failures":1,"start":"2023-09-14T03:08:34.702Z","end":"2023-09-14T03:08:35.222Z","duration":520},"spec":{"fileExtension":".js","baseName":"e.spec.js","fileName":"e","specFileExtension":".spec.js","relativeToCommonRoot":"e.spec.js","specType":"integration","name":"cypress/e2e/e.spec.js","relative":"cypress/e2e/e.spec.js","absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/e.spec.js"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/e.spec.js.mp4","shouldUploadVideo":true,"hooks":[{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"testId":"r3","title":["Should throw an error","Should throw an error"],"state":"failed","body":"() => {\n throw new Error(\"test error\");\n }","displayError":"Error: test error\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/e.spec.js:3:10)","attempts":[{"state":"failed","error":{"name":"Error","message":"test error","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/e.spec.js:3:10)","codeFrame":{"line":3,"column":11,"originalFile":"cypress/e2e/e.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/e.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/e.spec.js","frame":" 1 | describe('Should throw an error', () => {\n 2 | it('Should throw an error', () => {\n> 3 | throw new Error(\"test error\")\n | ^\n 4 | });\n 5 | });\n 6 | ","language":"js"}},"timings":{"lifecycle":36,"before each":[{"hookId":"h1","fnDuration":10,"afterFnDuration":0},{"hookId":"h2","fnDuration":162,"afterFnDuration":0}],"test":{"fnDuration":2,"afterFnDuration":234},"after each":[{"hookId":"h4","fnDuration":14,"afterFnDuration":0},{"hookId":"h5","fnDuration":10,"afterFnDuration":1}],"after all":[{"hookId":"h3","fnDuration":5,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T03:08:34.724Z","wallClockDuration":477,"videoTimestamp":1223,"startedAt":"2023-09-14T03:08:34.724Z","duration":477,"screenshots":[{"screenshotId":"kbv4e","name":"screenshot","testId":"r3","testAttemptIndex":0,"takenAt":"2023-09-14T03:08:34.938Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/e.spec.js/Should throw an error -- Should throw an error (failed).png","height":1440,"width":2560}]}]}]},{"stats":{"duration":1120,"endedAt":"2023-09-14T03:08:39.327Z","startedAt":"2023-09-14T03:08:38.207Z","failures":0,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":2},"reporter":"spec","reporterStats":{"suites":1,"tests":2,"passes":2,"pending":0,"failures":0,"start":"2023-09-14T03:08:38.209Z","end":"2023-09-14T03:08:39.330Z","duration":1121},"spec":{"fileExtension":".js","baseName":"d.spec.js","fileName":"d","specFileExtension":".spec.js","relativeToCommonRoot":"d.spec.js","specType":"integration","name":"cypress/e2e/d.spec.js","relative":"cypress/e2e/d.spec.js","absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/d.spec.js"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/d.spec.js.mp4","shouldUploadVideo":true,"hooks":[{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"testId":"r3","title":["Passed test with screenshot, passed test with no screenshots","should assert and take a screenshot"],"state":"passed","body":"() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }","displayError":null,"attempts":[{"state":"passed","error":null,"timings":{"lifecycle":37,"before each":[{"hookId":"h1","fnDuration":12,"afterFnDuration":0},{"hookId":"h2","fnDuration":155,"afterFnDuration":0}],"test":{"fnDuration":735,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":13,"afterFnDuration":1},{"hookId":"h5","fnDuration":10,"afterFnDuration":1}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T03:08:38.219Z","wallClockDuration":980,"videoTimestamp":1209,"startedAt":"2023-09-14T03:08:38.219Z","duration":980,"screenshots":[{"screenshotId":"5n5yz","name":"internal-assert-screenshot","testId":"r3","testAttemptIndex":0,"takenAt":"2023-09-14T03:08:38.441Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/d.spec.js/internal-assert-screenshot.png","height":1320,"width":2000}]}]},{"testId":"r4","title":["Passed test with screenshot, passed test with no screenshots","should assert that true is true"],"state":"passed","body":"() => {\n cy.wrap(true).should('be.true');\n }","displayError":null,"attempts":[{"state":"passed","error":null,"timings":{"lifecycle":33,"before each":[{"hookId":"h1","fnDuration":6,"afterFnDuration":0},{"hookId":"h2","fnDuration":55,"afterFnDuration":0}],"test":{"fnDuration":2,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0},{"hookId":"h5","fnDuration":8,"afterFnDuration":1}],"after all":[{"hookId":"h3","fnDuration":4,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T03:08:39.201Z","wallClockDuration":125,"videoTimestamp":2191,"startedAt":"2023-09-14T03:08:39.201Z","duration":125,"screenshots":[]}]}]},{"stats":{"duration":68,"endedAt":"2023-09-14T03:08:42.351Z","startedAt":"2023-09-14T03:08:42.283Z","failures":0,"passes":0,"pending":1,"skipped":0,"suites":1,"tests":1},"reporter":"spec","reporterStats":{"suites":1,"tests":1,"passes":0,"pending":1,"failures":0,"start":"2023-09-14T03:08:42.285Z","end":"2023-09-14T03:08:42.355Z","duration":70},"spec":{"fileExtension":".js","baseName":"c.spec.js","fileName":"c","specFileExtension":".spec.js","relativeToCommonRoot":"c.spec.js","specType":"integration","name":"cypress/e2e/c.spec.js","relative":"cypress/e2e/c.spec.js","absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/c.spec.js"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/c.spec.js.mp4","shouldUploadVideo":true,"hooks":[{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"testId":"r3","title":["Ignored test","should be a skipped test"],"state":"pending","body":"() => {\n cy.wrap(false).should('be.true');\n }","displayError":null,"attempts":[{"state":"pending","error":null,"timings":{"lifecycle":36,"after all":[{"hookId":"h3","fnDuration":5,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T03:08:42.308Z","wallClockDuration":42,"videoTimestamp":1167,"startedAt":"2023-09-14T03:08:42.308Z","duration":42,"screenshots":[]}]}]},{"stats":{"duration":18120,"endedAt":"2023-09-14T03:09:02.909Z","startedAt":"2023-09-14T03:08:44.789Z","failures":1,"passes":2,"pending":0,"skipped":0,"suites":1,"tests":3},"reporter":"spec","reporterStats":{"suites":1,"tests":3,"passes":2,"pending":0,"failures":1,"start":"2023-09-14T03:08:44.790Z","end":"2023-09-14T03:09:02.913Z","duration":18123},"spec":{"fileExtension":".js","baseName":"b.spec.js","fileName":"b","specFileExtension":".spec.js","relativeToCommonRoot":"b.spec.js","specType":"integration","name":"cypress/e2e/b.spec.js","relative":"cypress/e2e/b.spec.js","absolute":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js"},"error":null,"video":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/b.spec.js.mp4","shouldUploadVideo":true,"hooks":[{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"}],"tests":[{"testId":"r3","title":["Failing test with 2 attempts, passed test and flaky test with 2 attempts","should try 2 times"],"state":"failed","body":"() => {\n cy.wrap(false).should('be.true');\n }","displayError":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","attempts":[{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","codeFrame":{"line":6,"column":20,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","frame":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","language":"js"}},"timings":{"lifecycle":26,"before each":[{"hookId":"h1","fnDuration":10,"afterFnDuration":1},{"hookId":"h2","fnDuration":129,"afterFnDuration":0}],"test":{"fnDuration":4012,"afterFnDuration":274},"after each":[{"hookId":"h4","fnDuration":25,"afterFnDuration":1},{"hookId":"h5","fnDuration":43,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T03:08:44.800Z","wallClockDuration":4526,"videoTimestamp":1156,"startedAt":"2023-09-14T03:08:44.800Z","duration":4526,"screenshots":[{"screenshotId":"mkbvr","name":"screenshot","testId":"r3","testAttemptIndex":0,"takenAt":"2023-09-14T03:08:48.985Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed).png","height":1440,"width":2560}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","codeFrame":{"line":6,"column":20,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","frame":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","language":"js"}},"timings":{"lifecycle":29,"before each":[{"hookId":"h1","fnDuration":10,"afterFnDuration":0},{"hookId":"h2","fnDuration":55,"afterFnDuration":0}],"test":{"fnDuration":3991,"afterFnDuration":238},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":1},{"hookId":"h5","fnDuration":22,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T03:08:49.350Z","wallClockDuration":4360,"videoTimestamp":5706,"startedAt":"2023-09-14T03:08:49.350Z","duration":4360,"screenshots":[{"screenshotId":"g496m","name":"screenshot","testId":"r3","testAttemptIndex":1,"takenAt":"2023-09-14T03:08:53.437Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 2).png","height":1440,"width":2560}]},{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","codeFrame":{"line":6,"column":20,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","frame":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","language":"js"}},"timings":{"lifecycle":51,"before each":[{"hookId":"h1","fnDuration":8,"afterFnDuration":0},{"hookId":"h2","fnDuration":56,"afterFnDuration":0}],"test":{"fnDuration":3998,"afterFnDuration":213},"after each":[{"hookId":"h4","fnDuration":21,"afterFnDuration":0},{"hookId":"h5","fnDuration":61,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T03:08:53.724Z","wallClockDuration":4415,"videoTimestamp":10080,"startedAt":"2023-09-14T03:08:53.724Z","duration":4415,"screenshots":[{"screenshotId":"inwwk","name":"screenshot","testId":"r3","testAttemptIndex":2,"takenAt":"2023-09-14T03:08:57.842Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 3).png","height":1440,"width":2560}]}]},{"testId":"r4","title":["Failing test with 2 attempts, passed test and flaky test with 2 attempts","should assert that true is true"],"state":"passed","body":"() => {\n cy.wrap(true).should('be.true');\n }","displayError":null,"attempts":[{"state":"passed","error":null,"timings":{"lifecycle":35,"before each":[{"hookId":"h1","fnDuration":11,"afterFnDuration":0},{"hookId":"h2","fnDuration":89,"afterFnDuration":0}],"test":{"fnDuration":3,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":12,"afterFnDuration":0},{"hookId":"h5","fnDuration":9,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T03:08:58.160Z","wallClockDuration":164,"videoTimestamp":14516,"startedAt":"2023-09-14T03:08:58.160Z","duration":164,"screenshots":[]}]},{"testId":"r5","title":["Failing test with 2 attempts, passed test and flaky test with 2 attempts","should fail on the first attempt and pass on the second"],"state":"passed","body":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","displayError":null,"attempts":[{"state":"failed","error":{"name":"AssertionError","message":"Timed out retrying after 4000ms: expected false to be true","stack":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:16:21)","codeFrame":{"line":16,"column":22,"originalFile":"cypress/e2e/b.spec.js","relativeFile":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","absoluteFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","frame":" 14 | if (attempt === 0) {\n 15 | attempt++;\n> 16 | cy.wrap(false).should('be.true'); // This will fail on the first attempt\n | ^\n 17 | } else {\n 18 | cy.wrap(true).should('be.true'); // This will pass on the second attempt\n 19 | }","language":"js"}},"timings":{"lifecycle":21,"before each":[{"hookId":"h1","fnDuration":8,"afterFnDuration":0},{"hookId":"h2","fnDuration":54,"afterFnDuration":0}],"test":{"fnDuration":3991,"afterFnDuration":234},"after each":[{"hookId":"h4","fnDuration":14,"afterFnDuration":1},{"hookId":"h5","fnDuration":44,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T03:08:58.325Z","wallClockDuration":4371,"videoTimestamp":14681,"startedAt":"2023-09-14T03:08:58.325Z","duration":4371,"screenshots":[{"screenshotId":"xa6yo","name":"screenshot","testId":"r5","testAttemptIndex":0,"takenAt":"2023-09-14T03:09:02.403Z","path":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should fail on the first attempt and pass on the second (failed).png","height":1440,"width":2560}]},{"state":"passed","error":null,"timings":{"lifecycle":50,"before each":[{"hookId":"h1","fnDuration":8,"afterFnDuration":0},{"hookId":"h2","fnDuration":103,"afterFnDuration":1}],"test":{"fnDuration":3,"afterFnDuration":0},"after each":[{"hookId":"h4","fnDuration":11,"afterFnDuration":0},{"hookId":"h5","fnDuration":14,"afterFnDuration":0}],"after all":[{"hookId":"h3","fnDuration":5,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T03:09:02.705Z","wallClockDuration":202,"videoTimestamp":19061,"startedAt":"2023-09-14T03:09:02.705Z","duration":202,"screenshots":[]}]}]}],"startedTestsAt":"2023-09-14T03:08:15.698Z","endedTestsAt":"2023-09-14T03:09:02.909Z","config":{"additionalIgnorePattern":[],"animationDistanceThreshold":5,"arch":"arm64","autoOpen":false,"baseUrl":"https://todomvc.com/examples/vanillajs","blockHosts":null,"browsers":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"116.0.5845.187","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"116"},{"name":"edge","family":"chromium","channel":"stable","displayName":"Edge","version":"116.0.1938.81","path":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","minSupportedVersion":79,"majorVersion":"116"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"106.0.5249.51","path":"","majorVersion":106}],"chromeWebSecurity":true,"clientCertificates":[],"clientRoute":"/__/","configFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress.config.ts","cypressBinaryRoot":"/Users/miguelangarano/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app","cypressEnv":"production","defaultCommandTimeout":4000,"devServerPublicPathRoute":"/__cypress/src","downloadsFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/downloads","env":{"currents_temp_file":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-45859-JGguqnT5L2dB","currents_debug_enabled":false},"excludeSpecPattern":"*.hot-update.js","execTimeout":60000,"experimentalCspAllowList":false,"experimentalFetchPolyfill":false,"experimentalInteractiveRunEvents":false,"experimentalMemoryManagement":false,"experimentalModifyObstructiveThirdPartyCode":false,"experimentalOriginDependencies":false,"experimentalRunAllSpecs":false,"experimentalSingleTabRunMode":false,"experimentalSkipDomainInjection":null,"experimentalSourceRewriting":false,"experimentalStudio":false,"experimentalWebKitSupport":false,"fileServerFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo","fixturesFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/fixtures","hosts":null,"includeShadowDom":false,"isInteractive":true,"isTextTerminal":true,"keystrokeDelay":0,"modifyObstructiveCode":true,"morgan":false,"namespace":"__cypress","numTestsKeptInMemory":0,"pageLoadTimeout":60000,"platform":"darwin","port":null,"projectId":null,"projectName":"cypress-13-demo","projectRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo","rawJson":{"video":true,"e2e":{"baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/*/**/*.spec.js","setupNodeEvents":"[Function setupNodeEvents]"},"component":{"specPattern":["pages/__tests__/*.spec.tsx"],"setupNodeEvents":"[Function setupNodeEvents]","devServer":{"framework":"next","bundler":"webpack"}},"baseUrl":"https://todomvc.com/examples/vanillajs","supportFile":"cypress/support/e2e.ts","specPattern":"cypress/*/**/*.spec.js","setupNodeEvents":"[Function setupNodeEvents]","envFile":{},"projectRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo","projectName":"cypress-13-demo","repoRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13"},"redirectionLimit":20,"repoRoot":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","report":true,"reporter":"spec","reporterOptions":null,"reporterRoute":"/__cypress/reporter","requestTimeout":5000,"resolved":{"animationDistanceThreshold":{"value":5,"from":"default"},"arch":{"value":"arm64","from":"default"},"baseUrl":{"value":"https://todomvc.com/examples/vanillajs","from":"config"},"blockHosts":{"value":null,"from":"default"},"chromeWebSecurity":{"value":true,"from":"default"},"clientCertificates":{"value":[],"from":"default"},"defaultCommandTimeout":{"value":4000,"from":"default"},"downloadsFolder":{"value":"cypress/downloads","from":"default"},"env":{"currents_temp_file":{"value":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-45859-JGguqnT5L2dB","from":"cli"},"currents_debug_enabled":{"value":false,"from":"cli"}},"execTimeout":{"value":60000,"from":"default"},"experimentalCspAllowList":{"value":false,"from":"default"},"experimentalFetchPolyfill":{"value":false,"from":"default"},"experimentalInteractiveRunEvents":{"value":false,"from":"default"},"experimentalRunAllSpecs":{"value":false,"from":"default"},"experimentalMemoryManagement":{"value":false,"from":"default"},"experimentalModifyObstructiveThirdPartyCode":{"value":false,"from":"default"},"experimentalSkipDomainInjection":{"value":null,"from":"default"},"experimentalOriginDependencies":{"value":false,"from":"default"},"experimentalSourceRewriting":{"value":false,"from":"default"},"experimentalSingleTabRunMode":{"value":false,"from":"default"},"experimentalStudio":{"value":false,"from":"default"},"experimentalWebKitSupport":{"value":false,"from":"default"},"fileServerFolder":{"value":"","from":"default"},"fixturesFolder":{"value":"cypress/fixtures","from":"default"},"excludeSpecPattern":{"value":"*.hot-update.js","from":"default"},"includeShadowDom":{"value":false,"from":"default"},"keystrokeDelay":{"value":0,"from":"default"},"modifyObstructiveCode":{"value":true,"from":"default"},"nodeVersion":{"from":"default"},"numTestsKeptInMemory":{"value":0,"from":"config"},"platform":{"value":"darwin","from":"default"},"pageLoadTimeout":{"value":60000,"from":"default"},"port":{"value":null,"from":"default"},"projectId":{"value":null,"from":"default"},"redirectionLimit":{"value":20,"from":"default"},"reporter":{"value":"spec","from":"default"},"reporterOptions":{"value":null,"from":"default"},"requestTimeout":{"value":5000,"from":"default"},"resolvedNodePath":{"value":null,"from":"default"},"resolvedNodeVersion":{"value":null,"from":"default"},"responseTimeout":{"value":30000,"from":"default"},"retries":{"value":{"runMode":0,"openMode":0},"from":"default"},"screenshotOnRunFailure":{"value":true,"from":"default"},"screenshotsFolder":{"value":"cypress/screenshots","from":"default"},"slowTestThreshold":{"value":10000,"from":"default"},"scrollBehavior":{"value":"top","from":"default"},"supportFile":{"value":"cypress/support/e2e.ts","from":"config"},"supportFolder":{"value":false,"from":"default"},"taskTimeout":{"value":60000,"from":"default"},"testIsolation":{"value":true,"from":"default"},"trashAssetsBeforeRuns":{"value":true,"from":"default"},"userAgent":{"value":null,"from":"default"},"video":{"value":true,"from":"default"},"videoCompression":{"value":32,"from":"default"},"videosFolder":{"value":"cypress/videos","from":"default"},"videoUploadOnPasses":{"value":true,"from":"default"},"viewportHeight":{"value":660,"from":"default"},"viewportWidth":{"value":1000,"from":"default"},"waitForAnimations":{"value":true,"from":"default"},"watchForFileChanges":{"value":false,"from":"config"},"specPattern":{"value":"cypress/*/**/*.spec.js","from":"config"},"browsers":{"value":[{"name":"chrome","family":"chromium","channel":"stable","displayName":"Chrome","version":"116.0.5845.187","path":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","minSupportedVersion":64,"majorVersion":"116"},{"name":"edge","family":"chromium","channel":"stable","displayName":"Edge","version":"116.0.1938.81","path":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","minSupportedVersion":79,"majorVersion":"116"},{"name":"electron","channel":"stable","family":"chromium","displayName":"Electron","version":"106.0.5249.51","path":"","majorVersion":106}],"from":"runtime"},"hosts":{"value":null,"from":"default"},"isInteractive":{"value":true,"from":"default"}},"resolvedNodePath":"/Users/miguelangarano/.nvm/versions/node/v18.14.2/bin/node","resolvedNodeVersion":"18.14.2","responseTimeout":30000,"retries":{"runMode":0,"openMode":0},"screenshotOnRunFailure":true,"screenshotsFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots","scrollBehavior":"top","setupNodeEvents":"[Function setupNodeEvents]","slowTestThreshold":10000,"socketId":"ijm5bzfgh0","socketIoCookie":"__socket","socketIoRoute":"/__socket","specPattern":"cypress/*/**/*.spec.js","supportFile":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/support/e2e.ts","supportFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/support","taskTimeout":60000,"testIsolation":true,"trashAssetsBeforeRuns":true,"userAgent":null,"version":"12.17.4","video":true,"videoCompression":32,"videoUploadOnPasses":true,"videosFolder":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos","viewportHeight":660,"viewportWidth":1000,"waitForAnimations":true,"watchForFileChanges":false,"testingType":"e2e"},"status":"finished","runUrl":"https://app.currents.dev/run/7dc0426fc25d30fe"} \ No newline at end of file diff --git a/e2e/cypress-13-demo/package.json b/e2e/cypress-13-demo/package.json new file mode 100644 index 0000000..77ebcc8 --- /dev/null +++ b/e2e/cypress-13-demo/package.json @@ -0,0 +1,20 @@ +{ + "name": "cypress-13-demo", + "version": "0.0.0", + "private": true, + "scripts": { + "files": "ts-node scripts/files.ts", + "validate": "ts-node scripts/validate.ts", + "test": "ts-node scripts/test.ts" + }, + "dependencies": { + "colors": "^1.4.0", + "cypress-cloud": "*" + }, + "devDependencies": { + "@types/node": "^17.0.12", + "cypress": "13.1.0", + "tsconfig": "*", + "typescript": "^4.7.4" + } +} diff --git a/e2e/cypress-13-demo/scripts/files.ts b/e2e/cypress-13-demo/scripts/files.ts new file mode 100644 index 0000000..70a242f --- /dev/null +++ b/e2e/cypress-13-demo/scripts/files.ts @@ -0,0 +1,11 @@ +import { getApiData, runTests } from "../../utils/utils"; +(async function runFiles() { + const cypressCloudData = await runTests( + "data-references/ccy-1.9.4-cy-12-cycl.json" + ); + + await getApiData( + cypressCloudData.runUrl, + "data-references/ccy-1.9.4-cy-12-crapi.json" + ); +})(); diff --git a/e2e/cypress-13-demo/scripts/test.ts b/e2e/cypress-13-demo/scripts/test.ts new file mode 100644 index 0000000..33bfc05 --- /dev/null +++ b/e2e/cypress-13-demo/scripts/test.ts @@ -0,0 +1,66 @@ +import colors from "colors"; + +import fs from "fs"; +import { + avoidableApiPropertiesCy13, + avoidablePropertiesCy13, + avoidedButNeedePropertiesCy13, + getApiData, + runTestsValidation, + runTests, +} from "../../utils/utils"; + +colors.enable(); +(async function runTest() { + try { + const originalCurrentsApiFile = fs.readFileSync( + "data-references/ccy-1.9.4-cy-12-crapi.json", + "utf8" + ); + const originalCypressCloudFile = fs.readFileSync( + "data-references/ccy-1.9.4-cy-12-cycl.json", + "utf8" + ); + + const originalCurrentsApi = JSON.parse(originalCurrentsApiFile); + const originalCypressCloud = JSON.parse(originalCypressCloudFile); + + const cypressCloudData = await runTests( + "data-references/ccy-1.10-cy-13-cycl.json" + ); + const currentsApiData = await getApiData( + cypressCloudData.runUrl, + "data-references/ccy-1.10-cy-13-crapi.json" + ); + + const modifiedCurrentsApi = currentsApiData; + const modifiedCypressCloud = cypressCloudData; + + const currentsApiErrors = runTestsValidation( + originalCurrentsApi, + modifiedCurrentsApi, + avoidableApiPropertiesCy13, + "validation-results/currents-api-validation.json", + "Starting test: Currents API output", + "Test Passed: Currents API output is the same in ccy 1.9 cypress 12 without change and ccy 1.10 cypress 13 with changes" + ); + + const cypressCloudErrors = runTestsValidation( + originalCypressCloud, + modifiedCypressCloud, + [...avoidablePropertiesCy13, ...avoidedButNeedePropertiesCy13], + "validation-results/cypress-cloud-validation.json", + "Starting test: Cypress Cloud output", + "Test Passed: Cypress Cloud output is the same in ccy 1.9 cypress 12 without change and ccy 1.10 cypress 13 with changes" + ); + + if (currentsApiErrors.length > 0 || cypressCloudErrors.length > 0) { + process.exit(1); + } else { + process.exit(0); + } + } catch (err: any) { + console.error("Process error:", err); + process.exit(1); + } +})(); diff --git a/e2e/cypress-13-demo/scripts/validate.ts b/e2e/cypress-13-demo/scripts/validate.ts new file mode 100644 index 0000000..94907d8 --- /dev/null +++ b/e2e/cypress-13-demo/scripts/validate.ts @@ -0,0 +1,125 @@ +import fs from "fs"; + +type ComparisonResult = { + path: string; + valueA: any; + valueB: any; + isEqual: boolean; + note?: string; +}; + +function compareObjectsRecursively( + objA: any, + objB: any, + path: string = "" +): ComparisonResult[] { + let results: ComparisonResult[] = []; + + // Si ambos son objetos pero no arrays ni strings + if ( + typeof objA === "object" && + objA !== null && + !(objA instanceof Array) && + typeof objA !== "string" && + typeof objB === "object" && + objB !== null && + !(objB instanceof Array) && + typeof objB !== "string" + ) { + const keys = new Set([...Object.keys(objA), ...Object.keys(objB)]); + + keys.forEach((key) => { + const newPath = path ? `${path}.${key}` : key; + results = results.concat( + compareObjectsRecursively(objA[key], objB[key], newPath) + ); + }); + } + // Si ambos son arrays + else if (Array.isArray(objA) && Array.isArray(objB)) { + const maxLength = Math.max(objA.length, objB.length); + for (let i = 0; i < maxLength; i++) { + const newPath = `${path}[${i}]`; + results = results.concat( + compareObjectsRecursively(objA[i], objB[i], newPath) + ); + } + } else { + const isEqual = objA === objB; + const note = + objA === undefined + ? "Does not exist in A" + : objB === undefined + ? "Does not exist in B" + : undefined; + + results.push({ + path: path || "root", + valueA: objA, + valueB: objB, + isEqual: isEqual, + note: note, + }); + } + + return results; +} + +(async function runValidation() { + try { + const originalCurrentApiFile = fs.readFileSync( + "data-references/ccy-1.9.4-cypress-12/currents-api-output-reference.json", + "utf8" + ); + const originalCypressCloudFile = fs.readFileSync( + "data-references/ccy-1.9.4-cypress-12/cypress-cloud-output-reference.json", + "utf8" + ); + + const originalCurrentApi = JSON.parse(originalCurrentApiFile); + const originalCypressCloud = JSON.parse(originalCypressCloudFile); + + const modifiedCurrentApiFile = fs.readFileSync( + "data-references/ccy-1.10-cypress-13/currents-api-output-reference.json", + "utf8" + ); + const modifiedCypressCloudFile = fs.readFileSync( + "data-references/ccy-1.10-cypress-13/cypress-cloud-output-reference.json", + "utf8" + ); + + const modifiedCurrentApi = JSON.parse(modifiedCurrentApiFile); + const modifiedCypressCloud = JSON.parse(modifiedCypressCloudFile); + + const apiComparisonResult = compareObjectsRecursively( + originalCurrentApi, + modifiedCurrentApi + ); + fs.writeFile( + "validation-results/currents-api-validation.json", + JSON.stringify(apiComparisonResult), + (err) => { + if (err) { + console.log("FILE ERROR::", err); + throw err; + } + console.log("file saved"); + } + ); + + const packageComparisonResult = compareObjectsRecursively( + originalCypressCloud, + modifiedCypressCloud + ); + fs.writeFile( + "validation-results/cypress-cloud-validation.json", + JSON.stringify(packageComparisonResult), + (err) => { + if (err) throw err; + console.log("file saved"); + } + ); + } catch (err) { + console.error("Process error:", err); + } +})(); diff --git a/e2e/cypress-13-demo/tsconfig.json b/e2e/cypress-13-demo/tsconfig.json new file mode 100644 index 0000000..83d1ff0 --- /dev/null +++ b/e2e/cypress-13-demo/tsconfig.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Next.js", + "compilerOptions": { + "baseUrl": ".", + "composite": false, + "declaration": true, + "declarationMap": true, + "inlineSources": false, + "moduleResolution": "node", + "noUnusedLocals": false, + "noUnusedParameters": false, + "preserveWatchOutput": true, + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "incremental": true, + "esModuleInterop": true, + "module": "esnext", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve" + }, + "ts-node": { + "compilerOptions": { + "module": "CommonJS" + } + }, + + "exclude": ["node_modules"] +} diff --git a/e2e/cypress-13-demo/validation-results/currents-api-validation.json b/e2e/cypress-13-demo/validation-results/currents-api-validation.json new file mode 100644 index 0000000..76efbc7 --- /dev/null +++ b/e2e/cypress-13-demo/validation-results/currents-api-validation.json @@ -0,0 +1 @@ +[{"path":"status","valueA":"OK","valueB":"OK","isEqual":true},{"path":"data.runId","valueA":"7dc0426fc25d30fe","valueB":"ff965046ffbf2977","isEqual":false},{"path":"data.projectId","valueA":"2cI1I5","valueB":"2cI1I5","isEqual":true},{"path":"data.createdAt","valueA":"2023-09-14T03:08:10.182Z","valueB":"2023-09-14T03:52:54.719Z","isEqual":false},{"path":"data.cypressVersion","valueA":"12.17.4","valueB":"13.1.0","isEqual":false},{"path":"data.cancellation","valueA":null,"valueB":null,"isEqual":true},{"path":"data.timeout.isTimeout","valueA":false,"valueB":false,"isEqual":true},{"path":"data.groups[0].groupId","valueA":"run-compat-test-2023-09-14T03:08:06.912Z","valueB":"run-compat-test-2023-09-14T03:52:51.461Z","isEqual":false},{"path":"data.groups[0].platform.osName","valueA":"darwin","valueB":"darwin","isEqual":true},{"path":"data.groups[0].platform.osVersion","valueA":"22.5.0","valueB":"22.5.0","isEqual":true},{"path":"data.groups[0].platform.browserName","valueA":"Electron","valueB":"Electron","isEqual":true},{"path":"data.groups[0].platform.browserVersion","valueA":"106.0.5249.51","valueB":"106.0.5249.51","isEqual":true},{"path":"data.groups[0].createdAt","valueA":"2023-09-14T03:08:10.182Z","valueB":"2023-09-14T03:52:54.719Z","isEqual":false},{"path":"data.groups[0].instances.overall","valueA":5,"valueB":5,"isEqual":true},{"path":"data.groups[0].instances.claimed","valueA":5,"valueB":5,"isEqual":true},{"path":"data.groups[0].instances.complete","valueA":5,"valueB":5,"isEqual":true},{"path":"data.groups[0].instances.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"data.groups[0].instances.failures","valueA":3,"valueB":3,"isEqual":true},{"path":"data.groups[0].tests.overall","valueA":8,"valueB":8,"isEqual":true},{"path":"data.groups[0].tests.passes","valueA":4,"valueB":4,"isEqual":true},{"path":"data.groups[0].tests.failures","valueA":3,"valueB":3,"isEqual":true},{"path":"data.groups[0].tests.pending","valueA":1,"valueB":1,"isEqual":true},{"path":"data.groups[0].tests.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.groups[0].tests.retries","valueA":1,"valueB":1,"isEqual":true},{"path":"data.groups[0].tests.flaky","valueA":1,"valueB":1,"isEqual":true},{"path":"data.meta.ciBuildId","valueA":"run-compat-test-2023-09-14T03:08:06.912Z","valueB":"run-compat-test-2023-09-14T03:52:51.461Z","isEqual":false},{"path":"data.meta.commit.branch","valueA":"fix/cypress-13-validation","valueB":"fix/cypress-13-validation","isEqual":true},{"path":"data.meta.commit.remoteOrigin","valueA":null,"valueB":null,"isEqual":true},{"path":"data.meta.commit.authorEmail","valueA":"miguelangarano@gmail.com","valueB":"miguelangarano@gmail.com","isEqual":true},{"path":"data.meta.commit.authorName","valueA":"Miguel Langarano","valueB":"Miguel Langarano","isEqual":true},{"path":"data.meta.commit.message","valueA":"fixes to cypress cloud and tests\n","valueB":"added throw error test\n","isEqual":false},{"path":"data.meta.commit.sha","valueA":"47940f2c307da402fbad71aacddff959be45ef32","valueB":"25ed7c8161f4a9f228557d80e3e56d3bb3b40062","isEqual":false},{"path":"data.meta.platform.osName","valueA":"darwin","valueB":"darwin","isEqual":true},{"path":"data.meta.platform.osVersion","valueA":"22.5.0","valueB":"22.5.0","isEqual":true},{"path":"data.meta.platform.browserName","valueA":"Electron","valueB":"Electron","isEqual":true},{"path":"data.meta.platform.browserVersion","valueA":"106.0.5249.51","valueB":"106.0.5249.51","isEqual":true},{"path":"data.specs[0].groupId","valueA":"run-compat-test-2023-09-14T03:08:06.912Z","valueB":"run-compat-test-2023-09-14T03:52:51.461Z","isEqual":false},{"path":"data.specs[0].spec","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"data.specs[0].instanceId","valueA":"z7j802NHTjwc","valueB":"fdXzcLKZYTrL","isEqual":false},{"path":"data.specs[0].claimedAt","valueA":"2023-09-14T03:08:10.557Z","valueB":"2023-09-14T03:52:55.404Z","isEqual":false},{"path":"data.specs[0].completedAt","valueA":"2023-09-14T03:08:30.994Z","valueB":"2023-09-14T03:53:16.594Z","isEqual":false},{"path":"data.specs[0].machineId","valueA":"wxZyenuJ37lK","valueB":"Biln0UhchSnD","isEqual":false},{"path":"data.specs[0].worker","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[0].results.videoUrl","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/z7j802NHTjwc_6fo5obvZCLP4.mp4?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=mfomHSzuemmZJE~VDR~KhO~h-rCAcNG2rksWBGvKmyyafX7N7-j2adon-bhB9qjC9GDNW6aFlRw9krKo6nAitVE6ofOVKz8u306EluMrAbxfZ5x3ca6wxAOix46c8o1iVb3f27S6mqglA5hm-BATyJ3kN51iGU8KaoPtdSjpSzQuGmIxRQuSjc5JobpyvIFR3~rFYRuby5Me1tPh7wwBiVpXKT~queLQmXL46POdhzV~obZa9rW9iJf2AKWhiHh-oriJvrgZsjspQnGMdAmhiJzMZzLeaa3xqEbgnx05Z4ySrsax9S6i3q2voTXu1ydkL4H1odF4VpfInwO1Wnr5rg__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/fdXzcLKZYTrL_3jASkGr6HmZB.mp4?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=V6~VDQ7OXpKqJsm0hTXtBFEGdfgzwErmElIby7iT~WPcB~4WK6WenUwqC5KYLQnbIZVBdcfVuda20EnUgy91WYBoXyUY0VBnNwrLJB~WNv7zfjlz3dlBcxuBG00mQvnfnwqEsSwzTqFrXd55WOI6axQH-VlqVQ1fxTkttsmHbDWBIvuZAjAmZAI09sDgBhROhCprVut3Ha03kaBJhUXq-4uYC0dmsdBGhRMh-hgXwHRJzrJutHAGEqmxKiVB5guwX0BdDVWUlYM~wS3Wzd6hKTdzolXuGm-cCylCId-BIiohQr3dmAT~g-rhkJuxaLb7gL5wFdcIwmVHNR2p-DVWHg__","isEqual":false},{"path":"data.specs[0].results.stats.duration","valueA":13634,"valueB":14346,"isEqual":false},{"path":"data.specs[0].results.stats.endedAt","valueA":"2023-09-14T03:08:29.332Z","valueB":"2023-09-14T03:53:14.889Z","isEqual":false},{"path":"data.specs[0].results.stats.startedAt","valueA":"2023-09-14T03:08:15.698Z","valueB":"2023-09-14T03:53:00.543Z","isEqual":false},{"path":"data.specs[0].results.stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[0].results.stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[0].results.stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[0].results.stats.wallClockDuration","valueA":13634,"valueB":14346,"isEqual":false},{"path":"data.specs[0].results.stats.wallClockStartedAt","valueA":"2023-09-14T03:08:15.698Z","valueB":"2023-09-14T03:53:00.543Z","isEqual":false},{"path":"data.specs[0].results.stats.wallClockEndedAt","valueA":"2023-09-14T03:08:29.332Z","valueB":"2023-09-14T03:53:14.889Z","isEqual":false},{"path":"data.specs[0].results.screenshots[0].screenshotId","valueA":"cDx-L_FmVpnaMWdEx2had","valueB":"diAJEQN2srLMBUjgeZ7Bt","isEqual":false},{"path":"data.specs[0].results.screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[0].results.screenshots[0].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[0].results.screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[0].takenAt","valueA":"2023-09-14T03:08:20.212Z","valueB":"2023-09-14T03:53:05.049Z","isEqual":false},{"path":"data.specs[0].results.screenshots[0].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/SGZMH3JBUjws.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=nJHMP3CQyn-OE37ered0xtm6OhH9hOrVCRTmz~qHrlW6lO1FMB19QW2O75os1BsWKwxwjY0sq8BTr3-8Rudw2kkkc7QHF3XnHivYdtN9hzDqy8eVwOXpfTQ5uNFErB4eUakCe06W058wNvUHQNNJMP5uhdVt3S0Oy~GnZkNH5dRl~4nDSAxZrPgcdSyjN8SdMsB6K19xYvG2dzPMynpLmV7wXPy4zpX9TUCLE7Qtt1USjBi4lrerZNdy7WfJxh29QJ8ZPaGjPlKxVdaF5IeB5EtQ6mfp3pK3MXuU9yC8Tk396a0ZRWSzR14fskkl7AMbh8PgDkz8pxh69xiHxgiFrA__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/tUza47SEtE0c.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=mQNfKhwRV7kmnW9vNsYouelwx5F7IL8rFV2DnqZYoXzb02oYzG2hTJVDHprQum~g4YuoiXREOsBM1Swo0PF3peSdm2itJ8y1ApOxIeATnrmetu~iPazBEF8lUSUYgGDD26k0vqBvRZVdAwNPT~bO0jsZ206kG0t9RsyTKUCAqODQgvXv4J7WKmvhhVK4X9QWMtulZtc25jiCYpBW4IWXUAuL69ufR3aFYeu6pcF6srMDDatyn5-uCdrGOxaZONnY7EpuGtOm4eKMwpmUVghabEtk1DZg~vImjb31RBtV8biJSx8Eho8i0nnWdeo~TSup2jR0xYlj87Zwsk9jzznIDg__","isEqual":false},{"path":"data.specs[0].results.screenshots[0].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[0].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[0].size","valueB":347345,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[0].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[0].duration","valueB":284,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].screenshotId","valueA":"PZQ2i_jN5Xl8PpStzK7-J","valueB":"2XD1qkX-Bq___FcQyBTEM","isEqual":false},{"path":"data.specs[0].results.screenshots[1].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[0].results.screenshots[1].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[0].results.screenshots[1].testAttemptIndex","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[0].results.screenshots[1].takenAt","valueA":"2023-09-14T03:08:24.667Z","valueB":"2023-09-14T03:53:10.125Z","isEqual":false},{"path":"data.specs[0].results.screenshots[1].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/P5bpu7aSXswh.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=peP0Ac7nOIuORyJac-azv9VrsyIuLQdWduofBDaUJdqEoH6KoLHuKdB8PBVq8e7Mv4oxFmk1nGFq-s4-TBL75cEls42EZFBw8kQO4Gcf2e-uCFyB60Uy-~1aVryIBoeIFRYLYoxesHIAXg6BCEFOSPWUpNGYrPY6yaMYTdWQQzrygNvsyHRd-PvHlYsFp-PbbY9DgAnGe4sBYn4iWt5xMFJPDlrlXSDa6LHJom3UDw5CNjCGAdgXBp9G6ltEHd0YLWKljJbhbkkotU0HckLRGyF1kSw5jGszQ2czBXmuNbUlBO5BNh5jrr7Y2EECnwizYOW~hCeEIqkSndAZSQ6mfA__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/gy5201yXip0k.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=ILJd6j0lhnrZH8q7i23JzbYLtTtDhj9h-iKQ0YKzX1j4KybB-eWc41lSMh61EdMVjySKAfeUHu13-4T9M9gojHIV7HgIeFrnrXrT-ye4qa4f8IzfTFseFLYihSljRgWo6f~or-aS9jE1QQoGZTiN6X4KgsLJmWo6RobZNInSg13qr-o-UTmvGkbte3mxciSwVfRRU8pb3g5Ad1evPI-0APn0ytak7lQhd8Eu1dfM2DPF~wdyX0z1Uy9oXqeOIC5eWFQ8dE0wBGgjhUtrH4FZCHvihs4mfgJLt4dk3mBpH3Iv9S8Ll0tzkGnzXir5gHdcHpWMBRpmbLWSHfNrGShz8g__","isEqual":false},{"path":"data.specs[0].results.screenshots[1].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[1].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[1].size","valueB":363028,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[1].duration","valueB":209,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].screenshotId","valueA":"wXJS6Ile88HN9OEE0hEKu","valueB":"NheEGgqfTAz9TKqLHh5-K","isEqual":false},{"path":"data.specs[0].results.screenshots[2].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[0].results.screenshots[2].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[0].results.screenshots[2].testAttemptIndex","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[0].results.screenshots[2].takenAt","valueA":"2023-09-14T03:08:29.064Z","valueB":"2023-09-14T03:53:14.573Z","isEqual":false},{"path":"data.specs[0].results.screenshots[2].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/x2gVh7g8vt5v.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=llUX-gN3ELjzCJ1kFyWSKfLorgmfUnP3f9G~XPOiG~CRx~PA-~TgyzLHDtzGnnzKFUkNgE5-QnAXnfa7pv5NVqWtkGgDs3E9C3RoMu1FGIfzL38AKgtCCk4wdhD259N1ErF9WacCPrYenQNVR1LKajK8E0-7nm-62My62sTxm8WUPNpoQA9DtOvHcQGZi5Zu2nD4KeyKE7NSBJ1L-e748NYo4KDaeG~EzuW62JO9qOEzfKma9zS0Eanq0~4-Nz0W6lg4U41pzFn19CYbvS6Sw4NryFyiqjOLJYWLtX~L301DQumfcPpQlbsp19ve4AOAfxcDgpMfDR3NZtkwJAknBw__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/NjyQrubO5SwF.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=FWIXmsmsNBZRa1tIGkHluJE9kK-9D4cfaURY~AXCeHNK3giE1wV00AXnt6wCInlPM8pNVj1~rmPxgiLwpyqE3FkhM4tf7CPAVccv2ogqnVB~-Rhp4Jiwku5-KjrQ9~PiOjkar6XZ3qzWAJfH3VFY5LdOLlvx-GDZW4B~MMUinY6QMk0mBpVa6~6Hvme2kZjRPnmPPg2m~Bm9Lo0WWZyNDuAMW8Q7NBPkMQ-Ke8WHaeoPEPzPzRUy2DYEoIJFy9fPvT9N45-iz0qs6zY~UpPXkoZJpJeQZIX56XbB3rrcVTGIfnpWUdeDcZOTKnZVYD7X84Zunoiy9AUfHKuQjuUoyw__","isEqual":false},{"path":"data.specs[0].results.screenshots[2].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[2].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[0].results.screenshots[2].size","valueB":362832,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.screenshots[2].duration","valueB":237,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[0].results.exception","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[0].results.flaky","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].groupId","valueA":"run-compat-test-2023-09-14T03:08:06.912Z","valueB":"run-compat-test-2023-09-14T03:52:51.461Z","isEqual":false},{"path":"data.specs[1].spec","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"data.specs[1].instanceId","valueA":"Eg2rmIdn70Ts","valueB":"xx0otRDoP5yw","isEqual":false},{"path":"data.specs[1].claimedAt","valueA":"2023-09-14T03:08:10.587Z","valueB":"2023-09-14T03:52:55.432Z","isEqual":false},{"path":"data.specs[1].completedAt","valueA":"2023-09-14T03:09:04.492Z","valueB":"2023-09-14T03:53:46.048Z","isEqual":false},{"path":"data.specs[1].machineId","valueA":"wxZyenuJ37lK","valueB":"Biln0UhchSnD","isEqual":false},{"path":"data.specs[1].worker","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[1].results.videoUrl","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/Eg2rmIdn70Ts_PcsPXAa3iwUd.mp4?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=HJbeqdzm11n6RJ0GNKE8q~EQksTZkHYPC06gjROgkhX9L2Yo~uIooqdrHPtApSUfjwnmk9kn4CRn0Qv0L29vLVT1sL4GOTjOp5wMSZt1BcG7Lx7lFDn4Ytvgm6HdWF5iswykL18GpIeuKnQub7KC~LyNWMUku8qMsoXkzl2DtYRTQQZK4qtWPbEC9jl~DR4ePfo8a9ckhDTqYT0cgy~asCUc3kJFH8kxbPFmr-1dT-EAMktTxTeROF8Y98uhnnyirREuhyBNdKts67SASNfOsHvtRz~qbD07HrESZoq8HUhykLZ~NFe2gJy0xJBMFB3Jae2lT3skhxtVDEJOqdUtqA__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/xx0otRDoP5yw_Pl369tmA1QoX.mp4?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=sEZ4r40gaDQ0r6nS40r0tb98LCkzd507v3CHPXN67COO0F-493M1B2gdfdz8y0CeAlytX525P~Kwui70aN9bv0I~g6mpuXi0vHbV0VeAiJAoC35oMK3F7of10YWtrXDqevZbUB8ooiiVBpQB59GL5~gYxv6NiK61YlvuVvPDyn6Bw~h8ER3Nt2NZeIv0GfpriFbWQEbBajI35WG9O8~eo5VAsU8psA-LVC7z4KFkQObOUCnQrorNabR17nIRmTBVtyE1RjQx7a0wzbQ0j23NIy7yJ1dTOjEwmUjmbgv1JorzYoxsWmSyJwbC3NwvpY2-KW6x3rhthBnoF2JaAyZnNA__","isEqual":false},{"path":"data.specs[1].results.stats.duration","valueA":18120,"valueB":18348,"isEqual":false},{"path":"data.specs[1].results.stats.endedAt","valueA":"2023-09-14T03:09:02.909Z","valueB":"2023-09-14T03:53:44.443Z","isEqual":false},{"path":"data.specs[1].results.stats.startedAt","valueA":"2023-09-14T03:08:44.789Z","valueB":"2023-09-14T03:53:26.095Z","isEqual":false},{"path":"data.specs[1].results.stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[1].results.stats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[1].results.stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[1].results.stats.tests","valueA":3,"valueB":3,"isEqual":true},{"path":"data.specs[1].results.stats.wallClockDuration","valueA":18120,"valueB":18348,"isEqual":false},{"path":"data.specs[1].results.stats.wallClockStartedAt","valueA":"2023-09-14T03:08:44.789Z","valueB":"2023-09-14T03:53:26.095Z","isEqual":false},{"path":"data.specs[1].results.stats.wallClockEndedAt","valueA":"2023-09-14T03:09:02.909Z","valueB":"2023-09-14T03:53:44.443Z","isEqual":false},{"path":"data.specs[1].results.screenshots[0].screenshotId","valueA":"7BuMQAy7Mz50jFTLTi9yy","valueB":"93w4h82VCC2K27FUF2LKy","isEqual":false},{"path":"data.specs[1].results.screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[1].results.screenshots[0].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[1].results.screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[0].takenAt","valueA":"2023-09-14T03:08:48.985Z","valueB":"2023-09-14T03:53:30.465Z","isEqual":false},{"path":"data.specs[1].results.screenshots[0].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/zH49ep4qJlp3.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=bg41NId0Qvr5GbN6nh5GBLsM5odVN6X9X7QwA1nRV2HId0N-UUCrmp9kxbGNhs7jtNqBx6q2vRsDBAw9NNGLFgneAgR5lje7Ri6GcK2lPjC05yhpMa~n7DsQoOtQP-j2755Qn-hU6cpw-3jROvhiJprJCHf4Gafcn3EVsS7cZpy-NtmXddcqjd98iiSmuqaRX5dlX6jZlqn6YrR6N3av78yvmHy6j1umkQIrUVoZfIpk~qIYwhd~j9BoxHOpFHw0JDDEvJEbBBMI2TkqpyAE8oKnpreHV2fI5EinSZ3-T~x4VpGhLt7ZsPRzuJBf5lHkxf29NxevkHKq2Qd4-R5tpg__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/sj5oEw67tr6f.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=QZY4vsdY0Rh~J3k7Abo~UgrGiX33~qRyhUtANJuwnGmi2~cpncR5MLyVwsiKqiIyy1KbED1RNqKDSy6nil-qyZJkQ056pDoWKgN~NnyrbOLeYyMzylVAGy0dZaBmxKpaD0GfOxbEqFbp1hhay1sJ6oSG5GlWB2C2N9P1z~AZu0MmSH2cz8FLqYsG9HeAzO~wjlcOgNwXlA2hq2h9NnbjuArOsruqe-2d5uGfPSjMI2aMHH9cjXJcbwl30xA9lQtWTqDVXuZMooSnalye-ScW1fuzODx6Rh8Leob~ALL0ThKK7t5q9eiPKsPT~rXE1kSOmlaKh6xo6oagNy6YaDOFtw__","isEqual":false},{"path":"data.specs[1].results.screenshots[0].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[0].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[0].size","valueB":373963,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[0].duration","valueB":241,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].screenshotId","valueA":"XeuAuSXfpo5vJtLTmevQG","valueB":"AuE2zGILEwr_jXw2TsMaA","isEqual":false},{"path":"data.specs[1].results.screenshots[1].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[1].results.screenshots[1].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[1].results.screenshots[1].testAttemptIndex","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[1].results.screenshots[1].takenAt","valueA":"2023-09-14T03:08:53.437Z","valueB":"2023-09-14T03:53:34.931Z","isEqual":false},{"path":"data.specs[1].results.screenshots[1].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/jRccXON9Jrnx.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=qtcPYdwr7kkoWsKv93dBe-2NMm3mN7fJRnJnjHcuDlaIuDsW6Lpa3q5DJ4jI2CHQU~oWSStBKcBDY8U80Zm-aYlRTrHuPAjW2yJiMqo6SdGezTnJbtnsfHULzgDmJlFbVsQMuX7SyA3X9CY4KECpCkx3QHTDhtuHJVm86l2xQ2W2D8mBJ4HFpfJ9~y732IwmxGg2gnb3U0I1RNCNyVB~kDnyiL~wDeUJNyGIkYRYvIgxtXTDXqILghYffasp51TWOymnJcN3Fobmy3mlsKGbCzooqCYgOC~j8Wm87m72pVSF-NFJOESojKPqHcXz9-7zRkJXiEggGFzFGl-F08cNFg__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/OdnD7qux2S0O.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=m-vTDtOCwIpZ0I1NIbVCTjqUkh90fiiUoTI69-J5hQB6aoiaNMSsxIZOpdpacUb59x3IvxyRNObiNKHJT2voUg4SeFqVPJtX3TWvcAJ0RGX7jExgi8otY8LRnpYhkhpZOCZgBCQQQoiKHmeKftTmTqu6Ljd49pFucRPxbnSCvPbPUUjVOVLVyUy4R6spQCPg6ialj~Vru8n8ClL8XlCtb6EE4lLib~Jw0rM~z3Skx956RMHa6teGnUqmhcBcSDaiuC4anjDUp-DaeTfBgorg31SwYYTDK~4PbBdSV60CCnnVOhITxFk6Oo26ekPdrZgaEitsHUrdVV5xuE8NJ4rzrA__","isEqual":false},{"path":"data.specs[1].results.screenshots[1].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[1].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[1].size","valueB":375260,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[1].duration","valueB":223,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].screenshotId","valueA":"kBb1BiR3uYRD8hNRGMLVk","valueB":"d8ToZpHHQVBWo_KCXwRNB","isEqual":false},{"path":"data.specs[1].results.screenshots[2].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[1].results.screenshots[2].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[1].results.screenshots[2].testAttemptIndex","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[1].results.screenshots[2].takenAt","valueA":"2023-09-14T03:08:57.842Z","valueB":"2023-09-14T03:53:39.342Z","isEqual":false},{"path":"data.specs[1].results.screenshots[2].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/aFOWLL0ADGhi.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=ru3PsE~uCSyJf2pBejMjGMhBNNMgqw11NtdHLNXSipBXk62-Fb4OdJNhdCKamkaysrg9D8lhUwW-tmZzO59Ps67~s27J5gkAiGowHee2FlZe0dH6bwPaZ4JU2dh-R1OFx4zbMVSG7h4tRHwm2NPR35SQ9wPd~8jgKVA5nLe-Jlcjox50DnVz78yVApQxqA893qEao26pwF4aMHepZrKYS9iwgJzGmke~M6liYKHCF-lyvw-fKlxO0DIrACavR6diK0rbzXjxbVKEanOLJ5-j3HBNnKBlt1HH2E~slQC6-py9-Dsq-fyn31rsdLvMihJ9oPqzCXXRuLWuoYF6N-eMeA__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/AfIBpt04Vo8w.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=QTTiGKS2KI57Pcs4rWc~uvXBPwPjIlz2fxbZeuEgHLGofeX6fclce-F57UXWL8JBEv~7TxKHxGITG5uF4glcj0UwPMH3YXOOrPwEo0blgUuetjVMo6LyrNHvuagXLsbwpWPyFpO6gIklQoX7EpkcSd6IyTgFmwcDm~ilEZ9Bvfs2cn3u35VYqVhqmCGmTZ3wEkqrj~KPzYbZevWibBJyVpFK9ZgweGXQEnNlHzSRfoBVLCzUvbXUa3ujLcomvF4MXM7yGoo3Wgy0~Jvzcvv36FDSimo2eXrcKEgrUtnvLdAe~O1fUQAQPa1vdoMJKSK9gSdZqeCu4Fndmvskc3F4RA__","isEqual":false},{"path":"data.specs[1].results.screenshots[2].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[2].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[2].size","valueB":376481,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[2].duration","valueB":209,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].screenshotId","valueA":"AJIYiV9KcLXvJK_0ixljj","valueB":"OFdIFK9wOabNUseOYZCif","isEqual":false},{"path":"data.specs[1].results.screenshots[3].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[1].results.screenshots[3].testId","valueA":"r2","valueB":"r2","isEqual":true},{"path":"data.specs[1].results.screenshots[3].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[3].takenAt","valueA":"2023-09-14T03:09:02.403Z","valueB":"2023-09-14T03:53:43.887Z","isEqual":false},{"path":"data.specs[1].results.screenshots[3].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/bAgprcJAWnLR.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=VzRBTtiwdUUWOwggcZjEZBfhBAqpnnnanGY0ibeUSmKUWnX9BVGUrwgQ2TROQ0qdXOPabNAk~cCBqPJmanLV47BWPDBuvCPEnJC83jT1w1Cu9Lsw8hKVWW1jKtlTUUv1FluL~DXpnDSlbqJAWILzx-kq2ODWOCc58iAFQEDpgiJqXtx89ZeDoiow4zTC6eC1wff5fidRY4vyGvvHMEMIM3B8O3pxz5nBfjs2I-S0STOeda1YCVsCjqKV6yjYt271WwFuhJHxFtABRK2n8WC5YGsJurb481pH~9K20xjfvJ1elEFWIiHyWXtule5O5cjyhgDOCClyE1UWmVBnXtWxxg__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/HLMkTXqc0m2u.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=tVFRIzCL1lmtIoiE1NY6NCuOTb7xumxAd-VqyJTGb81zFLorZ1dvdzkYSjuT1FZajnhkwdX-cVeP5-7pqmuIulvDKIR4wFwUehWwvX1cSd6DCCUbzRJ~C6-kam3f19ktQeLmW19wD3HEyW1wYBTu3aEjOUs-dVDMoj-GnaiUKrM7MjLfsFWZT73SNT8YQd6lh86aOzKM7LcxitxtWgqS~pgsXrTSvr4pFhSUTO8Hf6QJAfCrmgB-cr9mwhYGrO2YxV2fB78GQ00LJ3EdPnOc-qZsfSzL5axjCI~QjroQNXRKcv~dK6K07Phv3YhkEn1N~GPkru~er6CTqXF6-DFOVQ__","isEqual":false},{"path":"data.specs[1].results.screenshots[3].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[3].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[1].results.screenshots[3].size","valueB":375772,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.screenshots[3].duration","valueB":229,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[1].results.exception","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[1].results.flaky","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[2].groupId","valueA":"run-compat-test-2023-09-14T03:08:06.912Z","valueB":"run-compat-test-2023-09-14T03:52:51.461Z","isEqual":false},{"path":"data.specs[2].spec","valueA":"cypress/e2e/c.spec.js","valueB":"cypress/e2e/c.spec.js","isEqual":true},{"path":"data.specs[2].instanceId","valueA":"jvImfMz5D31v","valueB":"uAHXfRd3z1Gk","isEqual":false},{"path":"data.specs[2].claimedAt","valueA":"2023-09-14T03:08:10.579Z","valueB":"2023-09-14T03:52:55.425Z","isEqual":false},{"path":"data.specs[2].completedAt","valueA":"2023-09-14T03:08:43.777Z","valueB":"2023-09-14T03:53:25.403Z","isEqual":false},{"path":"data.specs[2].machineId","valueA":"wxZyenuJ37lK","valueB":"Biln0UhchSnD","isEqual":false},{"path":"data.specs[2].worker","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[2].results.videoUrl","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/jvImfMz5D31v_t4OaiRbjZM74.mp4?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=kb01SpVToqoQNBoHnt9Xrlz1D-hsOZDu00PFNi9Skv6sP6sKoAsv9a~O9em3WBEmCP-4sRBSKl2yQfD3otqGSzxCl3C94cmgJNalIZFDpxCZUPxlkOsVoDZpaXHJyLnW-WPVq6X2kqoq0d55NL5G9MdsA6pVN-oumFQFkuCrDIZkMOx5ctQ1sV8RvNXiyO99yf4AjogCzlkwH2aaK0bwBvzRRUDq33KH0tWKy1qklKF4cQ3vU~kMTSS3wMYepNUgHYPw~nAJbib7q4iklJ6x~SNR4Q3giUmgpSs6aZT7UPNsMtoo1xQ7FNfR587u39gyQzuxfLdppBACpJYojZ0FLw__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/uAHXfRd3z1Gk_4kMgrxfVxu4v.mp4?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=TVu9lYrOSSfK~ya0RAcB25vTHvwG0AZcdWYYrnJVJxbJvoDXfIy1pT06rqK~dSUA1s5x8LMGqtLfbTNFuNkuyZetAV742sXKQ7iWG1SFNJXUWyOwZkr2rI-EzcWaMWaqpJj19do3BijUQ86HCNqdJJvPt5ukCROI8c115PfjazDlbhsVwygo2Y3GfU~IcWVsmeYlg3J7DwxvzTavHhbzQxGzn3hbJg63PTiJoSMXa516ikl1wAvIFbyapuzQXcioHArZ-phSthjSIWwxcR-AcnxIZjAOHW9ndYpIP8CEWr4RDwFtpLQXkyXNyM70kVdSyiR8IgzzDzAi17YgN2nIBQ__","isEqual":false},{"path":"data.specs[2].results.stats.duration","valueA":68,"valueB":58,"isEqual":false},{"path":"data.specs[2].results.stats.endedAt","valueA":"2023-09-14T03:08:42.351Z","valueB":"2023-09-14T03:53:23.768Z","isEqual":false},{"path":"data.specs[2].results.stats.startedAt","valueA":"2023-09-14T03:08:42.283Z","valueB":"2023-09-14T03:53:23.710Z","isEqual":false},{"path":"data.specs[2].results.stats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[2].results.stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[2].results.stats.pending","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[2].results.stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[2].results.stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[2].results.stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[2].results.stats.wallClockDuration","valueA":68,"valueB":58,"isEqual":false},{"path":"data.specs[2].results.stats.wallClockStartedAt","valueA":"2023-09-14T03:08:42.283Z","valueB":"2023-09-14T03:53:23.710Z","isEqual":false},{"path":"data.specs[2].results.stats.wallClockEndedAt","valueA":"2023-09-14T03:08:42.351Z","valueB":"2023-09-14T03:53:23.768Z","isEqual":false},{"path":"data.specs[2].results.exception","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[2].results.flaky","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].groupId","valueA":"run-compat-test-2023-09-14T03:08:06.912Z","valueB":"run-compat-test-2023-09-14T03:52:51.461Z","isEqual":false},{"path":"data.specs[3].spec","valueA":"cypress/e2e/d.spec.js","valueB":"cypress/e2e/d.spec.js","isEqual":true},{"path":"data.specs[3].instanceId","valueA":"QwZdd7RO1TVQ","valueB":"gNlNTVGKE2pT","isEqual":false},{"path":"data.specs[3].claimedAt","valueA":"2023-09-14T03:08:10.572Z","valueB":"2023-09-14T03:52:55.418Z","isEqual":false},{"path":"data.specs[3].completedAt","valueA":"2023-09-14T03:08:40.920Z","valueB":"2023-09-14T03:53:22.880Z","isEqual":false},{"path":"data.specs[3].machineId","valueA":"wxZyenuJ37lK","valueB":"Biln0UhchSnD","isEqual":false},{"path":"data.specs[3].worker","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[3].results.videoUrl","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/QwZdd7RO1TVQ_HZQ7rUPEn6nX.mp4?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=UHY02uaM8~7c6t2apZjCWRieCxP1~tZDpwp9aMx0zEUuoHjbvYq5vXU4T-6Vlrxv20320sYm1Z75~j6Sqk0iaVr-5dqwYOza8FkZvZqwlX7yitz8OgBvJN91AZc25nMnjJX1deugAqFmmiElODqLxKxn4bzCW3LchoD0IcBa8FXXsvvLHv~47OBlu1N6NfSAhimP--u10uOjf40Lel~TCmCcghaaqThyCFQiqOVjiqt6rnRYrim9rCSvco64JnntbGAjgiHiMbfFI8NCYLccELQpiY5xlzA0fialVuUE6EzYup4MM0k4iA3biresGS3omZnrXlqOi1EGmfdm2CBMNg__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/gNlNTVGKE2pT_WBwvKhHNdHBM.mp4?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=GFZMO4pa-YgNi8WshvAI1KknQpi5-oP~7~MjSCDt2i4TSQ9rBjpbLiNMLh0Bmwg3KANx4QDbDjjy2Scteb6QU6HX-SOf3YBmWveb5pDfLZrWbA~qqxlP14lRQJD9GHJ6eVKxRrt1w3-EVc7HKV7JyhWQCMom2cRuOHOJqalM5xeW0x15GASTzztdMfBxM7l5Gi5yV66k8hmpZkQzvErjBhZdCkQTTSVL30DXMtsMB6zPh0bLfmhRdZ~i8uBv6q4iCDfM8szoOBeESLGomNQ7GOlaODjyHLFTPk9wWLLAZlUY1IA9qvvinKw1aSA1fA4KSzcPoGGckPoiq~sOg9pxKg__","isEqual":false},{"path":"data.specs[3].results.stats.duration","valueA":1120,"valueB":1160,"isEqual":false},{"path":"data.specs[3].results.stats.endedAt","valueA":"2023-09-14T03:08:39.327Z","valueB":"2023-09-14T03:53:21.287Z","isEqual":false},{"path":"data.specs[3].results.stats.startedAt","valueA":"2023-09-14T03:08:38.207Z","valueB":"2023-09-14T03:53:20.127Z","isEqual":false},{"path":"data.specs[3].results.stats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.stats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[3].results.stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[3].results.stats.tests","valueA":2,"valueB":2,"isEqual":true},{"path":"data.specs[3].results.stats.wallClockDuration","valueA":1120,"valueB":1160,"isEqual":false},{"path":"data.specs[3].results.stats.wallClockStartedAt","valueA":"2023-09-14T03:08:38.207Z","valueB":"2023-09-14T03:53:20.127Z","isEqual":false},{"path":"data.specs[3].results.stats.wallClockEndedAt","valueA":"2023-09-14T03:08:39.327Z","valueB":"2023-09-14T03:53:21.287Z","isEqual":false},{"path":"data.specs[3].results.screenshots[0].screenshotId","valueA":"zHKHE1RI8pA4tbHm9Cbsf","valueB":"-yeNPTnbUs8AJfbdDMFWQ","isEqual":false},{"path":"data.specs[3].results.screenshots[0].name","valueA":"internal-assert-screenshot","valueB":"internal-assert-screenshot","isEqual":true},{"path":"data.specs[3].results.screenshots[0].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[3].results.screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.screenshots[0].takenAt","valueA":"2023-09-14T03:08:38.441Z","valueB":"2023-09-14T03:53:20.414Z","isEqual":false},{"path":"data.specs[3].results.screenshots[0].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/01AmZyYk7Zg4.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=FXZSgNJ4R06cVGBQRPX6o0JKiQ7HcdOReTE15GL9TqFxn5fRm4tVZ7Sr5mO3iW93EwNTzAuqQf2NQTWl1uXAYLEofD49S8ZeW-cnQ0a8b2TFuBtsv1-omV2PAV7dZNUyDywM0OXYZGHrTsIfi1CZ3SX00xtXJEZsjg8LMYEJ0bNU5BvOrYqjSJu4OgaJudf6CqkgaQeNz0V8oHkKCtMEZzr3oucA7qJcUDIO5lMkUdrUwUt~aXcfJJBStmc7NTOdXWP-BhehO8UDEyI3EcYc1~dq6a-9EPIL9qCYtNrSq6gqQh6HdaJyxDy2t5XJ5d1dm6Gl8QxCoUtqU-IJoxqqug__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/BLQniwl8oRqi.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=QNdF-ti79lKr6F6p~wicj4N3lvNzX4Oxz3X11vqiYC5SbjRq1Fo4nWrR1Ol3Ipy1wTn6ZJauUcKnIUWcPkYza3lbWIE3fdSWk7euP2SD2ZKkAumPrYg0MbxJ4cFrsZUE0-slIpHyqxlTWI7-jGAxBR39AkpX687xv1BYrs4xthsfEDdTYaosPB6NVJxindBjzrt4TCYH6scYY1fwdj6OiPwt9Y5KlPmbXJG1dxYI5kwLX6yRyn3lxemRiofOWfeJbbRXtRQiUqDWJqmubW1kVTdLRv5GxbkIYo-L994OeRWOAHKlTIP19zo92obFtG-FzWjzT-NlEw5ikDQzNoR00Q__","isEqual":false},{"path":"data.specs[3].results.screenshots[0].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.screenshots[0].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[3].results.screenshots[0].size","valueB":234575,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.screenshots[0].dimensions","valueB":{"width":2000,"height":1320},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.screenshots[0].multipart","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.screenshots[0].pixelRatio","valueB":2,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.screenshots[0].specName","valueB":"d.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.screenshots[0].scaled","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.screenshots[0].duration","valueB":711,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[3].results.exception","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[3].results.flaky","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[4].groupId","valueA":"run-compat-test-2023-09-14T03:08:06.912Z","valueB":"run-compat-test-2023-09-14T03:52:51.461Z","isEqual":false},{"path":"data.specs[4].spec","valueA":"cypress/e2e/e.spec.js","valueB":"cypress/e2e/e.spec.js","isEqual":true},{"path":"data.specs[4].instanceId","valueA":"TBKBczNxaQ7U","valueB":"KDnMpYjhOJyK","isEqual":false},{"path":"data.specs[4].claimedAt","valueA":"2023-09-14T03:08:10.565Z","valueB":"2023-09-14T03:52:55.411Z","isEqual":false},{"path":"data.specs[4].completedAt","valueA":"2023-09-14T03:08:36.822Z","valueB":"2023-09-14T03:53:19.377Z","isEqual":false},{"path":"data.specs[4].machineId","valueA":"wxZyenuJ37lK","valueB":"Biln0UhchSnD","isEqual":false},{"path":"data.specs[4].worker","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[4].results.videoUrl","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/TBKBczNxaQ7U_JK86Uy1mLP9R.mp4?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=b3K~za0~nRf7udNcJk5fSR-oyo2luMvbq56tbMzzcfQZhNWioHs9roGL~7Gc7Cfrs23Xv5fUWAv2nBOh~fAURAo2NFgJw-Un3HdVkLDaPO8h388hnQnulsTnJ-kkmOGmFZelnYUk96u-ugkamzvTRHiYL5bE~RwbQn9DVvNMYO6Rs5l3ELFdshsf5Waxk~VYr6xI1PB5qWXQGpyd1Oo0wJ4QlL2UXk2xBcd1Ie9Kc0FsfJoYWllr67-Awlw6d-6kn9E~HOjitRQlVi4Y7rENrHOU5rQ8Ops~~fr27VcKZlKyWPVpixOUWBYTjVZ5bkk~zhS5BPRDMmYgYX8Im47-~w__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/KDnMpYjhOJyK_c7TwdVCAqFJz.mp4?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=SOhUzp0gO0dFgxifkc-RnLKEE9QrVtWfzk4GhHqn7Elpbi1m5DUW4tBy-9L4wcpxO2osVY3iFkmhSF4twVGAz~UDEURgS2RVd44~xALiVeD~cgAVQVS-SpYiiOpLDgM9gx4JbW09vIleIom1FXyuDoKyxlzY8fgcTjomB1M0bXJ~vHpQHmiMylsOJj2Urf0p~sB2ZJFe4UT4xWo-qWR5oskaxHMmVg6CIQPokC7Bk10XcH4y6HlbvuPDVARxHUtrAh2G~VlBYOUsB5jqu~3x0QSTlPsN2lVzLMCrYYs-cEP3QNZp4Swa2Wi3e40OFytDb9pwO4NuclQb9-dMd3eJYw__","isEqual":false},{"path":"data.specs[4].results.stats.duration","valueA":517,"valueB":519,"isEqual":false},{"path":"data.specs[4].results.stats.endedAt","valueA":"2023-09-14T03:08:35.218Z","valueB":"2023-09-14T03:53:17.725Z","isEqual":false},{"path":"data.specs[4].results.stats.startedAt","valueA":"2023-09-14T03:08:34.701Z","valueB":"2023-09-14T03:53:17.206Z","isEqual":false},{"path":"data.specs[4].results.stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[4].results.stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[4].results.stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[4].results.stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[4].results.stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[4].results.stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"data.specs[4].results.stats.wallClockDuration","valueA":517,"valueB":519,"isEqual":false},{"path":"data.specs[4].results.stats.wallClockStartedAt","valueA":"2023-09-14T03:08:34.701Z","valueB":"2023-09-14T03:53:17.206Z","isEqual":false},{"path":"data.specs[4].results.stats.wallClockEndedAt","valueA":"2023-09-14T03:08:35.218Z","valueB":"2023-09-14T03:53:17.725Z","isEqual":false},{"path":"data.specs[4].results.screenshots[0].screenshotId","valueA":"wrjBJ1Eo6Djd1b2trkdlT","valueB":"CYX9w7TAZo3ZNVoB38DOW","isEqual":false},{"path":"data.specs[4].results.screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"data.specs[4].results.screenshots[0].testId","valueA":"r0","valueB":"r0","isEqual":true},{"path":"data.specs[4].results.screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[4].results.screenshots[0].takenAt","valueA":"2023-09-14T03:08:34.938Z","valueB":"2023-09-14T03:53:17.434Z","isEqual":false},{"path":"data.specs[4].results.screenshots[0].screenshotURL","valueA":"https://fs.currents.dev/64af8eee5411be7416b22d5f/N1toETqNYjNK.png?Expires=1694920142&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=wZPNOHCJMsy5y9K-QTGs6ZDD-15TmI6geCx3NmZoyao9GRhWPdtGU4yDmMKn4wBsAhZUGh81IxeWGETJ1gmFGVm-nkfzOkR1ED4FbgcdmSjN8xiXUnJfXNYWwMY5TNd4-oVKSnbJBik-NETl4KrAPqT7iLNzbsD5WNHizmzEyiny09LnVGH0sQ2SoLULST3zwH24wO8vmQqjvjhVOq60l8NpdQfZauIbaYnq83UpRwk2clPzbKC-2BnGpdbGOXno6ZjRBefXJ1grEb3pcuEPlYdQ-deOHBMTHqhAEa4TOXq4B8SmDZ5oLQwDHSLwMyd9fQflyvEuWQq57IvugVQcsg__","valueB":"https://fs.currents.dev/64af8eee5411be7416b22d5f/U4yeDt6b7L57.png?Expires=1694922818&Key-Pair-Id=K1ZNDCCIZ3P4FU&Signature=O0k8YxZiqZYpdjoAa-kIQgcPuoPkfz4tDbkhqxsh8ZKMGK-SH8bO7DOP0Tpfh5fZx4oNqvlyIYG2GYm~kHEy9gKP8PzFc6rryAgk8pSgXM5N7zkwp87amMMFQu54d6EF6NopYYPBmFvxh0emNRF~wxCnlqB-UHPSjmfa3toj52JYZtRIl8Yg0BjwEpVJARg4iD7tVy7oAO~dvZ9UJQTqyIrx9Kp2szAQSH38PxtJJNuEY~-OLH5ylWxBMRpS9qiCVda5NsgHUHDCDXrU4Yzz8gto1PNDwmuSKcFDDiIGEOa~jG69iwH7IN-JVJF1oBEJJ~r7I2ofgBwWrK5KZGi2WA__","isEqual":false},{"path":"data.specs[4].results.screenshots[0].height","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[4].results.screenshots[0].width","valueA":0,"valueB":0,"isEqual":true},{"path":"data.specs[4].results.screenshots[0].size","valueB":333410,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.screenshots[0].specName","valueB":"e.spec.js","isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.screenshots[0].duration","valueB":230,"isEqual":false,"note":"Does not exist"},{"path":"data.specs[4].results.exception","valueA":null,"valueB":null,"isEqual":true},{"path":"data.specs[4].results.flaky","valueA":0,"valueB":0,"isEqual":true},{"path":"data.completionState","valueA":"COMPLETE","valueB":"COMPLETE","isEqual":true},{"path":"data.status","valueA":"FAILED","valueB":"FAILED","isEqual":true}] \ No newline at end of file diff --git a/e2e/cypress-13-demo/validation-results/cypress-cloud-validation.json b/e2e/cypress-13-demo/validation-results/cypress-cloud-validation.json new file mode 100644 index 0000000..d72c3f0 --- /dev/null +++ b/e2e/cypress-13-demo/validation-results/cypress-cloud-validation.json @@ -0,0 +1 @@ +[{"path":"totalDuration","valueA":33459,"valueB":34431,"isEqual":false},{"path":"totalSuites","valueA":5,"valueB":5,"isEqual":true},{"path":"totalPending","valueA":1,"valueB":1,"isEqual":true},{"path":"totalFailed","valueA":3,"valueB":3,"isEqual":true},{"path":"totalSkipped","valueA":0,"valueB":0,"isEqual":true},{"path":"totalPassed","valueA":4,"valueB":4,"isEqual":true},{"path":"totalTests","valueA":8,"valueB":8,"isEqual":true},{"path":"runs[0].stats.duration","valueA":13634,"valueB":14346,"isEqual":false},{"path":"runs[0].stats.endedAt","valueA":"2023-09-14T03:08:29.332Z","valueB":"2023-09-14T03:53:14.889Z","isEqual":false},{"path":"runs[0].stats.startedAt","valueA":"2023-09-14T03:08:15.698Z","valueB":"2023-09-14T03:53:00.543Z","isEqual":false},{"path":"runs[0].stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"runs[0].reporterStats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].reporterStats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].reporterStats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].reporterStats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].reporterStats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].reporterStats.start","valueA":"2023-09-14T03:08:15.700Z","valueB":"2023-09-14T03:53:00.548Z","isEqual":false},{"path":"runs[0].reporterStats.end","valueA":"2023-09-14T03:08:29.345Z","valueB":"2023-09-14T03:53:14.896Z","isEqual":false},{"path":"runs[0].reporterStats.duration","valueA":13645,"valueB":14348,"isEqual":false},{"path":"runs[0].spec.fileExtension","valueA":".js","valueB":".js","isEqual":true},{"path":"runs[0].spec.baseName","valueA":"a.spec.js","valueB":"a.spec.js","isEqual":true},{"path":"runs[0].spec.fileName","valueA":"a","valueB":"a","isEqual":true},{"path":"runs[0].spec.specFileExtension","valueA":".spec.js","valueB":".spec.js","isEqual":true},{"path":"runs[0].spec.relativeToCommonRoot","valueA":"a.spec.js","valueB":"a.spec.js","isEqual":true},{"path":"runs[0].spec.specType","valueA":"integration","valueB":"integration","isEqual":true},{"path":"runs[0].spec.name","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].spec.relative","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].spec.absolute","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[0].video","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/a.spec.js.mp4","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/a.spec.js.mp4","isEqual":true},{"path":"runs[0].shouldUploadVideo","valueA":true,"valueB":true,"isEqual":true},{"path":"runs[0].hooks[0]","valueA":{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].hooks[1]","valueA":{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].hooks[2]","valueA":{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].hooks[3]","valueA":{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].hooks[4]","valueA":{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[0].tests[0].title[0]","valueA":"Failing test with 2 attempts","valueB":"Failing test with 2 attempts","isEqual":true},{"path":"runs[0].tests[0].title[1]","valueA":"should try 2 times","valueB":"should try 2 times","isEqual":true},{"path":"runs[0].tests[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[0].tests[0].body","valueA":"() => {\n cy.wrap(false).should('be.true');\n }","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":true},{"path":"runs[0].tests[0].displayError","valueA":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","isEqual":true},{"path":"runs[0].tests[0].attempts[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"Timed out retrying after 4000ms: expected false to be true","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.stack","valueA":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","valueB":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.line","valueA":5,"valueB":5,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.originalFile","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.relativeFile","valueA":"e2e/cypress-13-demo/cypress/e2e/a.spec.js","valueB":"e2e/cypress-13-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.frame","valueA":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","valueB":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","isEqual":true},{"path":"runs[0].tests[0].attempts[0].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.lifecycle","valueA":41,"valueB":21,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.before each[0].fnDuration","valueA":17,"valueB":20,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.before each[0].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.before each[1].fnDuration","valueA":440,"valueB":444,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.test.fnDuration","valueA":4004,"valueB":4010,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.test.afterFnDuration","valueA":297,"valueB":290,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.after each[0].fnDuration","valueA":31,"valueB":34,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":12,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].wallClockStartedAt","valueA":"2023-09-14T03:08:15.704Z","valueB":"2023-09-14T03:53:00.548Z","isEqual":false},{"path":"runs[0].tests[0].attempts[0].wallClockDuration","valueA":4845,"valueB":4787,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].videoTimestamp","valueA":2783,"valueB":5,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].startedAt","valueA":"2023-09-14T03:08:15.704Z","valueB":"2023-09-14T03:53:00.548Z","isEqual":false},{"path":"runs[0].tests[0].attempts[0].duration","valueA":4845,"valueB":4787,"isEqual":false},{"path":"runs[0].tests[0].attempts[0].screenshots[0].screenshotId","valueA":"oz3vf","valueB":"8IA1zC","isEqual":false},{"path":"runs[0].tests[0].attempts[0].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].takenAt","valueA":"2023-09-14T03:08:20.212Z","valueB":"2023-09-14T03:53:05.049Z","isEqual":false},{"path":"runs[0].tests[0].attempts[0].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed).png","isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[0].tests[0].attempts[0].screenshots[0].size","valueB":347345,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].screenshots[0].duration","valueB":284,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[0].body","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"Timed out retrying after 4000ms: expected false to be true","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.stack","valueA":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","valueB":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.line","valueA":5,"valueB":5,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.originalFile","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.relativeFile","valueA":"e2e/cypress-13-demo/cypress/e2e/a.spec.js","valueB":"e2e/cypress-13-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.frame","valueA":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","valueB":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","isEqual":true},{"path":"runs[0].tests[0].attempts[1].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.lifecycle","valueA":29,"valueB":29,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.before each[0].fnDuration","valueA":10,"valueB":10,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.before each[1].fnDuration","valueA":60,"valueB":668,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.before each[1].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.test.fnDuration","valueA":3992,"valueB":3993,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.test.afterFnDuration","valueA":230,"valueB":215,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.after each[0].fnDuration","valueA":13,"valueB":18,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":18,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].wallClockStartedAt","valueA":"2023-09-14T03:08:20.571Z","valueB":"2023-09-14T03:53:05.420Z","isEqual":false},{"path":"runs[0].tests[0].attempts[1].wallClockDuration","valueA":4356,"valueB":4918,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].videoTimestamp","valueA":7650,"valueB":4877,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].startedAt","valueA":"2023-09-14T03:08:20.571Z","valueB":"2023-09-14T03:53:05.420Z","isEqual":false},{"path":"runs[0].tests[0].attempts[1].duration","valueA":4356,"valueB":4918,"isEqual":false},{"path":"runs[0].tests[0].attempts[1].screenshots[0].screenshotId","valueA":"fllo0","valueB":"5SKdny","isEqual":false},{"path":"runs[0].tests[0].attempts[1].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].testAttemptIndex","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].takenAt","valueA":"2023-09-14T03:08:24.667Z","valueB":"2023-09-14T03:53:10.125Z","isEqual":false},{"path":"runs[0].tests[0].attempts[1].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 2).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 2).png","isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[0].tests[0].attempts[1].screenshots[0].size","valueB":363028,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].screenshots[0].duration","valueB":209,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[1].body","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"Timed out retrying after 4000ms: expected false to be true","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.stack","valueA":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","valueB":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/a.spec.js:5:19)","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.line","valueA":5,"valueB":5,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.originalFile","valueA":"cypress/e2e/a.spec.js","valueB":"cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.relativeFile","valueA":"e2e/cypress-13-demo/cypress/e2e/a.spec.js","valueB":"e2e/cypress-13-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/a.spec.js","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.frame","valueA":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","valueB":" 3 | retries: 2,\n 4 | }, () => {\n> 5 | cy.wrap(false).should('be.true');\n | ^\n 6 | });\n 7 | });\n 8 | ","isEqual":true},{"path":"runs[0].tests[0].attempts[2].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.lifecycle","valueA":50,"valueB":39,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.before each[0].fnDuration","valueA":9,"valueB":11,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.before each[1].fnDuration","valueA":58,"valueB":108,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.test.fnDuration","valueA":4000,"valueB":4001,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.test.afterFnDuration","valueA":214,"valueB":245,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.after each[0].fnDuration","valueA":18,"valueB":16,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":16,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].timings.after all","valueA":[{"hookId":"h3","fnDuration":4,"afterFnDuration":0}],"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].wallClockStartedAt","valueA":"2023-09-14T03:08:24.942Z","valueB":"2023-09-14T03:53:10.411Z","isEqual":false},{"path":"runs[0].tests[0].attempts[2].wallClockDuration","valueA":4375,"valueB":4405,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].videoTimestamp","valueA":12021,"valueB":9868,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].startedAt","valueA":"2023-09-14T03:08:24.942Z","valueB":"2023-09-14T03:53:10.411Z","isEqual":false},{"path":"runs[0].tests[0].attempts[2].duration","valueA":4375,"valueB":4405,"isEqual":false},{"path":"runs[0].tests[0].attempts[2].screenshots[0].screenshotId","valueA":"fqwko","valueB":"yjWhIO","isEqual":false},{"path":"runs[0].tests[0].attempts[2].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].testAttemptIndex","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].takenAt","valueA":"2023-09-14T03:08:29.064Z","valueB":"2023-09-14T03:53:14.573Z","isEqual":false},{"path":"runs[0].tests[0].attempts[2].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 3).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/a.spec.js/Failing test with 2 attempts -- should try 2 times (failed) (attempt 3).png","isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[0].tests[0].attempts[2].screenshots[0].size","valueB":362832,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].specName","valueB":"a.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].screenshots[0].duration","valueB":237,"isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].attempts[2].body","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[0].tests[0].duration","valueB":14283,"isEqual":false,"note":"Does not exist"},{"path":"runs[1].stats.duration","valueA":517,"valueB":519,"isEqual":false},{"path":"runs[1].stats.endedAt","valueA":"2023-09-14T03:08:35.218Z","valueB":"2023-09-14T03:53:17.725Z","isEqual":false},{"path":"runs[1].stats.startedAt","valueA":"2023-09-14T03:08:34.701Z","valueB":"2023-09-14T03:53:17.206Z","isEqual":false},{"path":"runs[1].stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"runs[1].reporterStats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].reporterStats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].reporterStats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].reporterStats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].reporterStats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[1].reporterStats.start","valueA":"2023-09-14T03:08:34.702Z","valueB":"2023-09-14T03:53:17.211Z","isEqual":false},{"path":"runs[1].reporterStats.end","valueA":"2023-09-14T03:08:35.222Z","valueB":"2023-09-14T03:53:17.730Z","isEqual":false},{"path":"runs[1].reporterStats.duration","valueA":520,"valueB":519,"isEqual":false},{"path":"runs[1].spec.fileExtension","valueA":".js","valueB":".js","isEqual":true},{"path":"runs[1].spec.baseName","valueA":"e.spec.js","valueB":"e.spec.js","isEqual":true},{"path":"runs[1].spec.fileName","valueA":"e","valueB":"e","isEqual":true},{"path":"runs[1].spec.specFileExtension","valueA":".spec.js","valueB":".spec.js","isEqual":true},{"path":"runs[1].spec.relativeToCommonRoot","valueA":"e.spec.js","valueB":"e.spec.js","isEqual":true},{"path":"runs[1].spec.specType","valueA":"integration","valueB":"integration","isEqual":true},{"path":"runs[1].spec.name","valueA":"cypress/e2e/e.spec.js","valueB":"cypress/e2e/e.spec.js","isEqual":true},{"path":"runs[1].spec.relative","valueA":"cypress/e2e/e.spec.js","valueB":"cypress/e2e/e.spec.js","isEqual":true},{"path":"runs[1].spec.absolute","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/e.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/e.spec.js","isEqual":true},{"path":"runs[1].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[1].video","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/e.spec.js.mp4","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/e.spec.js.mp4","isEqual":true},{"path":"runs[1].shouldUploadVideo","valueA":true,"valueB":true,"isEqual":true},{"path":"runs[1].hooks[0]","valueA":{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[1].hooks[1]","valueA":{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[1].hooks[2]","valueA":{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[1].hooks[3]","valueA":{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[1].hooks[4]","valueA":{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[1].tests[0].title[0]","valueA":"Should throw an error","valueB":"Should throw an error","isEqual":true},{"path":"runs[1].tests[0].title[1]","valueA":"Should throw an error","valueB":"Should throw an error","isEqual":true},{"path":"runs[1].tests[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[1].tests[0].body","valueA":"() => {\n throw new Error(\"test error\");\n }","valueB":"() => {\n throw new Error(\"test error\");\n }","isEqual":true},{"path":"runs[1].tests[0].displayError","valueA":"Error: test error\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/e.spec.js:3:10)","valueB":"Error: test error\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/e.spec.js:3:10)","isEqual":true},{"path":"runs[1].tests[0].attempts[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.name","valueA":"Error","valueB":"Error","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.message","valueA":"test error","valueB":"test error","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.stack","valueA":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/e.spec.js:3:10)","valueB":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/e.spec.js:3:10)","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.codeFrame.line","valueA":3,"valueB":3,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.codeFrame.column","valueA":11,"valueB":11,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.codeFrame.originalFile","valueA":"cypress/e2e/e.spec.js","valueB":"cypress/e2e/e.spec.js","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.codeFrame.relativeFile","valueA":"e2e/cypress-13-demo/cypress/e2e/e.spec.js","valueB":"e2e/cypress-13-demo/cypress/e2e/e.spec.js","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/e.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/e.spec.js","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.codeFrame.frame","valueA":" 1 | describe('Should throw an error', () => {\n 2 | it('Should throw an error', () => {\n> 3 | throw new Error(\"test error\")\n | ^\n 4 | });\n 5 | });\n 6 | ","valueB":" 1 | describe('Should throw an error', () => {\n 2 | it('Should throw an error', () => {\n> 3 | throw new Error(\"test error\")\n | ^\n 4 | });\n 5 | });\n 6 | ","isEqual":true},{"path":"runs[1].tests[0].attempts[0].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.lifecycle","valueA":36,"valueB":37,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.before each[0].fnDuration","valueA":10,"valueB":11,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":1,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.before each[1].fnDuration","valueA":162,"valueB":166,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.test.fnDuration","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.test.afterFnDuration","valueA":234,"valueB":235,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.after each[0].fnDuration","valueA":14,"valueB":15,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":10,"afterFnDuration":1},"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].timings.after all","valueA":[{"hookId":"h3","fnDuration":5,"afterFnDuration":0}],"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].wallClockStartedAt","valueA":"2023-09-14T03:08:34.724Z","valueB":"2023-09-14T03:53:17.211Z","isEqual":false},{"path":"runs[1].tests[0].attempts[0].wallClockDuration","valueA":477,"valueB":456,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].videoTimestamp","valueA":1223,"valueB":5,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].startedAt","valueA":"2023-09-14T03:08:34.724Z","valueB":"2023-09-14T03:53:17.211Z","isEqual":false},{"path":"runs[1].tests[0].attempts[0].duration","valueA":477,"valueB":456,"isEqual":false},{"path":"runs[1].tests[0].attempts[0].screenshots[0].screenshotId","valueA":"kbv4e","valueB":"RIhLyb","isEqual":false},{"path":"runs[1].tests[0].attempts[0].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].takenAt","valueA":"2023-09-14T03:08:34.938Z","valueB":"2023-09-14T03:53:17.434Z","isEqual":false},{"path":"runs[1].tests[0].attempts[0].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/e.spec.js/Should throw an error -- Should throw an error (failed).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/e.spec.js/Should throw an error -- Should throw an error (failed).png","isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[1].tests[0].attempts[0].screenshots[0].size","valueB":333410,"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].specName","valueB":"e.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].screenshots[0].duration","valueB":230,"isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].attempts[0].body","valueB":"() => {\n throw new Error(\"test error\");\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[1].tests[0].duration","valueB":497,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].stats.duration","valueA":1120,"valueB":1160,"isEqual":false},{"path":"runs[2].stats.endedAt","valueA":"2023-09-14T03:08:39.327Z","valueB":"2023-09-14T03:53:21.287Z","isEqual":false},{"path":"runs[2].stats.startedAt","valueA":"2023-09-14T03:08:38.207Z","valueB":"2023-09-14T03:53:20.127Z","isEqual":false},{"path":"runs[2].stats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].stats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[2].stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[2].stats.tests","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[2].reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"runs[2].reporterStats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[2].reporterStats.tests","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[2].reporterStats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[2].reporterStats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].reporterStats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].reporterStats.start","valueA":"2023-09-14T03:08:38.209Z","valueB":"2023-09-14T03:53:20.132Z","isEqual":false},{"path":"runs[2].reporterStats.end","valueA":"2023-09-14T03:08:39.330Z","valueB":"2023-09-14T03:53:21.291Z","isEqual":false},{"path":"runs[2].reporterStats.duration","valueA":1121,"valueB":1159,"isEqual":false},{"path":"runs[2].spec.fileExtension","valueA":".js","valueB":".js","isEqual":true},{"path":"runs[2].spec.baseName","valueA":"d.spec.js","valueB":"d.spec.js","isEqual":true},{"path":"runs[2].spec.fileName","valueA":"d","valueB":"d","isEqual":true},{"path":"runs[2].spec.specFileExtension","valueA":".spec.js","valueB":".spec.js","isEqual":true},{"path":"runs[2].spec.relativeToCommonRoot","valueA":"d.spec.js","valueB":"d.spec.js","isEqual":true},{"path":"runs[2].spec.specType","valueA":"integration","valueB":"integration","isEqual":true},{"path":"runs[2].spec.name","valueA":"cypress/e2e/d.spec.js","valueB":"cypress/e2e/d.spec.js","isEqual":true},{"path":"runs[2].spec.relative","valueA":"cypress/e2e/d.spec.js","valueB":"cypress/e2e/d.spec.js","isEqual":true},{"path":"runs[2].spec.absolute","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/d.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/d.spec.js","isEqual":true},{"path":"runs[2].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[2].video","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/d.spec.js.mp4","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/d.spec.js.mp4","isEqual":true},{"path":"runs[2].shouldUploadVideo","valueA":true,"valueB":true,"isEqual":true},{"path":"runs[2].hooks[0]","valueA":{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].hooks[1]","valueA":{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].hooks[2]","valueA":{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].hooks[3]","valueA":{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].hooks[4]","valueA":{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[2].tests[0].title[0]","valueA":"Passed test with screenshot, passed test with no screenshots","valueB":"Passed test with screenshot, passed test with no screenshots","isEqual":true},{"path":"runs[2].tests[0].title[1]","valueA":"should assert and take a screenshot","valueB":"should assert and take a screenshot","isEqual":true},{"path":"runs[2].tests[0].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[2].tests[0].body","valueA":"() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }","valueB":"() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }","isEqual":true},{"path":"runs[2].tests[0].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[2].tests[0].attempts[0].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].timings.lifecycle","valueA":37,"valueB":19,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[2].tests[0].attempts[0].timings.before each[0].fnDuration","valueA":12,"valueB":12,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":1,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[2].tests[0].attempts[0].timings.before each[1].fnDuration","valueA":155,"valueB":212,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].timings.test.fnDuration","valueA":735,"valueB":720,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].timings.test.afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[2].tests[0].attempts[0].timings.after each[0].fnDuration","valueA":13,"valueB":15,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].timings.after each[0].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":10,"afterFnDuration":1},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].wallClockStartedAt","valueA":"2023-09-14T03:08:38.219Z","valueB":"2023-09-14T03:53:20.150Z","isEqual":false},{"path":"runs[2].tests[0].attempts[0].wallClockDuration","valueA":980,"valueB":968,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].videoTimestamp","valueA":1209,"valueB":23,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].startedAt","valueA":"2023-09-14T03:08:38.219Z","valueB":"2023-09-14T03:53:20.150Z","isEqual":false},{"path":"runs[2].tests[0].attempts[0].duration","valueA":980,"valueB":968,"isEqual":false},{"path":"runs[2].tests[0].attempts[0].screenshots[0].screenshotId","valueA":"5n5yz","valueB":"mPoBQh","isEqual":false},{"path":"runs[2].tests[0].attempts[0].screenshots[0].name","valueA":"internal-assert-screenshot","valueB":"internal-assert-screenshot","isEqual":true},{"path":"runs[2].tests[0].attempts[0].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[2].tests[0].attempts[0].screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].screenshots[0].takenAt","valueA":"2023-09-14T03:08:38.441Z","valueB":"2023-09-14T03:53:20.414Z","isEqual":false},{"path":"runs[2].tests[0].attempts[0].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/d.spec.js/internal-assert-screenshot.png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/d.spec.js/internal-assert-screenshot.png","isEqual":true},{"path":"runs[2].tests[0].attempts[0].screenshots[0].height","valueA":1320,"valueB":1320,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].screenshots[0].width","valueA":2000,"valueB":2000,"isEqual":true},{"path":"runs[2].tests[0].attempts[0].screenshots[0].size","valueB":234575,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].screenshots[0].dimensions","valueB":{"width":2000,"height":1320},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].screenshots[0].multipart","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].screenshots[0].pixelRatio","valueB":2,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].screenshots[0].specName","valueB":"d.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].screenshots[0].scaled","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].screenshots[0].duration","valueB":711,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].attempts[0].body","valueB":"() => {\n // Assert that true is true\n cy.wrap(true).should('be.true');\n\n // Take a screenshot\n cy.screenshot('internal-assert-screenshot');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[0].duration","valueB":1008,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[1].testId","valueA":"r4","valueB":"r4","isEqual":true},{"path":"runs[2].tests[1].title[0]","valueA":"Passed test with screenshot, passed test with no screenshots","valueB":"Passed test with screenshot, passed test with no screenshots","isEqual":true},{"path":"runs[2].tests[1].title[1]","valueA":"should assert that true is true","valueB":"should assert that true is true","isEqual":true},{"path":"runs[2].tests[1].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[2].tests[1].body","valueA":"() => {\n cy.wrap(true).should('be.true');\n }","valueB":"() => {\n cy.wrap(true).should('be.true');\n }","isEqual":true},{"path":"runs[2].tests[1].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[2].tests[1].attempts[0].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.lifecycle","valueA":33,"valueB":13,"isEqual":false},{"path":"runs[2].tests[1].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.before each[0].fnDuration","valueA":6,"valueB":9,"isEqual":false},{"path":"runs[2].tests[1].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.before each[1].fnDuration","valueA":55,"valueB":54,"isEqual":false},{"path":"runs[2].tests[1].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.test.fnDuration","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.test.afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.after each[0].fnDuration","valueA":12,"valueB":12,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[2].tests[1].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":8,"afterFnDuration":1},"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[1].attempts[0].timings.after all","valueA":[{"hookId":"h3","fnDuration":4,"afterFnDuration":0}],"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[1].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[1].attempts[0].wallClockStartedAt","valueA":"2023-09-14T03:08:39.201Z","valueB":"2023-09-14T03:53:21.166Z","isEqual":false},{"path":"runs[2].tests[1].attempts[0].wallClockDuration","valueA":125,"valueB":81,"isEqual":false},{"path":"runs[2].tests[1].attempts[0].videoTimestamp","valueA":2191,"valueB":1039,"isEqual":false},{"path":"runs[2].tests[1].attempts[0].startedAt","valueA":"2023-09-14T03:08:39.201Z","valueB":"2023-09-14T03:53:21.166Z","isEqual":false},{"path":"runs[2].tests[1].attempts[0].duration","valueA":125,"valueB":81,"isEqual":false},{"path":"runs[2].tests[1].attempts[0].body","valueB":"() => {\n cy.wrap(true).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[2].tests[1].duration","valueB":120,"isEqual":false,"note":"Does not exist"},{"path":"runs[3].stats.duration","valueA":68,"valueB":58,"isEqual":false},{"path":"runs[3].stats.endedAt","valueA":"2023-09-14T03:08:42.351Z","valueB":"2023-09-14T03:53:23.768Z","isEqual":false},{"path":"runs[3].stats.startedAt","valueA":"2023-09-14T03:08:42.283Z","valueB":"2023-09-14T03:53:23.710Z","isEqual":false},{"path":"runs[3].stats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].stats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].stats.pending","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].stats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"runs[3].reporterStats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].reporterStats.tests","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].reporterStats.passes","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].reporterStats.pending","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[3].reporterStats.failures","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[3].reporterStats.start","valueA":"2023-09-14T03:08:42.285Z","valueB":"2023-09-14T03:53:23.714Z","isEqual":false},{"path":"runs[3].reporterStats.end","valueA":"2023-09-14T03:08:42.355Z","valueB":"2023-09-14T03:53:23.771Z","isEqual":false},{"path":"runs[3].reporterStats.duration","valueA":70,"valueB":57,"isEqual":false},{"path":"runs[3].spec.fileExtension","valueA":".js","valueB":".js","isEqual":true},{"path":"runs[3].spec.baseName","valueA":"c.spec.js","valueB":"c.spec.js","isEqual":true},{"path":"runs[3].spec.fileName","valueA":"c","valueB":"c","isEqual":true},{"path":"runs[3].spec.specFileExtension","valueA":".spec.js","valueB":".spec.js","isEqual":true},{"path":"runs[3].spec.relativeToCommonRoot","valueA":"c.spec.js","valueB":"c.spec.js","isEqual":true},{"path":"runs[3].spec.specType","valueA":"integration","valueB":"integration","isEqual":true},{"path":"runs[3].spec.name","valueA":"cypress/e2e/c.spec.js","valueB":"cypress/e2e/c.spec.js","isEqual":true},{"path":"runs[3].spec.relative","valueA":"cypress/e2e/c.spec.js","valueB":"cypress/e2e/c.spec.js","isEqual":true},{"path":"runs[3].spec.absolute","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/c.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/c.spec.js","isEqual":true},{"path":"runs[3].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[3].video","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/c.spec.js.mp4","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/c.spec.js.mp4","isEqual":true},{"path":"runs[3].shouldUploadVideo","valueA":true,"valueB":true,"isEqual":true},{"path":"runs[3].hooks[0]","valueA":{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[3].tests[0].testId","valueA":"r3","valueB":"r0","isEqual":false},{"path":"runs[3].tests[0].title[0]","valueA":"Ignored test","valueB":"Ignored test","isEqual":true},{"path":"runs[3].tests[0].title[1]","valueA":"should be a skipped test","valueB":"should be a skipped test","isEqual":true},{"path":"runs[3].tests[0].state","valueA":"pending","valueB":"pending","isEqual":true},{"path":"runs[3].tests[0].body","valueA":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[3].tests[0].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[3].tests[0].attempts[0]","valueA":{"state":"pending","error":null,"timings":{"lifecycle":36,"after all":[{"hookId":"h3","fnDuration":5,"afterFnDuration":0}]},"failedFromHookId":null,"wallClockStartedAt":"2023-09-14T03:08:42.308Z","wallClockDuration":42,"videoTimestamp":1167,"startedAt":"2023-09-14T03:08:42.308Z","duration":42,"screenshots":[]},"isEqual":false,"note":"Does not exist"},{"path":"runs[3].tests[0].duration","valueB":33,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].stats.duration","valueA":18120,"valueB":18348,"isEqual":false},{"path":"runs[4].stats.endedAt","valueA":"2023-09-14T03:09:02.909Z","valueB":"2023-09-14T03:53:44.443Z","isEqual":false},{"path":"runs[4].stats.startedAt","valueA":"2023-09-14T03:08:44.789Z","valueB":"2023-09-14T03:53:26.095Z","isEqual":false},{"path":"runs[4].stats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[4].stats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[4].stats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].stats.skipped","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].stats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[4].stats.tests","valueA":3,"valueB":3,"isEqual":true},{"path":"runs[4].reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"runs[4].reporterStats.suites","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[4].reporterStats.tests","valueA":3,"valueB":3,"isEqual":true},{"path":"runs[4].reporterStats.passes","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[4].reporterStats.pending","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].reporterStats.failures","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[4].reporterStats.start","valueA":"2023-09-14T03:08:44.790Z","valueB":"2023-09-14T03:53:26.099Z","isEqual":false},{"path":"runs[4].reporterStats.end","valueA":"2023-09-14T03:09:02.913Z","valueB":"2023-09-14T03:53:44.445Z","isEqual":false},{"path":"runs[4].reporterStats.duration","valueA":18123,"valueB":18346,"isEqual":false},{"path":"runs[4].spec.fileExtension","valueA":".js","valueB":".js","isEqual":true},{"path":"runs[4].spec.baseName","valueA":"b.spec.js","valueB":"b.spec.js","isEqual":true},{"path":"runs[4].spec.fileName","valueA":"b","valueB":"b","isEqual":true},{"path":"runs[4].spec.specFileExtension","valueA":".spec.js","valueB":".spec.js","isEqual":true},{"path":"runs[4].spec.relativeToCommonRoot","valueA":"b.spec.js","valueB":"b.spec.js","isEqual":true},{"path":"runs[4].spec.specType","valueA":"integration","valueB":"integration","isEqual":true},{"path":"runs[4].spec.name","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].spec.relative","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].spec.absolute","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[4].video","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/b.spec.js.mp4","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos/b.spec.js.mp4","isEqual":true},{"path":"runs[4].shouldUploadVideo","valueA":true,"valueB":true,"isEqual":true},{"path":"runs[4].hooks[0]","valueA":{"hookId":"h1","hookName":"before each","title":["\"before each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleBefore(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].hooks[1]","valueA":{"hookId":"h2","hookName":"before each","title":["\"before each\" hook"],"body":"function () {\n cy.visit(\"/\");\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].hooks[2]","valueA":{"hookId":"h4","hookName":"after each","title":["\"after each\" hook"],"body":"function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].hooks[3]","valueA":{"hookId":"h5","hookName":"after each","title":["\"after each\" hook"],"body":"() => {\n const currentTest = cy.state(\"ctx\").currentTest;\n if (currentTest) {\n handleAfter(currentTest);\n }\n}"},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].hooks[4]","valueA":{"hookId":"h3","hookName":"after all","title":["\"after all\" hook"],"body":"function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }"},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[4].tests[0].title[0]","valueA":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","valueB":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","isEqual":true},{"path":"runs[4].tests[0].title[1]","valueA":"should try 2 times","valueB":"should try 2 times","isEqual":true},{"path":"runs[4].tests[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[4].tests[0].body","valueA":"() => {\n cy.wrap(false).should('be.true');\n }","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":true},{"path":"runs[4].tests[0].displayError","valueA":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","valueB":"AssertionError: Timed out retrying after 4000ms: expected false to be true\n at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","isEqual":true},{"path":"runs[4].tests[0].attempts[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"Timed out retrying after 4000ms: expected false to be true","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.stack","valueA":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","valueB":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.codeFrame.line","valueA":6,"valueB":6,"isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.codeFrame.originalFile","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.codeFrame.relativeFile","valueA":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","valueB":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.codeFrame.frame","valueA":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","valueB":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","isEqual":true},{"path":"runs[4].tests[0].attempts[0].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[4].tests[0].attempts[0].timings.lifecycle","valueA":26,"valueB":13,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[4].tests[0].attempts[0].timings.before each[0].fnDuration","valueA":10,"valueB":16,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].timings.before each[0].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[4].tests[0].attempts[0].timings.before each[1].fnDuration","valueA":129,"valueB":294,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[0].timings.test.fnDuration","valueA":4012,"valueB":4017,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].timings.test.afterFnDuration","valueA":274,"valueB":245,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[4].tests[0].attempts[0].timings.after each[0].fnDuration","valueA":25,"valueB":52,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].timings.after each[0].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":43,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].wallClockStartedAt","valueA":"2023-09-14T03:08:44.800Z","valueB":"2023-09-14T03:53:26.117Z","isEqual":false},{"path":"runs[4].tests[0].attempts[0].wallClockDuration","valueA":4526,"valueB":4587,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].videoTimestamp","valueA":1156,"valueB":22,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].startedAt","valueA":"2023-09-14T03:08:44.800Z","valueB":"2023-09-14T03:53:26.117Z","isEqual":false},{"path":"runs[4].tests[0].attempts[0].duration","valueA":4526,"valueB":4587,"isEqual":false},{"path":"runs[4].tests[0].attempts[0].screenshots[0].screenshotId","valueA":"mkbvr","valueB":"6qyJ4w","isEqual":false},{"path":"runs[4].tests[0].attempts[0].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[4].tests[0].attempts[0].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[4].tests[0].attempts[0].screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[0].screenshots[0].takenAt","valueA":"2023-09-14T03:08:48.985Z","valueB":"2023-09-14T03:53:30.465Z","isEqual":false},{"path":"runs[4].tests[0].attempts[0].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed).png","isEqual":true},{"path":"runs[4].tests[0].attempts[0].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[4].tests[0].attempts[0].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[4].tests[0].attempts[0].screenshots[0].size","valueB":373963,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].screenshots[0].duration","valueB":241,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[0].body","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"Timed out retrying after 4000ms: expected false to be true","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.stack","valueA":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","valueB":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.codeFrame.line","valueA":6,"valueB":6,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.codeFrame.originalFile","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.codeFrame.relativeFile","valueA":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","valueB":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.codeFrame.frame","valueA":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","valueB":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","isEqual":true},{"path":"runs[4].tests[0].attempts[1].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[4].tests[0].attempts[1].timings.lifecycle","valueA":29,"valueB":22,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[4].tests[0].attempts[1].timings.before each[0].fnDuration","valueA":10,"valueB":16,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[4].tests[0].attempts[1].timings.before each[1].fnDuration","valueA":55,"valueB":58,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].timings.test.fnDuration","valueA":3991,"valueB":3995,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].timings.test.afterFnDuration","valueA":238,"valueB":228,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[4].tests[0].attempts[1].timings.after each[0].fnDuration","valueA":12,"valueB":19,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].timings.after each[0].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":22,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].wallClockStartedAt","valueA":"2023-09-14T03:08:49.350Z","valueB":"2023-09-14T03:53:30.833Z","isEqual":false},{"path":"runs[4].tests[0].attempts[1].wallClockDuration","valueA":4360,"valueB":4324,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].videoTimestamp","valueA":5706,"valueB":4738,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].startedAt","valueA":"2023-09-14T03:08:49.350Z","valueB":"2023-09-14T03:53:30.833Z","isEqual":false},{"path":"runs[4].tests[0].attempts[1].duration","valueA":4360,"valueB":4324,"isEqual":false},{"path":"runs[4].tests[0].attempts[1].screenshots[0].screenshotId","valueA":"g496m","valueB":"vruaV4","isEqual":false},{"path":"runs[4].tests[0].attempts[1].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[4].tests[0].attempts[1].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[4].tests[0].attempts[1].screenshots[0].testAttemptIndex","valueA":1,"valueB":1,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].screenshots[0].takenAt","valueA":"2023-09-14T03:08:53.437Z","valueB":"2023-09-14T03:53:34.931Z","isEqual":false},{"path":"runs[4].tests[0].attempts[1].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 2).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 2).png","isEqual":true},{"path":"runs[4].tests[0].attempts[1].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[4].tests[0].attempts[1].screenshots[0].size","valueB":375260,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].screenshots[0].duration","valueB":223,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[1].body","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"Timed out retrying after 4000ms: expected false to be true","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.stack","valueA":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","valueB":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:6:19)","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.codeFrame.line","valueA":6,"valueB":6,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.codeFrame.column","valueA":20,"valueB":20,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.codeFrame.originalFile","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.codeFrame.relativeFile","valueA":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","valueB":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.codeFrame.frame","valueA":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","valueB":" 4 | retries: 2,\n 5 | }, () => {\n> 6 | cy.wrap(false).should('be.true');\n | ^\n 7 | });\n 8 | \n 9 | it('should assert that true is true', () => {","isEqual":true},{"path":"runs[4].tests[0].attempts[2].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[4].tests[0].attempts[2].timings.lifecycle","valueA":51,"valueB":32,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[4].tests[0].attempts[2].timings.before each[0].fnDuration","valueA":8,"valueB":12,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[4].tests[0].attempts[2].timings.before each[1].fnDuration","valueA":56,"valueB":61,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].timings.test.fnDuration","valueA":3998,"valueB":4002,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].timings.test.afterFnDuration","valueA":213,"valueB":218,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[4].tests[0].attempts[2].timings.after each[0].fnDuration","valueA":21,"valueB":18,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":61,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].wallClockStartedAt","valueA":"2023-09-14T03:08:53.724Z","valueB":"2023-09-14T03:53:35.229Z","isEqual":false},{"path":"runs[4].tests[0].attempts[2].wallClockDuration","valueA":4415,"valueB":4329,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].videoTimestamp","valueA":10080,"valueB":9134,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].startedAt","valueA":"2023-09-14T03:08:53.724Z","valueB":"2023-09-14T03:53:35.229Z","isEqual":false},{"path":"runs[4].tests[0].attempts[2].duration","valueA":4415,"valueB":4329,"isEqual":false},{"path":"runs[4].tests[0].attempts[2].screenshots[0].screenshotId","valueA":"inwwk","valueB":"lqDKEA","isEqual":false},{"path":"runs[4].tests[0].attempts[2].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[4].tests[0].attempts[2].screenshots[0].testId","valueA":"r3","valueB":"r3","isEqual":true},{"path":"runs[4].tests[0].attempts[2].screenshots[0].testAttemptIndex","valueA":2,"valueB":2,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].screenshots[0].takenAt","valueA":"2023-09-14T03:08:57.842Z","valueB":"2023-09-14T03:53:39.342Z","isEqual":false},{"path":"runs[4].tests[0].attempts[2].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 3).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should try 2 times (failed) (attempt 3).png","isEqual":true},{"path":"runs[4].tests[0].attempts[2].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[4].tests[0].attempts[2].screenshots[0].size","valueB":376481,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].screenshots[0].duration","valueB":209,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].attempts[2].body","valueB":"() => {\n cy.wrap(false).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[0].duration","valueB":13494,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[1].testId","valueA":"r4","valueB":"r4","isEqual":true},{"path":"runs[4].tests[1].title[0]","valueA":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","valueB":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","isEqual":true},{"path":"runs[4].tests[1].title[1]","valueA":"should assert that true is true","valueB":"should assert that true is true","isEqual":true},{"path":"runs[4].tests[1].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[4].tests[1].body","valueA":"() => {\n cy.wrap(true).should('be.true');\n }","valueB":"() => {\n cy.wrap(true).should('be.true');\n }","isEqual":true},{"path":"runs[4].tests[1].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[4].tests[1].attempts[0].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[4].tests[1].attempts[0].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.lifecycle","valueA":35,"valueB":13,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.before each[0].fnDuration","valueA":11,"valueB":15,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.before each[1].fnDuration","valueA":89,"valueB":54,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.test.fnDuration","valueA":3,"valueB":3,"isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.test.afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.after each[0].fnDuration","valueA":12,"valueB":18,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[1].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":9,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[1].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[1].attempts[0].wallClockStartedAt","valueA":"2023-09-14T03:08:58.160Z","valueB":"2023-09-14T03:53:39.673Z","isEqual":false},{"path":"runs[4].tests[1].attempts[0].wallClockDuration","valueA":164,"valueB":87,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].videoTimestamp","valueA":14516,"valueB":13578,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].startedAt","valueA":"2023-09-14T03:08:58.160Z","valueB":"2023-09-14T03:53:39.673Z","isEqual":false},{"path":"runs[4].tests[1].attempts[0].duration","valueA":164,"valueB":87,"isEqual":false},{"path":"runs[4].tests[1].attempts[0].body","valueB":"() => {\n cy.wrap(true).should('be.true');\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[1].duration","valueB":128,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].testId","valueA":"r5","valueB":"r5","isEqual":true},{"path":"runs[4].tests[2].title[0]","valueA":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","valueB":"Failing test with 2 attempts, passed test and flaky test with 2 attempts","isEqual":true},{"path":"runs[4].tests[2].title[1]","valueA":"should fail on the first attempt and pass on the second","valueB":"should fail on the first attempt and pass on the second","isEqual":true},{"path":"runs[4].tests[2].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[4].tests[2].body","valueA":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","valueB":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","isEqual":true},{"path":"runs[4].tests[2].displayError","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].state","valueA":"failed","valueB":"failed","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.name","valueA":"AssertionError","valueB":"AssertionError","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.message","valueA":"Timed out retrying after 4000ms: expected false to be true","valueB":"Timed out retrying after 4000ms: expected false to be true","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.stack","valueA":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:16:21)","valueB":" at Context.eval (webpack://cypress-13-demo/./cypress/e2e/b.spec.js:16:21)","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.codeFrame.line","valueA":16,"valueB":16,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.codeFrame.column","valueA":22,"valueB":22,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.codeFrame.originalFile","valueA":"cypress/e2e/b.spec.js","valueB":"cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.codeFrame.relativeFile","valueA":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","valueB":"e2e/cypress-13-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.codeFrame.absoluteFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/e2e/b.spec.js","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.codeFrame.frame","valueA":" 14 | if (attempt === 0) {\n 15 | attempt++;\n> 16 | cy.wrap(false).should('be.true'); // This will fail on the first attempt\n | ^\n 17 | } else {\n 18 | cy.wrap(true).should('be.true'); // This will pass on the second attempt\n 19 | }","valueB":" 14 | if (attempt === 0) {\n 15 | attempt++;\n> 16 | cy.wrap(false).should('be.true'); // This will fail on the first attempt\n | ^\n 17 | } else {\n 18 | cy.wrap(true).should('be.true'); // This will pass on the second attempt\n 19 | }","isEqual":true},{"path":"runs[4].tests[2].attempts[0].error.codeFrame.language","valueA":"js","valueB":"js","isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.lifecycle","valueA":21,"valueB":20,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.before each[0].fnDuration","valueA":8,"valueB":8,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.before each[1].fnDuration","valueA":54,"valueB":58,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].timings.before each[1].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.test.fnDuration","valueA":3991,"valueB":3991,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.test.afterFnDuration","valueA":234,"valueB":261,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[4].tests[2].attempts[0].timings.after each[0].fnDuration","valueA":14,"valueB":40,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].timings.after each[0].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":44,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].wallClockStartedAt","valueA":"2023-09-14T03:08:58.325Z","valueB":"2023-09-14T03:53:39.803Z","isEqual":false},{"path":"runs[4].tests[2].attempts[0].wallClockDuration","valueA":4371,"valueB":4343,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].videoTimestamp","valueA":14681,"valueB":13708,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].startedAt","valueA":"2023-09-14T03:08:58.325Z","valueB":"2023-09-14T03:53:39.803Z","isEqual":false},{"path":"runs[4].tests[2].attempts[0].duration","valueA":4371,"valueB":4343,"isEqual":false},{"path":"runs[4].tests[2].attempts[0].screenshots[0].screenshotId","valueA":"xa6yo","valueB":"Jy98Nh","isEqual":false},{"path":"runs[4].tests[2].attempts[0].screenshots[0].name","valueA":"screenshot","valueB":"screenshot","isEqual":true},{"path":"runs[4].tests[2].attempts[0].screenshots[0].testId","valueA":"r5","valueB":"r5","isEqual":true},{"path":"runs[4].tests[2].attempts[0].screenshots[0].testAttemptIndex","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].screenshots[0].takenAt","valueA":"2023-09-14T03:09:02.403Z","valueB":"2023-09-14T03:53:43.887Z","isEqual":false},{"path":"runs[4].tests[2].attempts[0].screenshots[0].path","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should fail on the first attempt and pass on the second (failed).png","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots/b.spec.js/Failing test with 2 attempts, passed test and flaky test with 2 attempts -- should fail on the first attempt and pass on the second (failed).png","isEqual":true},{"path":"runs[4].tests[2].attempts[0].screenshots[0].height","valueA":1440,"valueB":1440,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].screenshots[0].width","valueA":2560,"valueB":2560,"isEqual":true},{"path":"runs[4].tests[2].attempts[0].screenshots[0].size","valueB":375772,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].screenshots[0].dimensions","valueB":{"width":2560,"height":1440},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].screenshots[0].multipart","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].screenshots[0].specName","valueB":"b.spec.js","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].screenshots[0].testFailure","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].screenshots[0].scaled","valueB":true,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].screenshots[0].blackout","valueB":[],"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].screenshots[0].duration","valueB":229,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[0].body","valueB":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[1].state","valueA":"passed","valueB":"passed","isEqual":true},{"path":"runs[4].tests[2].attempts[1].error","valueA":null,"valueB":null,"isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.lifecycle","valueA":50,"valueB":26,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].timings.before each[0].hookId","valueA":"h1","valueB":"h1","isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.before each[0].fnDuration","valueA":8,"valueB":13,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].timings.before each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.before each[1].hookId","valueA":"h2","valueB":"h2","isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.before each[1].fnDuration","valueA":103,"valueB":107,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].timings.before each[1].afterFnDuration","valueA":1,"valueB":0,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].timings.test.fnDuration","valueA":3,"valueB":3,"isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.test.afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.after each[0].hookId","valueA":"h4","valueB":"h4","isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.after each[0].fnDuration","valueA":11,"valueB":12,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].timings.after each[0].afterFnDuration","valueA":0,"valueB":0,"isEqual":true},{"path":"runs[4].tests[2].attempts[1].timings.after each[1]","valueA":{"hookId":"h5","fnDuration":14,"afterFnDuration":0},"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[1].timings.after all","valueA":[{"hookId":"h3","fnDuration":5,"afterFnDuration":0}],"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[1].failedFromHookId","valueA":null,"isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].attempts[1].wallClockStartedAt","valueA":"2023-09-14T03:09:02.705Z","valueB":"2023-09-14T03:53:44.240Z","isEqual":false},{"path":"runs[4].tests[2].attempts[1].wallClockDuration","valueA":202,"valueB":150,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].videoTimestamp","valueA":19061,"valueB":18145,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].startedAt","valueA":"2023-09-14T03:09:02.705Z","valueB":"2023-09-14T03:53:44.240Z","isEqual":false},{"path":"runs[4].tests[2].attempts[1].duration","valueA":202,"valueB":150,"isEqual":false},{"path":"runs[4].tests[2].attempts[1].body","valueB":"() => {\n if (attempt === 0) {\n attempt++;\n cy.wrap(false).should('be.true'); // This will fail on the first attempt\n } else {\n cy.wrap(true).should('be.true'); // This will pass on the second attempt\n }\n }","isEqual":false,"note":"Does not exist"},{"path":"runs[4].tests[2].duration","valueB":4629,"isEqual":false,"note":"Does not exist"},{"path":"startedTestsAt","valueA":"2023-09-14T03:08:15.698Z","valueB":"2023-09-14T03:53:00.543Z","isEqual":false},{"path":"endedTestsAt","valueA":"2023-09-14T03:09:02.909Z","valueB":"2023-09-14T03:53:44.443Z","isEqual":false},{"path":"config.animationDistanceThreshold","valueA":5,"valueB":5,"isEqual":true},{"path":"config.arch","valueA":"arm64","valueB":"arm64","isEqual":true},{"path":"config.autoOpen","valueA":false,"valueB":false,"isEqual":true},{"path":"config.baseUrl","valueA":"https://todomvc.com/examples/vanillajs","valueB":"https://todomvc.com/examples/vanillajs","isEqual":true},{"path":"config.blockHosts","valueA":null,"valueB":null,"isEqual":true},{"path":"config.browsers[0].name","valueA":"chrome","valueB":"chrome","isEqual":true},{"path":"config.browsers[0].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.browsers[0].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.browsers[0].displayName","valueA":"Chrome","valueB":"Chrome","isEqual":true},{"path":"config.browsers[0].version","valueA":"116.0.5845.187","valueB":"116.0.5845.187","isEqual":true},{"path":"config.browsers[0].path","valueA":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","valueB":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","isEqual":true},{"path":"config.browsers[0].minSupportedVersion","valueA":64,"valueB":64,"isEqual":true},{"path":"config.browsers[0].majorVersion","valueA":"116","valueB":"116","isEqual":true},{"path":"config.browsers[1].name","valueA":"edge","valueB":"edge","isEqual":true},{"path":"config.browsers[1].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.browsers[1].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.browsers[1].displayName","valueA":"Edge","valueB":"Edge","isEqual":true},{"path":"config.browsers[1].version","valueA":"116.0.1938.81","valueB":"116.0.1938.81","isEqual":true},{"path":"config.browsers[1].path","valueA":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","valueB":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","isEqual":true},{"path":"config.browsers[1].minSupportedVersion","valueA":79,"valueB":79,"isEqual":true},{"path":"config.browsers[1].majorVersion","valueA":"116","valueB":"116","isEqual":true},{"path":"config.browsers[2].name","valueA":"electron","valueB":"electron","isEqual":true},{"path":"config.browsers[2].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.browsers[2].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.browsers[2].displayName","valueA":"Electron","valueB":"Electron","isEqual":true},{"path":"config.browsers[2].version","valueA":"106.0.5249.51","valueB":"106.0.5249.51","isEqual":true},{"path":"config.browsers[2].path","valueA":"","valueB":"","isEqual":true},{"path":"config.browsers[2].majorVersion","valueA":106,"valueB":106,"isEqual":true},{"path":"config.chromeWebSecurity","valueA":true,"valueB":true,"isEqual":true},{"path":"config.clientRoute","valueA":"/__/","valueB":"/__/","isEqual":true},{"path":"config.configFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress.config.ts","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress.config.ts","isEqual":true},{"path":"config.cypressBinaryRoot","valueA":"/Users/miguelangarano/Library/Caches/Cypress/12.17.4/Cypress.app/Contents/Resources/app","valueB":"/Users/miguelangarano/Library/Caches/Cypress/13.1.0/Cypress.app/Contents/Resources/app","isEqual":false},{"path":"config.cypressEnv","valueA":"production","valueB":"production","isEqual":true},{"path":"config.defaultCommandTimeout","valueA":4000,"valueB":4000,"isEqual":true},{"path":"config.devServerPublicPathRoute","valueA":"/__cypress/src","valueB":"/__cypress/src","isEqual":true},{"path":"config.downloadsFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/downloads","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/downloads","isEqual":true},{"path":"config.env.currents_temp_file","valueA":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-45859-JGguqnT5L2dB","valueB":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-68028-roSNIstP0PNr","isEqual":false},{"path":"config.env.currents_debug_enabled","valueA":false,"valueB":false,"isEqual":true},{"path":"config.excludeSpecPattern","valueA":"*.hot-update.js","valueB":"*.hot-update.js","isEqual":true},{"path":"config.execTimeout","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.experimentalCspAllowList","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalFetchPolyfill","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalInteractiveRunEvents","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalMemoryManagement","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalModifyObstructiveThirdPartyCode","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalOriginDependencies","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalRunAllSpecs","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalSingleTabRunMode","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalSkipDomainInjection","valueA":null,"valueB":null,"isEqual":true},{"path":"config.experimentalSourceRewriting","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalStudio","valueA":false,"valueB":false,"isEqual":true},{"path":"config.experimentalWebKitSupport","valueA":false,"valueB":false,"isEqual":true},{"path":"config.fileServerFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo","isEqual":true},{"path":"config.fixturesFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/fixtures","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/fixtures","isEqual":true},{"path":"config.hosts","valueA":null,"valueB":null,"isEqual":true},{"path":"config.includeShadowDom","valueA":false,"valueB":false,"isEqual":true},{"path":"config.isInteractive","valueA":true,"valueB":true,"isEqual":true},{"path":"config.isTextTerminal","valueA":true,"valueB":true,"isEqual":true},{"path":"config.keystrokeDelay","valueA":0,"valueB":0,"isEqual":true},{"path":"config.modifyObstructiveCode","valueA":true,"valueB":true,"isEqual":true},{"path":"config.morgan","valueA":false,"valueB":false,"isEqual":true},{"path":"config.namespace","valueA":"__cypress","valueB":"__cypress","isEqual":true},{"path":"config.numTestsKeptInMemory","valueA":0,"valueB":0,"isEqual":true},{"path":"config.pageLoadTimeout","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.platform","valueA":"darwin","valueB":"darwin","isEqual":true},{"path":"config.port","valueA":null,"valueB":null,"isEqual":true},{"path":"config.projectId","valueA":null,"valueB":null,"isEqual":true},{"path":"config.projectName","valueA":"cypress-13-demo","valueB":"cypress-13-demo","isEqual":true},{"path":"config.projectRoot","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo","isEqual":true},{"path":"config.rawJson.video","valueA":true,"valueB":true,"isEqual":true},{"path":"config.rawJson.e2e.baseUrl","valueA":"https://todomvc.com/examples/vanillajs","valueB":"https://todomvc.com/examples/vanillajs","isEqual":true},{"path":"config.rawJson.e2e.supportFile","valueA":"cypress/support/e2e.ts","valueB":"cypress/support/e2e.ts","isEqual":true},{"path":"config.rawJson.e2e.specPattern","valueA":"cypress/*/**/*.spec.js","valueB":"cypress/*/**/*.spec.js","isEqual":true},{"path":"config.rawJson.e2e.setupNodeEvents","valueA":"[Function setupNodeEvents]","valueB":"[Function setupNodeEvents]","isEqual":true},{"path":"config.rawJson.component.specPattern[0]","valueA":"pages/__tests__/*.spec.tsx","valueB":"pages/__tests__/*.spec.tsx","isEqual":true},{"path":"config.rawJson.component.setupNodeEvents","valueA":"[Function setupNodeEvents]","valueB":"[Function setupNodeEvents]","isEqual":true},{"path":"config.rawJson.component.devServer.framework","valueA":"next","valueB":"next","isEqual":true},{"path":"config.rawJson.component.devServer.bundler","valueA":"webpack","valueB":"webpack","isEqual":true},{"path":"config.rawJson.baseUrl","valueA":"https://todomvc.com/examples/vanillajs","valueB":"https://todomvc.com/examples/vanillajs","isEqual":true},{"path":"config.rawJson.supportFile","valueA":"cypress/support/e2e.ts","valueB":"cypress/support/e2e.ts","isEqual":true},{"path":"config.rawJson.specPattern","valueA":"cypress/*/**/*.spec.js","valueB":"cypress/*/**/*.spec.js","isEqual":true},{"path":"config.rawJson.setupNodeEvents","valueA":"[Function setupNodeEvents]","valueB":"[Function setupNodeEvents]","isEqual":true},{"path":"config.rawJson.projectRoot","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo","isEqual":true},{"path":"config.rawJson.projectName","valueA":"cypress-13-demo","valueB":"cypress-13-demo","isEqual":true},{"path":"config.rawJson.repoRoot","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","isEqual":true},{"path":"config.redirectionLimit","valueA":20,"valueB":20,"isEqual":true},{"path":"config.repoRoot","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13","isEqual":true},{"path":"config.report","valueA":true,"valueB":true,"isEqual":true},{"path":"config.reporter","valueA":"spec","valueB":"spec","isEqual":true},{"path":"config.reporterOptions","valueA":null,"valueB":null,"isEqual":true},{"path":"config.reporterRoute","valueA":"/__cypress/reporter","valueB":"/__cypress/reporter","isEqual":true},{"path":"config.requestTimeout","valueA":5000,"valueB":5000,"isEqual":true},{"path":"config.resolved.animationDistanceThreshold.value","valueA":5,"valueB":5,"isEqual":true},{"path":"config.resolved.animationDistanceThreshold.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.arch.value","valueA":"arm64","valueB":"arm64","isEqual":true},{"path":"config.resolved.arch.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.baseUrl.value","valueA":"https://todomvc.com/examples/vanillajs","valueB":"https://todomvc.com/examples/vanillajs","isEqual":true},{"path":"config.resolved.baseUrl.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.blockHosts.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.blockHosts.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.chromeWebSecurity.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.chromeWebSecurity.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.clientCertificates.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.defaultCommandTimeout.value","valueA":4000,"valueB":4000,"isEqual":true},{"path":"config.resolved.defaultCommandTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.downloadsFolder.value","valueA":"cypress/downloads","valueB":"cypress/downloads","isEqual":true},{"path":"config.resolved.downloadsFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.env.currents_temp_file.value","valueA":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-45859-JGguqnT5L2dB","valueB":"/var/folders/1l/tzj2dqys6js7w35f8rx2jsq00000gn/T/tmp-68028-roSNIstP0PNr","isEqual":false},{"path":"config.resolved.env.currents_temp_file.from","valueA":"cli","valueB":"cli","isEqual":true},{"path":"config.resolved.env.currents_debug_enabled.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.env.currents_debug_enabled.from","valueA":"cli","valueB":"cli","isEqual":true},{"path":"config.resolved.execTimeout.value","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.resolved.execTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalCspAllowList.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalCspAllowList.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalFetchPolyfill.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalFetchPolyfill.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalInteractiveRunEvents.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalInteractiveRunEvents.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalRunAllSpecs.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalRunAllSpecs.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalMemoryManagement.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalMemoryManagement.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalModifyObstructiveThirdPartyCode.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalModifyObstructiveThirdPartyCode.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalSkipDomainInjection.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.experimentalSkipDomainInjection.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalOriginDependencies.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalOriginDependencies.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalSourceRewriting.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalSourceRewriting.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalSingleTabRunMode.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalSingleTabRunMode.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalStudio.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalStudio.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.experimentalWebKitSupport.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.experimentalWebKitSupport.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.fileServerFolder.value","valueA":"","valueB":"","isEqual":true},{"path":"config.resolved.fileServerFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.fixturesFolder.value","valueA":"cypress/fixtures","valueB":"cypress/fixtures","isEqual":true},{"path":"config.resolved.fixturesFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.excludeSpecPattern.value","valueA":"*.hot-update.js","valueB":"*.hot-update.js","isEqual":true},{"path":"config.resolved.excludeSpecPattern.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.includeShadowDom.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.includeShadowDom.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.keystrokeDelay.value","valueA":0,"valueB":0,"isEqual":true},{"path":"config.resolved.keystrokeDelay.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.modifyObstructiveCode.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.modifyObstructiveCode.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.nodeVersion","valueA":{"from":"default"},"isEqual":false,"note":"Does not exist"},{"path":"config.resolved.numTestsKeptInMemory.value","valueA":0,"valueB":0,"isEqual":true},{"path":"config.resolved.numTestsKeptInMemory.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.platform.value","valueA":"darwin","valueB":"darwin","isEqual":true},{"path":"config.resolved.platform.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.pageLoadTimeout.value","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.resolved.pageLoadTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.port.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.port.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.projectId.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.projectId.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.redirectionLimit.value","valueA":20,"valueB":20,"isEqual":true},{"path":"config.resolved.redirectionLimit.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.reporter.value","valueA":"spec","valueB":"spec","isEqual":true},{"path":"config.resolved.reporter.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.reporterOptions.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.reporterOptions.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.requestTimeout.value","valueA":5000,"valueB":5000,"isEqual":true},{"path":"config.resolved.requestTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.resolvedNodePath.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.resolvedNodePath.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.resolvedNodeVersion.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.resolvedNodeVersion.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.responseTimeout.value","valueA":30000,"valueB":30000,"isEqual":true},{"path":"config.resolved.responseTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.retries.value.runMode","valueA":0,"valueB":0,"isEqual":true},{"path":"config.resolved.retries.value.openMode","valueA":0,"valueB":0,"isEqual":true},{"path":"config.resolved.retries.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.screenshotOnRunFailure.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.screenshotOnRunFailure.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.screenshotsFolder.value","valueA":"cypress/screenshots","valueB":"cypress/screenshots","isEqual":true},{"path":"config.resolved.screenshotsFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.slowTestThreshold.value","valueA":10000,"valueB":10000,"isEqual":true},{"path":"config.resolved.slowTestThreshold.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.scrollBehavior.value","valueA":"top","valueB":"top","isEqual":true},{"path":"config.resolved.scrollBehavior.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.supportFile.value","valueA":"cypress/support/e2e.ts","valueB":"cypress/support/e2e.ts","isEqual":true},{"path":"config.resolved.supportFile.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.supportFolder.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.supportFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.taskTimeout.value","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.resolved.taskTimeout.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.testIsolation.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.testIsolation.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.trashAssetsBeforeRuns.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.trashAssetsBeforeRuns.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.userAgent.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.userAgent.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.video.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.video.from","valueA":"default","valueB":"config","isEqual":false},{"path":"config.resolved.videoCompression.value","valueA":32,"valueB":false,"isEqual":false},{"path":"config.resolved.videoCompression.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.videosFolder.value","valueA":"cypress/videos","valueB":"cypress/videos","isEqual":true},{"path":"config.resolved.videosFolder.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.videoUploadOnPasses","valueA":{"value":true,"from":"default"},"isEqual":false,"note":"Does not exist"},{"path":"config.resolved.viewportHeight.value","valueA":660,"valueB":660,"isEqual":true},{"path":"config.resolved.viewportHeight.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.viewportWidth.value","valueA":1000,"valueB":1000,"isEqual":true},{"path":"config.resolved.viewportWidth.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.waitForAnimations.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.waitForAnimations.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.watchForFileChanges.value","valueA":false,"valueB":false,"isEqual":true},{"path":"config.resolved.watchForFileChanges.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.specPattern.value","valueA":"cypress/*/**/*.spec.js","valueB":"cypress/*/**/*.spec.js","isEqual":true},{"path":"config.resolved.specPattern.from","valueA":"config","valueB":"config","isEqual":true},{"path":"config.resolved.browsers.value[0].name","valueA":"chrome","valueB":"chrome","isEqual":true},{"path":"config.resolved.browsers.value[0].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.resolved.browsers.value[0].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.resolved.browsers.value[0].displayName","valueA":"Chrome","valueB":"Chrome","isEqual":true},{"path":"config.resolved.browsers.value[0].version","valueA":"116.0.5845.187","valueB":"116.0.5845.187","isEqual":true},{"path":"config.resolved.browsers.value[0].path","valueA":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","valueB":"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","isEqual":true},{"path":"config.resolved.browsers.value[0].minSupportedVersion","valueA":64,"valueB":64,"isEqual":true},{"path":"config.resolved.browsers.value[0].majorVersion","valueA":"116","valueB":"116","isEqual":true},{"path":"config.resolved.browsers.value[1].name","valueA":"edge","valueB":"edge","isEqual":true},{"path":"config.resolved.browsers.value[1].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.resolved.browsers.value[1].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.resolved.browsers.value[1].displayName","valueA":"Edge","valueB":"Edge","isEqual":true},{"path":"config.resolved.browsers.value[1].version","valueA":"116.0.1938.81","valueB":"116.0.1938.81","isEqual":true},{"path":"config.resolved.browsers.value[1].path","valueA":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","valueB":"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","isEqual":true},{"path":"config.resolved.browsers.value[1].minSupportedVersion","valueA":79,"valueB":79,"isEqual":true},{"path":"config.resolved.browsers.value[1].majorVersion","valueA":"116","valueB":"116","isEqual":true},{"path":"config.resolved.browsers.value[2].name","valueA":"electron","valueB":"electron","isEqual":true},{"path":"config.resolved.browsers.value[2].channel","valueA":"stable","valueB":"stable","isEqual":true},{"path":"config.resolved.browsers.value[2].family","valueA":"chromium","valueB":"chromium","isEqual":true},{"path":"config.resolved.browsers.value[2].displayName","valueA":"Electron","valueB":"Electron","isEqual":true},{"path":"config.resolved.browsers.value[2].version","valueA":"106.0.5249.51","valueB":"106.0.5249.51","isEqual":true},{"path":"config.resolved.browsers.value[2].path","valueA":"","valueB":"","isEqual":true},{"path":"config.resolved.browsers.value[2].majorVersion","valueA":106,"valueB":106,"isEqual":true},{"path":"config.resolved.browsers.from","valueA":"runtime","valueB":"runtime","isEqual":true},{"path":"config.resolved.hosts.value","valueA":null,"valueB":null,"isEqual":true},{"path":"config.resolved.hosts.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolved.isInteractive.value","valueA":true,"valueB":true,"isEqual":true},{"path":"config.resolved.isInteractive.from","valueA":"default","valueB":"default","isEqual":true},{"path":"config.resolvedNodePath","valueA":"/Users/miguelangarano/.nvm/versions/node/v18.14.2/bin/node","valueB":"/Users/miguelangarano/.nvm/versions/node/v18.14.2/bin/node","isEqual":true},{"path":"config.resolvedNodeVersion","valueA":"18.14.2","valueB":"18.14.2","isEqual":true},{"path":"config.responseTimeout","valueA":30000,"valueB":30000,"isEqual":true},{"path":"config.retries.runMode","valueA":0,"valueB":0,"isEqual":true},{"path":"config.retries.openMode","valueA":0,"valueB":0,"isEqual":true},{"path":"config.screenshotOnRunFailure","valueA":true,"valueB":true,"isEqual":true},{"path":"config.screenshotsFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/screenshots","isEqual":true},{"path":"config.scrollBehavior","valueA":"top","valueB":"top","isEqual":true},{"path":"config.setupNodeEvents","valueA":"[Function setupNodeEvents]","valueB":"[Function setupNodeEvents]","isEqual":true},{"path":"config.slowTestThreshold","valueA":10000,"valueB":10000,"isEqual":true},{"path":"config.socketId","valueA":"ijm5bzfgh0","valueB":"98vacvcliu","isEqual":false},{"path":"config.socketIoCookie","valueA":"__socket","valueB":"__socket","isEqual":true},{"path":"config.socketIoRoute","valueA":"/__socket","valueB":"/__socket","isEqual":true},{"path":"config.specPattern","valueA":"cypress/*/**/*.spec.js","valueB":"cypress/*/**/*.spec.js","isEqual":true},{"path":"config.supportFile","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/support/e2e.ts","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/support/e2e.ts","isEqual":true},{"path":"config.supportFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/support","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/support","isEqual":true},{"path":"config.taskTimeout","valueA":60000,"valueB":60000,"isEqual":true},{"path":"config.testIsolation","valueA":true,"valueB":true,"isEqual":true},{"path":"config.trashAssetsBeforeRuns","valueA":true,"valueB":true,"isEqual":true},{"path":"config.userAgent","valueA":null,"valueB":null,"isEqual":true},{"path":"config.version","valueA":"12.17.4","valueB":"13.1.0","isEqual":false},{"path":"config.video","valueA":true,"valueB":true,"isEqual":true},{"path":"config.videoCompression","valueA":32,"valueB":false,"isEqual":false},{"path":"config.videoUploadOnPasses","valueA":true,"valueB":true,"isEqual":true},{"path":"config.videosFolder","valueA":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos","valueB":"/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/e2e/cypress-13-demo/cypress/videos","isEqual":true},{"path":"config.viewportHeight","valueA":660,"valueB":660,"isEqual":true},{"path":"config.viewportWidth","valueA":1000,"valueB":1000,"isEqual":true},{"path":"config.waitForAnimations","valueA":true,"valueB":true,"isEqual":true},{"path":"config.watchForFileChanges","valueA":false,"valueB":false,"isEqual":true},{"path":"config.testingType","valueA":"e2e","valueB":"e2e","isEqual":true},{"path":"config.hideCommandLog","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"config.hideRunnerUi","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"config.protocolEnabled","valueB":false,"isEqual":false,"note":"Does not exist"},{"path":"status","valueA":"finished","valueB":"finished","isEqual":true},{"path":"runUrl","valueA":"https://app.currents.dev/run/7dc0426fc25d30fe","valueB":"https://app.currents.dev/run/ff965046ffbf2977","isEqual":false}] \ No newline at end of file diff --git a/e2e/results/results-comparison-viewer.html b/e2e/results/results-comparison-viewer.html new file mode 100644 index 0000000..c74be04 --- /dev/null +++ b/e2e/results/results-comparison-viewer.html @@ -0,0 +1,65 @@ + + + + + + + See JSON results comparison + + + + + +

Select here your JSON results file

+ + + + + + + + + + + + +
PathValue OriginalValue Modified
+ + + + + \ No newline at end of file diff --git a/e2e/utils/utils.ts b/e2e/utils/utils.ts new file mode 100644 index 0000000..a40cf35 --- /dev/null +++ b/e2e/utils/utils.ts @@ -0,0 +1,630 @@ +import fs from "fs"; +import { expect } from "chai"; +import { run } from "cypress-cloud"; +import colors from "colors"; +colors.enable(); + +export const avoidablePropertiesCy13: AvoidableProperty[] = [ + { + property: "duration", + mustHave: true, + }, + { + property: "endedAt", + mustHave: true, + }, + { + property: "startedAt", + mustHave: true, + }, + { + property: "wallClockDuration", + mustHave: true, + }, + { + property: "wallClockStartedAt", + mustHave: true, + }, + { + property: "wallClockEndedAt", + mustHave: true, + }, + { + property: "screenshotId", + mustHave: true, + }, + { + property: "takenAt", + mustHave: true, + }, + { + property: "screenshotURL", + mustHave: true, + }, + { + property: "size", + mustHave: false, + }, + { + property: "dimensions", + mustHave: false, + }, + { + property: "multipart", + mustHave: false, + }, + { + property: "specName", + mustHave: false, + }, + { + property: "testFailure", + mustHave: false, + }, + { + property: "scaled", + mustHave: false, + }, + { + property: "blackout", + mustHave: false, + }, + { + property: "totalDuration", + mustHave: true, + }, + { + property: "start", + mustHave: true, + }, + { + property: "end", + mustHave: true, + }, + { + property: "error.message", + mustHave: true, + }, + { + property: "error.stack", + mustHave: true, + }, + { + property: "lifecycle", + mustHave: true, + }, + { + property: "fnDuration", + mustHave: true, + }, + { + property: "afterFnDuration", + mustHave: true, + }, + { + property: "videoTimestamp", + mustHave: true, + }, + { + property: "config.resolved.env.currents_temp_file.value", + mustHave: true, + }, + { + property: "socketId", + mustHave: true, + }, + { + property: "runUrl", + mustHave: true, + }, + { + property: "commit.message", + mustHave: true, + }, + { + property: "commit.sha", + mustHave: true, + }, + { + property: "cypressVersion", + mustHave: true, + }, + // { + // property: "specFileExtension", + // mustHave: false, + // }, + // { + // property: "relativeToCommonRoot", + // mustHave: false, + // }, + // { + // property: "specType", + // mustHave: false, + // }, + { + property: "cypressBinaryRoot", + mustHave: false, + }, + { + property: "env.currents_temp_file", + mustHave: false, + }, + { + property: "resolved.nodeVersion", + mustHave: false, + }, + { + property: "config.version", + mustHave: true, + }, + { + property: "config.browsers[1].version", + mustHave: true, + }, + { + property: "config.resolved.browsers.value[1].version", + mustHave: true, + }, + { + property: "spec.name", + mustHave: false, + }, + { + property: "runs[3].tests[0].testId", + mustHave: true, + }, + { + property: "runs[3].tests[0].body", + mustHave: false, + }, + { + property: "runs[3].tests[0].attempts[0]", + mustHave: false, + }, +]; + +export const avoidableApiPropertiesCy13: AvoidableProperty[] = [ + { + property: "runId", + mustHave: true, + }, + { + property: "createdAt", + mustHave: true, + }, + { + property: "groupId", + mustHave: true, + }, + { + property: "ciBuildId", + mustHave: true, + }, + { + property: "instanceId", + mustHave: true, + }, + { + property: "claimedAt", + mustHave: true, + }, + { + property: "completedAt", + mustHave: true, + }, + { + property: "machineId", + mustHave: true, + }, + { + property: "videoUrl", + mustHave: true, + }, + { + property: "data.cypressVersion", + mustHave: true, + }, + { + property: "data.meta.commit.authorEmail", + mustHave: true, + }, + { + property: "data.meta.commit.authorName", + mustHave: true, + }, + { + property: "data.meta.commit.message", + mustHave: true, + }, + { + property: "data.meta.commit.sha", + mustHave: true, + }, + { + property: "duration", + mustHave: true, + }, + { + property: "endedAt", + mustHave: true, + }, + { + property: "startedAt", + mustHave: true, + }, + { + property: "wallClockDuration", + mustHave: true, + }, + { + property: "wallClockStartedAt", + mustHave: true, + }, + { + property: "wallClockEndedAt", + mustHave: true, + }, + { + property: "screenshotId", + mustHave: true, + }, + { + property: "takenAt", + mustHave: true, + }, + { + property: "screenshotURL", + mustHave: true, + }, +]; + +export const avoidedButNeedePropertiesCy13: AvoidableProperty[] = [ + { + property: "resolved.video.value", + mustHave: false, + }, + { + property: "resolved.videoCompression.value", + mustHave: false, + }, + { + property: "config.resolved.videoUploadOnPasses", + mustHave: false, + }, + // { + // property: /runs\[\d+\]\.video/, + // mustHave: true, + // isRegex: true, + // }, + { + property: /runs\[\d+\]\.hooks/, + mustHave: false, + isRegex: true, + }, + // { + // property: /runs\[\d+\]\.tests\[\d+\]\.body/, + // mustHave: true, + // isRegex: true, + // }, + // { + // property: + // /runs\[\d+\]\.tests\[\d+\]\.attempts\[\d+\]\.timings\.after each\[1\]/, + // mustHave: true, + // isRegex: true, + // }, + // { + // property: + // /runs\[\d+\]\.tests\[\d+\]\.attempts\[\d+\]\.timings\.after all/, + // mustHave: true, + // isRegex: true, + // }, + { + property: /runs\[\d+\]\.tests\[\d+\]\.attempts\[\d+\]\.timings/, + mustHave: false, + isRegex: true, + }, + { + property: "config.video", + mustHave: true, + }, + { + property: "config.videoCompression", + mustHave: true, + }, + { + property: "config.videoUploadOnPasses", + mustHave: true, + }, + { + property: "runs[2].tests[0].attempts[0]", + mustHave: true, + }, + { + property: "runs[2].tests[0].testId", + mustHave: true, + }, + { + property: "error.codeFrame.absoluteFile", + mustHave: true, + }, + { + property: "timings", + mustHave: true, + }, + { + property: "hooks", + mustHave: true, + }, + { + property: "config.resolved.video.from", + mustHave: true, + }, +]; + +export type ComparisonResult = { + path: string; + valueA: any; + valueB: any; + isEqual: boolean; + note?: string; +}; + +export type AvoidableProperty = { + property: string | RegExp; + mustHave: boolean; + isRegex?: boolean; +}; + +export const similarPropertiesCy13: { + property: string; + similarProperty: string; +}[] = [ + { + property: "spec.baseName", + similarProperty: "spec.name", + }, + { + property: "spec.name", + similarProperty: "spec.relative", + }, +]; + +export function compareObjectsRecursively( + objA: any, + objB: any, + path: string = "" +): ComparisonResult[] { + let results: ComparisonResult[] = []; + + // If both are objects but neither arrays nor strings. + if ( + typeof objA === "object" && + objA !== null && + !(objA instanceof Array) && + typeof objA !== "string" && + typeof objB === "object" && + objB !== null && + !(objB instanceof Array) && + typeof objB !== "string" + ) { + const keys = new Set([...Object.keys(objA), ...Object.keys(objB)]); + + keys.forEach((key) => { + const newPath = path ? `${path}.${key}` : key; + results = results.concat( + compareObjectsRecursively(objA[key], objB[key], newPath) + ); + }); + } + // If both are arrays + else if (Array.isArray(objA) && Array.isArray(objB)) { + const maxLength = Math.max(objA.length, objB.length); + for (let i = 0; i < maxLength; i++) { + const newPath = `${path}[${i}]`; + results = results.concat( + compareObjectsRecursively(objA[i], objB[i], newPath) + ); + } + } else { + const isEqual = objA === objB; + const note = + objA === undefined + ? "Does not exist" + : objB === undefined + ? "Does not exist" + : undefined; + + results.push({ + path: path || "root", + valueA: objA, + valueB: objB, + isEqual: isEqual, + note: note, + }); + } + + return results; +} + +export async function getApiData(runUrl: string, filePath: string) { + const { apiKey, apiUrl } = getCurrentsTestsVariables(); + const headers = new Headers({ + Authorization: `Bearer ${apiKey}`, + }); + + try { + const response = await fetch(`${apiUrl}${runUrl.split("run/")[1]}`, { + method: "GET", + headers, + }); + const result = await response.json(); + + writeFile(filePath, result); + + return result; + } catch (e: any) { + throw new Error(e.toString()); + } +} + +export function isAvoidableProperty( + property: string, + avoidableProperties: AvoidableProperty[] +): AvoidableProperty | undefined { + const avoidableData = avoidableProperties.find((item) => { + if (item.isRegex) { + return (item.property as RegExp).test(property); + } + + return property.includes(item.property as string); + }); + if (avoidableData) { + return avoidableData; + } + return; +} + +export function isSimilarProperty(propertyA: string) { + const similarData = similarPropertiesCy13.find((item) => + propertyA.includes(item.property) + ); + if (similarData) { + return similarData; + } + return; +} + +export function testEachResults( + results: ComparisonResult[], + avoidableProperties: AvoidableProperty[] +): string[] { + const errors: string[] = []; + results.forEach((result) => { + try { + if (result.valueA) { + const avoidableData = isAvoidableProperty( + result.path, + avoidableProperties + ); + + if (!avoidableData) { + expect( + result.valueA, + `The values are not equal at: ${result.path}. ${result.note ?? ""}` + ).to.equal(result.valueB); + return; + } + + if (avoidableData.mustHave) { + expect( + result.valueB, + `The values at ${result.path} does not exist and it should. ${ + result.note ?? "" + }` + ).not.to.equal("Does not exist"); + expect( + result.valueB, + `The values at ${result.path} does not exist and it should. ${ + result.note ?? "" + }` + ).not.to.equal(undefined); + expect( + result.valueB, + `The values at ${result.path} does not exist and it should. ${ + result.note ?? "" + }` + ).not.to.equal(null); + expect( + result.valueB, + `The values at ${result.path} does not exist and it should. ${ + result.note ?? "" + }` + ).not.to.equal(""); + expect( + result.valueB, + `The values at ${result.path} does not exist and it should. ${ + result.note ?? "" + }` + ).not.to.equal("undefined"); + expect( + result.valueB, + `The values at ${result.path} does not exist and it should. ${ + result.note ?? "" + }` + ).not.to.equal("null"); + return; + } + } + } catch (e: any) { + const error = `${errors.length}.- ${e.toString()}`; + errors.push(error); + console.log(error.red); + } + }); + return errors; +} + +export function getCurrentsTestsVariables() { + const projectId = process.env.CURRENTS_PROJECT_ID || "2cI1I5"; + const recordKey = process.env.CURRENTS_RECORD_KEY || "YakSabgBLb7D40nZ"; + const ciBuildId = `run-compat-test-${new Date().toISOString()}`; + const apiKey = + process.env.CURRENTS_API_KEY || + "YpYIAerb1rWuOFrvf7ciK8Za8koKgrtRfoDPboQUOjScnBv91m4qAXSDb8Rb57m9"; + const apiUrl = + process.env.CURRENTS_RUN_BASE_URL || "https://api.currents.dev/v1/runs/"; + return { + projectId, + recordKey, + ciBuildId, + apiKey, + apiUrl, + }; +} + +export function writeFile(path: string, data: any) { + try { + fs.writeFileSync(path, JSON.stringify(data)); + console.log("FILE SAVED"); + } catch (e) { + console.error("FILE SAVE ERROR::", e); + throw e; + } +} + +export function runTestsValidation( + originalData: any, + modifiedData: any, + avoidableProperties: AvoidableProperty[], + filePath: string, + startMessage: string, + successMessage: string +) { + console.log(startMessage.yellow); + + const results = compareObjectsRecursively(originalData, modifiedData); + + writeFile(filePath, results); + + const errors = testEachResults(results, avoidableProperties); + + if (errors.length === 0) { + console.log(successMessage.green); + } + + return errors; +} + +export async function runTests(filePath: string) { + const { projectId, recordKey, ciBuildId } = getCurrentsTestsVariables(); + const result: any = await run({ + ciBuildId, + projectId, + recordKey, + batchSize: 5, + }); + + writeFile(filePath, result); + + return result; +} diff --git a/examples/webapp/cypress.config.ts b/examples/webapp/cypress.config.ts index ac9cd25..1cb4413 100644 --- a/examples/webapp/cypress.config.ts +++ b/examples/webapp/cypress.config.ts @@ -12,7 +12,6 @@ module.exports = defineConfig({ specPattern: "cypress/e2e/*.js", setupNodeEvents(on, config) { require("@cypress/grep/src/plugin")(config); - require("cypress-terminal-report/src/installLogsPrinter")(on); return currents(on, config); }, }, diff --git a/examples/webapp/cypress/support/e2e.ts b/examples/webapp/cypress/support/e2e.ts index 32bd259..36c4990 100644 --- a/examples/webapp/cypress/support/e2e.ts +++ b/examples/webapp/cypress/support/e2e.ts @@ -1,5 +1,4 @@ import registerCypressGrep from "@cypress/grep/src/support"; -require("cypress-terminal-report/src/installLogsCollector")(); require("cypress-cloud/support"); require("./commands"); diff --git a/examples/webapp/scripts/currents-script.ts b/examples/webapp/scripts/currents-script.ts index bb5ea04..8363ed4 100644 --- a/examples/webapp/scripts/currents-script.ts +++ b/examples/webapp/scripts/currents-script.ts @@ -1,6 +1,5 @@ import assert from "assert"; import { run } from "cypress-cloud"; - (async function runTests() { const projectId = process.env.CURRENTS_PROJECT_ID || "projectId"; const recordKey = process.env.CURRENTS_RECORD_KEY || "someKey"; diff --git a/package-lock.json b/package-lock.json index 7a6b7cc..56e68cd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,9 @@ ], "devDependencies": { "eslint-config-custom": "latest", + "husky": "^8.0.3", "prettier": "latest", + "pretty-quick": "^3.1.3", "turbo": "^1.10.13" }, "engines": { @@ -54,6 +56,230 @@ }, "devDependencies": {} }, + "e2e/cypress-12-demo": { + "version": "0.0.0", + "dependencies": { + "colors": "^1.4.0", + "cypress-cloud": "*" + }, + "devDependencies": { + "@types/chai": "^4.3.6", + "@types/node": "^17.0.12", + "chai": "^4.3.8", + "cypress": "^12.17.4", + "tsconfig": "*", + "typescript": "^5.2.2" + } + }, + "e2e/cypress-12-demo/node_modules/@cypress/request": { + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.10.3", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "e2e/cypress-12-demo/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, + "e2e/cypress-12-demo/node_modules/cypress": { + "version": "12.17.4", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.4.tgz", + "integrity": "sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@cypress/request": "2.88.12", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^16.18.39", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": "^14.0.0 || ^16.0.0 || >=18.0.0" + } + }, + "e2e/cypress-12-demo/node_modules/cypress/node_modules/@types/node": { + "version": "16.18.48", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.48.tgz", + "integrity": "sha512-mlaecDKQ7rIZrYD7iiKNdzFb6e/qD5I9U1rAhq+Fd+DWvYVs+G2kv74UFHmSOlg5+i/vF3XxuR522V4u8BqO+Q==", + "dev": true + }, + "e2e/cypress-12-demo/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "e2e/cypress-12-demo/node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "e2e/cypress-13-demo": { + "version": "0.0.0", + "dependencies": { + "colors": "^1.4.0", + "cypress-cloud": "*" + }, + "devDependencies": { + "@types/node": "^17.0.12", + "cypress": "13.1.0", + "tsconfig": "*", + "typescript": "^4.7.4" + } + }, + "e2e/cypress-13-demo/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, + "e2e/cypress-13-demo/node_modules/cypress": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.1.0.tgz", + "integrity": "sha512-LUKxCYlB973QBFls1Up4FAE9QIYobT+2I8NvvAwMfQS2YwsWbr6yx7y9hmsk97iqbHkKwZW3MRjoK1RToBFVdQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@cypress/request": "^3.0.0", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^16.18.39", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + } + }, + "e2e/cypress-13-demo/node_modules/cypress/node_modules/@types/node": { + "version": "16.18.52", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.52.tgz", + "integrity": "sha512-sm2aph6cRSsTMFYFgI+RpPLunXO9ClJkpizUVdT7KmGeyfQ14xnjTMT/f3MHcfKqevXqGT6BgVFzW8wcEoDUtA==", + "dev": true + }, "e2e/exports": { "name": "test-exports", "version": "0.0.0", @@ -1201,7 +1427,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1441,11 +1666,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2469,8 +2695,7 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@colors/colors": { "version": "1.5.0", @@ -2713,7 +2938,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.0.tgz", "integrity": "sha512-GKFCqwZwMYmL3IBoNeR2MM1SnxRIGERsQOTWeQKoYBt2JLqcqiy7JXqO894FLrpjZYqGxW92MNwRH2BN56obdQ==", - "peer": true, "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -2742,7 +2966,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "peer": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -2915,15 +3138,16 @@ } }, "node_modules/@jest/console": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.4.tgz", + "integrity": "sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", "slash": "^3.0.0" }, "engines": { @@ -2931,36 +3155,37 @@ } }, "node_modules/@jest/core": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.4.tgz", + "integrity": "sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/console": "^29.3.1", - "@jest/reporters": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.6.4", + "@jest/reporters": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.2.0", - "jest-config": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-resolve-dependencies": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "jest-watcher": "^29.3.1", + "jest-changed-files": "^29.6.3", + "jest-config": "^29.6.4", + "jest-haste-map": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-resolve-dependencies": "^29.6.4", + "jest-runner": "^29.6.4", + "jest-runtime": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", + "jest-watcher": "^29.6.4", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.6.3", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -3015,83 +3240,89 @@ } }, "node_modules/@jest/environment": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz", + "integrity": "sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.3.1" + "jest-mock": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.4.tgz", + "integrity": "sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==", "dev": true, - "license": "MIT", "dependencies": { - "expect": "^29.3.1", - "jest-snapshot": "^29.3.1" + "expect": "^29.6.4", + "jest-snapshot": "^29.6.4" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.4.tgz", + "integrity": "sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==", "dev": true, - "license": "MIT", "dependencies": { - "jest-get-type": "^29.2.0" + "jest-get-type": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz", + "integrity": "sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.3.1", - "@sinonjs/fake-timers": "^9.1.2", + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-message-util": "^29.6.3", + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.4.tgz", + "integrity": "sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/types": "^29.3.1", - "jest-mock": "^29.3.1" + "@jest/environment": "^29.6.4", + "@jest/expect": "^29.6.4", + "@jest/types": "^29.6.3", + "jest-mock": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.4.tgz", + "integrity": "sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==", "dev": true, - "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/console": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", @@ -3099,13 +3330,13 @@ "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", + "jest-worker": "^29.6.4", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -3123,23 +3354,41 @@ } } }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", + "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@jest/schemas": { - "version": "29.0.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, - "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.27.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/source-map": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, - "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.15", + "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", "graceful-fs": "^4.2.9" }, @@ -3148,12 +3397,13 @@ } }, "node_modules/@jest/test-result": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.4.tgz", + "integrity": "sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/console": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.6.4", + "@jest/types": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -3162,13 +3412,14 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.4.tgz", + "integrity": "sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/test-result": "^29.3.1", + "@jest/test-result": "^29.6.4", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.6.4", "slash": "^3.0.0" }, "engines": { @@ -3176,25 +3427,26 @@ } }, "node_modules/@jest/transform": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.4.tgz", + "integrity": "sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.3.1", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", + "jest-haste-map": "^29.6.4", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.6.3", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "write-file-atomic": "^4.0.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3204,13 +3456,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@jest/transform/node_modules/write-file-atomic": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -3220,11 +3472,12 @@ } }, "node_modules/@jest/types": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -3295,12 +3548,13 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dev": true, - "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@lezer/common": { @@ -4949,9 +5203,10 @@ "license": "BSD-3-Clause" }, "node_modules/@sinclair/typebox": { - "version": "0.24.51", - "dev": true, - "license": "MIT" + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true }, "node_modules/@sindresorhus/is": { "version": "5.3.0", @@ -4965,19 +5220,21 @@ } }, "node_modules/@sinonjs/commons": { - "version": "1.8.6", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^3.0.0" } }, "node_modules/@swc/core": { @@ -5097,12 +5354,13 @@ "license": "MIT" }, "node_modules/@types/babel__core": { - "version": "7.1.20", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", + "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" @@ -5113,7 +5371,6 @@ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } @@ -5123,18 +5380,18 @@ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__traverse": { - "version": "7.18.3", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", + "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.20.7" } }, "node_modules/@types/bluebird": { @@ -5155,6 +5412,12 @@ "@types/responselike": "^1.0.0" } }, + "node_modules/@types/chai": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "dev": true + }, "node_modules/@types/debug": { "version": "4.1.7", "dev": true, @@ -5197,9 +5460,10 @@ "license": "MIT" }, "node_modules/@types/graceful-fs": { - "version": "4.1.5", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -5249,9 +5513,10 @@ } }, "node_modules/@types/jest": { - "version": "29.2.4", + "version": "29.5.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz", + "integrity": "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==", "dev": true, - "license": "MIT", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -5282,6 +5547,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -5308,11 +5579,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/prettier": { - "version": "2.7.2", - "dev": true, - "license": "MIT" - }, "node_modules/@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", @@ -5945,6 +6211,15 @@ "node": ">=6.0" } }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", @@ -6071,6 +6346,15 @@ "node": ">=0.8" } }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", @@ -6178,14 +6462,15 @@ "license": "Apache-2.0" }, "node_modules/babel-jest": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.4.tgz", + "integrity": "sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/transform": "^29.3.1", + "@jest/transform": "^29.6.4", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.2.0", + "babel-preset-jest": "^29.6.3", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -6232,9 +6517,10 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -6300,7 +6586,6 @@ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -6320,11 +6605,12 @@ } }, "node_modules/babel-preset-jest": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, - "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^29.2.0", + "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -6652,7 +6938,6 @@ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } @@ -6879,11 +7164,28 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, + "node_modules/chai": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", + "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6912,7 +7214,6 @@ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } @@ -7079,6 +7380,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/check-more-types": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", @@ -7132,9 +7442,10 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "dev": true, - "license": "MIT" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true }, "node_modules/clean-stack": { "version": "2.2.0", @@ -7291,16 +7602,16 @@ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, - "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" } }, "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "dev": true, - "license": "MIT" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true }, "node_modules/color-convert": { "version": "2.0.1", @@ -7324,6 +7635,14 @@ "version": "2.0.19", "license": "MIT" }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -7848,6 +8167,14 @@ "node": "^16.0.0 || ^18.0.0 || >=20.0.0" } }, + "node_modules/cypress-12-demo": { + "resolved": "e2e/cypress-12-demo", + "link": true + }, + "node_modules/cypress-13-demo": { + "resolved": "e2e/cypress-13-demo", + "link": true + }, "node_modules/cypress-cloud": { "resolved": "packages/cypress-cloud", "link": true @@ -8009,9 +8336,30 @@ } }, "node_modules/dedent": { - "version": "0.7.0", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", "dev": true, - "license": "MIT" + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } }, "node_modules/deep-extend": { "version": "0.6.0", @@ -8030,9 +8378,10 @@ "license": "MIT" }, "node_modules/deepmerge": { - "version": "4.2.2", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8274,7 +8623,6 @@ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -8289,9 +8637,10 @@ } }, "node_modules/diff-sequences": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, - "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -8439,7 +8788,6 @@ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -9346,15 +9694,16 @@ } }, "node_modules/expect": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.4.tgz", + "integrity": "sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/expect-utils": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1" + "@jest/expect-utils": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -9486,7 +9835,6 @@ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } @@ -9912,6 +10260,15 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/get-intrinsic": { "version": "1.1.3", "license": "MIT", @@ -10560,6 +10917,21 @@ "node": ">=8.12.0" } }, + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -10642,7 +11014,6 @@ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, - "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -10899,7 +11270,6 @@ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -11468,14 +11838,15 @@ } }, "node_modules/jest": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.4.tgz", + "integrity": "sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/core": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.6.4", + "@jest/types": "^29.6.3", "import-local": "^3.0.2", - "jest-cli": "^29.3.1" + "jest-cli": "^29.6.4" }, "bin": { "jest": "bin/jest.js" @@ -11493,11 +11864,13 @@ } }, "node_modules/jest-changed-files": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.6.3.tgz", + "integrity": "sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==", "dev": true, - "license": "MIT", "dependencies": { "execa": "^5.0.0", + "jest-util": "^29.6.3", "p-limit": "^3.1.0" }, "engines": { @@ -11509,7 +11882,6 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -11533,33 +11905,34 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/jest-circus": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.4.tgz", + "integrity": "sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.6.4", + "@jest/expect": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "dedent": "^0.7.0", + "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-each": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-runtime": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", "p-limit": "^3.1.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.6.3", + "pure-rand": "^6.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -11568,20 +11941,21 @@ } }, "node_modules/jest-cli": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.4.tgz", + "integrity": "sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/core": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-config": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", "prompts": "^2.0.1", "yargs": "^17.3.1" }, @@ -11601,30 +11975,31 @@ } }, "node_modules/jest-config": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.4.tgz", + "integrity": "sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.3.1", - "@jest/types": "^29.3.1", - "babel-jest": "^29.3.1", + "@jest/test-sequencer": "^29.6.4", + "@jest/types": "^29.6.3", + "babel-jest": "^29.6.4", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.3.1", - "jest-environment-node": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-circus": "^29.6.4", + "jest-environment-node": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-runner": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.6.3", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -11645,23 +12020,25 @@ } }, "node_modules/jest-diff": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.4.tgz", + "integrity": "sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^29.3.1", - "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-docblock": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.6.3.tgz", + "integrity": "sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==", "dev": true, - "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" }, @@ -11670,58 +12047,62 @@ } }, "node_modules/jest-each": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.3.tgz", + "integrity": "sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", - "jest-get-type": "^29.2.0", - "jest-util": "^29.3.1", - "pretty-format": "^29.3.1" + "jest-get-type": "^29.6.3", + "jest-util": "^29.6.3", + "pretty-format": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.4.tgz", + "integrity": "sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.6.4", + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-get-type": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, - "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-haste-map": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.4.tgz", + "integrity": "sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.6.3", + "jest-worker": "^29.6.4", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -11733,43 +12114,46 @@ } }, "node_modules/jest-leak-detector": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz", + "integrity": "sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==", "dev": true, - "license": "MIT", "dependencies": { - "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz", + "integrity": "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.3.1", - "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "jest-diff": "^29.6.4", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz", + "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.6.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -11778,13 +12162,14 @@ } }, "node_modules/jest-mock": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz", + "integrity": "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-util": "^29.3.1" + "jest-util": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -11795,7 +12180,6 @@ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -11809,26 +12193,28 @@ } }, "node_modules/jest-regex-util": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, - "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.4.tgz", + "integrity": "sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.6.4", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", + "resolve.exports": "^2.0.0", "slash": "^3.0.0" }, "engines": { @@ -11836,41 +12222,43 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.4.tgz", + "integrity": "sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==", "dev": true, - "license": "MIT", "dependencies": { - "jest-regex-util": "^29.2.0", - "jest-snapshot": "^29.3.1" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.6.4" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.4.tgz", + "integrity": "sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/console": "^29.3.1", - "@jest/environment": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.6.4", + "@jest/environment": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^29.2.0", - "jest-environment-node": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-leak-detector": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-resolve": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-util": "^29.3.1", - "jest-watcher": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-docblock": "^29.6.3", + "jest-environment-node": "^29.6.4", + "jest-haste-map": "^29.6.4", + "jest-leak-detector": "^29.6.3", + "jest-message-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-runtime": "^29.6.4", + "jest-util": "^29.6.3", + "jest-watcher": "^29.6.4", + "jest-worker": "^29.6.4", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -11883,37 +12271,37 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "node_modules/jest-runtime": { - "version": "29.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/globals": "^29.3.1", - "@jest/source-map": "^29.2.0", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.4.tgz", + "integrity": "sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.6.4", + "@jest/fake-timers": "^29.6.4", + "@jest/globals": "^29.6.4", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-haste-map": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-mock": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -11926,51 +12314,48 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-snapshot": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.4.tgz", + "integrity": "sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", + "@jest/expect-utils": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.3.1", + "expect": "^29.6.4", "graceful-fs": "^4.2.9", - "jest-diff": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-haste-map": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-diff": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", "natural-compare": "^1.4.0", - "pretty-format": "^29.3.1", - "semver": "^7.3.5" + "pretty-format": "^29.6.3", + "semver": "^7.5.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-util": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz", + "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -11982,16 +12367,17 @@ } }, "node_modules/jest-validate": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz", + "integrity": "sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^29.2.0", + "jest-get-type": "^29.6.3", "leven": "^3.1.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -12002,7 +12388,6 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -12011,17 +12396,18 @@ } }, "node_modules/jest-watcher": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.4.tgz", + "integrity": "sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.3.1", + "jest-util": "^29.6.3", "string-length": "^4.0.1" }, "engines": { @@ -12029,12 +12415,13 @@ } }, "node_modules/jest-worker": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", + "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", - "jest-util": "^29.3.1", + "jest-util": "^29.6.3", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -12251,7 +12638,6 @@ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -12297,7 +12683,6 @@ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -12691,6 +13076,15 @@ "loose-envify": "cli.js" } }, + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, "node_modules/lowercase-keys": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", @@ -12760,7 +13154,6 @@ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } @@ -13049,6 +13442,15 @@ "node": ">=0.10.0" } }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -13095,6 +13497,31 @@ "node-gyp-build-optional-packages-test": "build-test.js" } }, + "node_modules/multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/multimatch/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -13269,8 +13696,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/node-preload": { "version": "0.2.1", @@ -13733,7 +14159,6 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -13971,6 +14396,15 @@ "node": ">=8" } }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/pause-stream": { "version": "0.0.11", "dev": true, @@ -14173,11 +14607,12 @@ } }, "node_modules/pretty-format": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", + "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", "dev": true, - "license": "MIT", "dependencies": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -14203,21 +14638,78 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true, - "license": "MIT" - }, - "node_modules/pretty-ms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", - "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", - "license": "MIT", + "license": "MIT" + }, + "node_modules/pretty-ms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", + "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", + "license": "MIT", + "dependencies": { + "parse-ms": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-quick": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", + "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "execa": "^4.0.0", + "find-up": "^4.1.0", + "ignore": "^5.1.4", + "mri": "^1.1.5", + "multimatch": "^4.0.0" + }, + "bin": { + "pretty-quick": "bin/pretty-quick.js" + }, + "engines": { + "node": ">=10.13" + }, + "peerDependencies": { + "prettier": ">=2.0.0" + } + }, + "node_modules/pretty-quick/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-quick/node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/pretty-quick/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { - "parse-ms": "^2.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/process": { @@ -14281,7 +14773,6 @@ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, - "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -14383,6 +14874,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pure-rand": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz", + "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, "node_modules/qs": { "version": "6.10.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", @@ -14895,7 +15402,6 @@ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -14914,9 +15420,10 @@ } }, "node_modules/resolve.exports": { - "version": "1.1.0", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } @@ -15318,8 +15825,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/slash": { "version": "3.0.0", @@ -15667,7 +16173,6 @@ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, - "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -16219,8 +16724,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause" + "dev": true }, "node_modules/to-fast-properties": { "version": "2.0.0", @@ -16738,7 +17242,6 @@ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -16774,8 +17277,9 @@ } }, "node_modules/typescript": { - "version": "4.9.4", - "license": "Apache-2.0", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -17037,9 +17541,10 @@ "license": "MIT" }, "node_modules/v8-to-istanbul": { - "version": "9.0.1", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, - "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", @@ -17105,7 +17610,6 @@ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } @@ -17577,7 +18081,6 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -19985,10 +20488,12 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.20.0", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-syntax-unicode-sets-regex": { @@ -20803,7 +21308,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.0.tgz", "integrity": "sha512-GKFCqwZwMYmL3IBoNeR2MM1SnxRIGERsQOTWeQKoYBt2JLqcqiy7JXqO894FLrpjZYqGxW92MNwRH2BN56obdQ==", - "peer": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -20829,7 +21333,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "peer": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -20950,47 +21453,51 @@ "dev": true }, "@jest/console": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.4.tgz", + "integrity": "sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", "slash": "^3.0.0" } }, "@jest/core": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.4.tgz", + "integrity": "sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==", "dev": true, "requires": { - "@jest/console": "^29.3.1", - "@jest/reporters": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.6.4", + "@jest/reporters": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.2.0", - "jest-config": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-resolve-dependencies": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "jest-watcher": "^29.3.1", + "jest-changed-files": "^29.6.3", + "jest-config": "^29.6.4", + "jest-haste-map": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-resolve-dependencies": "^29.6.4", + "jest-runner": "^29.6.4", + "jest-runtime": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", + "jest-watcher": "^29.6.4", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.6.3", "slash": "^3.0.0", "strip-ansi": "^6.0.0" } @@ -21027,62 +21534,74 @@ } }, "@jest/environment": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz", + "integrity": "sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==", "dev": true, "requires": { - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.3.1" + "jest-mock": "^29.6.3" } }, "@jest/expect": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.4.tgz", + "integrity": "sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==", "dev": true, "requires": { - "expect": "^29.3.1", - "jest-snapshot": "^29.3.1" + "expect": "^29.6.4", + "jest-snapshot": "^29.6.4" } }, "@jest/expect-utils": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.4.tgz", + "integrity": "sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==", "dev": true, "requires": { - "jest-get-type": "^29.2.0" + "jest-get-type": "^29.6.3" } }, "@jest/fake-timers": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz", + "integrity": "sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==", "dev": true, "requires": { - "@jest/types": "^29.3.1", - "@sinonjs/fake-timers": "^9.1.2", + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-message-util": "^29.6.3", + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" } }, "@jest/globals": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.4.tgz", + "integrity": "sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==", "dev": true, "requires": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/types": "^29.3.1", - "jest-mock": "^29.3.1" + "@jest/environment": "^29.6.4", + "@jest/expect": "^29.6.4", + "@jest/types": "^29.6.3", + "jest-mock": "^29.6.3" } }, "@jest/reporters": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.4.tgz", + "integrity": "sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/console": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", @@ -21090,74 +21609,99 @@ "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", + "jest-worker": "^29.6.4", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", "v8-to-istanbul": "^9.0.1" + }, + "dependencies": { + "istanbul-lib-instrument": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", + "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + } + } } }, "@jest/schemas": { - "version": "29.0.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "requires": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.27.8" } }, "@jest/source-map": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.15", + "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", "graceful-fs": "^4.2.9" } }, "@jest/test-result": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.4.tgz", + "integrity": "sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==", "dev": true, "requires": { - "@jest/console": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.6.4", + "@jest/types": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.4.tgz", + "integrity": "sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==", "dev": true, "requires": { - "@jest/test-result": "^29.3.1", + "@jest/test-result": "^29.6.4", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.6.4", "slash": "^3.0.0" } }, "@jest/transform": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.4.tgz", + "integrity": "sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/types": "^29.3.1", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", + "jest-haste-map": "^29.6.4", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.6.3", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "write-file-atomic": "^4.0.2" }, "dependencies": { "convert-source-map": { @@ -21168,6 +21712,8 @@ }, "write-file-atomic": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "requires": { "imurmurhash": "^0.1.4", @@ -21177,10 +21723,12 @@ } }, "@jest/types": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "requires": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -21232,11 +21780,13 @@ "version": "1.4.14" }, "@jridgewell/trace-mapping": { - "version": "0.3.17", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@lezer/common": { @@ -22224,7 +22774,9 @@ "dev": true }, "@sinclair/typebox": { - "version": "0.24.51", + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, "@sindresorhus/is": { @@ -22232,17 +22784,21 @@ "dev": true }, "@sinonjs/commons": { - "version": "1.8.6", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, "requires": { "type-detect": "4.0.8" } }, "@sinonjs/fake-timers": { - "version": "9.1.2", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "requires": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^3.0.0" } }, "@swc/core": { @@ -22317,11 +22873,13 @@ "version": "1.0.3" }, "@types/babel__core": { - "version": "7.1.20", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", + "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" @@ -22347,10 +22905,12 @@ } }, "@types/babel__traverse": { - "version": "7.18.3", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", + "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", "dev": true, "requires": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.20.7" } }, "@types/bluebird": { @@ -22369,6 +22929,12 @@ "@types/responselike": "^1.0.0" } }, + "@types/chai": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "dev": true + }, "@types/debug": { "version": "4.1.7", "dev": true, @@ -22406,7 +22972,9 @@ "dev": true }, "@types/graceful-fs": { - "version": "4.1.5", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", "dev": true, "requires": { "@types/node": "*" @@ -22452,7 +23020,9 @@ } }, "@types/jest": { - "version": "29.2.4", + "version": "29.5.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz", + "integrity": "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==", "dev": true, "requires": { "expect": "^29.0.0", @@ -22480,6 +23050,12 @@ "version": "4.14.191", "dev": true }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, "@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -22503,10 +23079,6 @@ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, - "@types/prettier": { - "version": "2.7.2", - "dev": true - }, "@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", @@ -22953,6 +23525,12 @@ "@babel/runtime-corejs3": "^7.10.2" } }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, "array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", @@ -23038,6 +23616,12 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, "ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", @@ -23120,13 +23704,15 @@ "version": "2.2.0" }, "babel-jest": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.4.tgz", + "integrity": "sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==", "dev": true, "requires": { - "@jest/transform": "^29.3.1", + "@jest/transform": "^29.6.4", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.2.0", + "babel-preset-jest": "^29.6.3", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -23155,7 +23741,9 @@ } }, "babel-plugin-jest-hoist": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "requires": { "@babel/template": "^7.3.3", @@ -23221,10 +23809,12 @@ } }, "babel-preset-jest": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^29.2.0", + "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -23551,6 +24141,21 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, + "chai": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", + "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -23675,6 +24280,12 @@ } } }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true + }, "check-more-types": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", @@ -23704,7 +24315,9 @@ "version": "3.7.0" }, "cjs-module-lexer": { - "version": "1.2.2", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", "dev": true }, "clean-stack": { @@ -23810,7 +24423,9 @@ "dev": true }, "collect-v8-coverage": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true }, "color-convert": { @@ -23829,6 +24444,11 @@ "colorette": { "version": "2.0.19" }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -24108,105 +24728,306 @@ "css-tree": { "version": "2.2.1", "dev": true, - "optional": true, - "peer": true, + "optional": true, + "peer": true, + "requires": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + } + }, + "mdn-data": { + "version": "2.0.28", + "dev": true, + "optional": true, + "peer": true + } + } + }, + "csstype": { + "version": "3.1.1", + "dev": true + }, + "cy2": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/cy2/-/cy2-3.4.3.tgz", + "integrity": "sha512-I1yfJWJTRy2ROti1TlLM5Qk86WSeKMrtZbY/G6VD2tjm3VKTu6pDkpcV56C2HhN+txK5p6MMsmzKXJM2W9JlxA==", + "requires": { + "acorn": "^8.8.0", + "debug": "^4.3.2", + "escodegen": "^2.0.0", + "estraverse": "^5.3.0", + "js-yaml": "^4.1.0", + "npm-which": "^3.0.1", + "slash": "3.0.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "cypress": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.2.0.tgz", + "integrity": "sha512-AvDQxBydE771GTq0TR4ZUBvv9m9ffXuB/ueEtpDF/6gOcvFR96amgwSJP16Yhqw6VhmwqspT5nAGzoxxB+D89g==", + "peer": true, + "requires": { + "@cypress/request": "^3.0.0", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^18.17.5", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + } + }, + "cypress-12-demo": { + "version": "file:e2e/cypress-12-demo", + "requires": { + "@types/chai": "^4.3.6", + "@types/node": "^17.0.12", + "chai": "^4.3.8", + "colors": "^1.4.0", + "cypress": "^12.17.4", + "cypress-cloud": "*", + "tsconfig": "*", + "typescript": "^5.2.2" + }, + "dependencies": { + "@cypress/request": { + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.10.3", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + } + }, + "@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, + "cypress": { + "version": "12.17.4", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.4.tgz", + "integrity": "sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==", + "dev": true, + "requires": { + "@cypress/request": "2.88.12", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^16.18.39", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "@types/node": { + "version": "16.18.48", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.48.tgz", + "integrity": "sha512-mlaecDKQ7rIZrYD7iiKNdzFb6e/qD5I9U1rAhq+Fd+DWvYVs+G2kv74UFHmSOlg5+i/vF3XxuR522V4u8BqO+Q==", + "dev": true + } + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { - "mdn-data": "2.0.28", - "source-map-js": "^1.0.1" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, - "mdn-data": { - "version": "2.0.28", - "dev": true, - "optional": true, - "peer": true + "typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true } } }, - "csstype": { - "version": "3.1.1", - "dev": true - }, - "cy2": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/cy2/-/cy2-3.4.3.tgz", - "integrity": "sha512-I1yfJWJTRy2ROti1TlLM5Qk86WSeKMrtZbY/G6VD2tjm3VKTu6pDkpcV56C2HhN+txK5p6MMsmzKXJM2W9JlxA==", + "cypress-13-demo": { + "version": "file:e2e/cypress-13-demo", "requires": { - "acorn": "^8.8.0", - "debug": "^4.3.2", - "escodegen": "^2.0.0", - "estraverse": "^5.3.0", - "js-yaml": "^4.1.0", - "npm-which": "^3.0.1", - "slash": "3.0.0" + "@types/node": "^17.0.12", + "colors": "^1.4.0", + "cypress": "13.1.0", + "cypress-cloud": "*", + "tsconfig": "*", + "typescript": "^4.7.4" }, "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "cypress": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.1.0.tgz", + "integrity": "sha512-LUKxCYlB973QBFls1Up4FAE9QIYobT+2I8NvvAwMfQS2YwsWbr6yx7y9hmsk97iqbHkKwZW3MRjoK1RToBFVdQ==", + "dev": true, "requires": { - "argparse": "^2.0.1" + "@cypress/request": "^3.0.0", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^16.18.39", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "@types/node": { + "version": "16.18.52", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.52.tgz", + "integrity": "sha512-sm2aph6cRSsTMFYFgI+RpPLunXO9ClJkpizUVdT7KmGeyfQ14xnjTMT/f3MHcfKqevXqGT6BgVFzW8wcEoDUtA==", + "dev": true + } } } } }, - "cypress": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.2.0.tgz", - "integrity": "sha512-AvDQxBydE771GTq0TR4ZUBvv9m9ffXuB/ueEtpDF/6gOcvFR96amgwSJP16Yhqw6VhmwqspT5nAGzoxxB+D89g==", - "peer": true, - "requires": { - "@cypress/request": "^3.0.0", - "@cypress/xvfb": "^1.2.4", - "@types/node": "^18.17.5", - "@types/sinonjs__fake-timers": "8.1.1", - "@types/sizzle": "^2.3.2", - "arch": "^2.2.0", - "blob-util": "^2.0.2", - "bluebird": "^3.7.2", - "buffer": "^5.6.0", - "cachedir": "^2.3.0", - "chalk": "^4.1.0", - "check-more-types": "^2.24.0", - "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.1", - "commander": "^6.2.1", - "common-tags": "^1.8.0", - "dayjs": "^1.10.4", - "debug": "^4.3.4", - "enquirer": "^2.3.6", - "eventemitter2": "6.4.7", - "execa": "4.1.0", - "executable": "^4.1.1", - "extract-zip": "2.0.1", - "figures": "^3.2.0", - "fs-extra": "^9.1.0", - "getos": "^3.2.1", - "is-ci": "^3.0.0", - "is-installed-globally": "~0.4.0", - "lazy-ass": "^1.6.0", - "listr2": "^3.8.3", - "lodash": "^4.17.21", - "log-symbols": "^4.0.0", - "minimist": "^1.2.8", - "ospath": "^1.2.2", - "pretty-bytes": "^5.6.0", - "process": "^0.11.10", - "proxy-from-env": "1.0.0", - "request-progress": "^3.0.0", - "semver": "^7.5.3", - "supports-color": "^8.1.1", - "tmp": "~0.2.1", - "untildify": "^4.0.0", - "yauzl": "^2.10.0" - } - }, "cypress-cloud": { "version": "file:packages/cypress-cloud", "requires": { @@ -24228,7 +25049,7 @@ "commander": "^10.0.0", "common-path-prefix": "^3.0.0", "cy2": "^3.4.2", - "cypress": "12", + "cypress": "^12.17.4", "date-fns": "^2.30.0", "debug": "^4.3.4", "esbuild": "^0.16.5", @@ -25625,8 +26446,20 @@ } }, "dedent": { - "version": "0.7.0", - "dev": true + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "requires": {} + }, + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } }, "deep-extend": { "version": "0.6.0", @@ -25640,7 +26473,9 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "deepmerge": { - "version": "4.2.2", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, "default-browser": { @@ -25796,7 +26631,9 @@ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" }, "diff-sequences": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true }, "dir-glob": { @@ -26528,14 +27365,16 @@ "dev": true }, "expect": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.4.tgz", + "integrity": "sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==", "dev": true, "requires": { - "@jest/expect-utils": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1" + "@jest/expect-utils": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3" } }, "extend": { @@ -26880,6 +27719,12 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true + }, "get-intrinsic": { "version": "1.1.3", "requires": { @@ -27303,6 +28148,12 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" }, + "husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -27864,20 +28715,25 @@ } }, "jest": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.4.tgz", + "integrity": "sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==", "dev": true, "requires": { - "@jest/core": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.6.4", + "@jest/types": "^29.6.3", "import-local": "^3.0.2", - "jest-cli": "^29.3.1" + "jest-cli": "^29.6.4" } }, "jest-changed-files": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.6.3.tgz", + "integrity": "sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==", "dev": true, "requires": { "execa": "^5.0.0", + "jest-util": "^29.6.3", "p-limit": "^3.1.0" }, "dependencies": { @@ -27907,178 +28763,205 @@ } }, "jest-circus": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.4.tgz", + "integrity": "sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==", "dev": true, "requires": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.6.4", + "@jest/expect": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "dedent": "^0.7.0", + "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-each": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-runtime": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", "p-limit": "^3.1.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.6.3", + "pure-rand": "^6.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-cli": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.4.tgz", + "integrity": "sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==", "dev": true, "requires": { - "@jest/core": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-config": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", "prompts": "^2.0.1", "yargs": "^17.3.1" } }, "jest-config": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.4.tgz", + "integrity": "sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.3.1", - "@jest/types": "^29.3.1", - "babel-jest": "^29.3.1", + "@jest/test-sequencer": "^29.6.4", + "@jest/types": "^29.6.3", + "babel-jest": "^29.6.4", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.3.1", - "jest-environment-node": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-circus": "^29.6.4", + "jest-environment-node": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-runner": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.6.3", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" } }, "jest-diff": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.4.tgz", + "integrity": "sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^29.3.1", - "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" } }, "jest-docblock": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.6.3.tgz", + "integrity": "sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.3.tgz", + "integrity": "sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", - "jest-get-type": "^29.2.0", - "jest-util": "^29.3.1", - "pretty-format": "^29.3.1" + "jest-get-type": "^29.6.3", + "jest-util": "^29.6.3", + "pretty-format": "^29.6.3" } }, "jest-environment-node": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.4.tgz", + "integrity": "sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==", "dev": true, "requires": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.6.4", + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" } }, "jest-get-type": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true }, "jest-haste-map": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.4.tgz", + "integrity": "sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "fsevents": "^2.3.2", "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.6.3", + "jest-worker": "^29.6.4", "micromatch": "^4.0.4", "walker": "^1.0.8" } }, "jest-leak-detector": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz", + "integrity": "sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==", "dev": true, "requires": { - "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" } }, "jest-matcher-utils": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz", + "integrity": "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^29.3.1", - "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "jest-diff": "^29.6.4", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" } }, "jest-message-util": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz", + "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.6.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-mock": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz", + "integrity": "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-util": "^29.3.1" + "jest-util": "^29.6.3" } }, "jest-pnp-resolver": { @@ -28089,55 +28972,63 @@ "requires": {} }, "jest-regex-util": { - "version": "29.2.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true }, "jest-resolve": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.4.tgz", + "integrity": "sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==", "dev": true, "requires": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.6.4", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", + "resolve.exports": "^2.0.0", "slash": "^3.0.0" } }, "jest-resolve-dependencies": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.4.tgz", + "integrity": "sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==", "dev": true, "requires": { - "jest-regex-util": "^29.2.0", - "jest-snapshot": "^29.3.1" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.6.4" } }, "jest-runner": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.4.tgz", + "integrity": "sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==", "dev": true, "requires": { - "@jest/console": "^29.3.1", - "@jest/environment": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.6.4", + "@jest/environment": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^29.2.0", - "jest-environment-node": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-leak-detector": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-resolve": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-util": "^29.3.1", - "jest-watcher": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-docblock": "^29.6.3", + "jest-environment-node": "^29.6.4", + "jest-haste-map": "^29.6.4", + "jest-leak-detector": "^29.6.3", + "jest-message-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-runtime": "^29.6.4", + "jest-util": "^29.6.3", + "jest-watcher": "^29.6.4", + "jest-worker": "^29.6.4", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -28155,29 +29046,31 @@ } }, "jest-runtime": { - "version": "29.3.1", - "dev": true, - "requires": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/globals": "^29.3.1", - "@jest/source-map": "^29.2.0", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.4.tgz", + "integrity": "sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==", + "dev": true, + "requires": { + "@jest/environment": "^29.6.4", + "@jest/fake-timers": "^29.6.4", + "@jest/globals": "^29.6.4", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-haste-map": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-mock": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -28191,40 +29084,40 @@ } }, "jest-snapshot": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.4.tgz", + "integrity": "sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==", "dev": true, "requires": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", + "@jest/expect-utils": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.3.1", + "expect": "^29.6.4", "graceful-fs": "^4.2.9", - "jest-diff": "^29.3.1", - "jest-get-type": "^29.2.0", - "jest-haste-map": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-diff": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", "natural-compare": "^1.4.0", - "pretty-format": "^29.3.1", - "semver": "^7.3.5" + "pretty-format": "^29.6.3", + "semver": "^7.5.3" } }, "jest-util": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz", + "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -28233,15 +29126,17 @@ } }, "jest-validate": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz", + "integrity": "sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^29.2.0", + "jest-get-type": "^29.6.3", "leven": "^3.1.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.6.3" }, "dependencies": { "camelcase": { @@ -28253,25 +29148,29 @@ } }, "jest-watcher": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.4.tgz", + "integrity": "sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==", "dev": true, "requires": { - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.3.1", + "jest-util": "^29.6.3", "string-length": "^4.0.1" } }, "jest-worker": { - "version": "29.3.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", + "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", "dev": true, "requires": { "@types/node": "*", - "jest-util": "^29.3.1", + "jest-util": "^29.6.3", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" } @@ -28731,6 +29630,15 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, "lowercase-keys": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", @@ -28971,6 +29879,12 @@ "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", "dev": true }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -29004,6 +29918,27 @@ } } }, + "multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + } + } + }, "mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -29571,6 +30506,12 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, "pause-stream": { "version": "0.0.11", "dev": true, @@ -29683,10 +30624,12 @@ "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" }, "pretty-format": { - "version": "29.3.1", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", + "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", "dev": true, "requires": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -29713,6 +30656,47 @@ "parse-ms": "^2.1.0" } }, + "pretty-quick": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", + "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "execa": "^4.0.0", + "find-up": "^4.1.0", + "ignore": "^5.1.4", + "mri": "^1.1.5", + "multimatch": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -29826,6 +30810,12 @@ "escape-goat": "^4.0.0" } }, + "pure-rand": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz", + "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==", + "dev": true + }, "qs": { "version": "6.10.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", @@ -30185,7 +31175,9 @@ "dev": true }, "resolve.exports": { - "version": "1.1.0", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true }, "responselike": { @@ -31565,7 +32557,9 @@ } }, "typescript": { - "version": "4.9.4" + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" }, "uglify-js": { "version": "3.17.4", @@ -31724,7 +32718,9 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" }, "v8-to-istanbul": { - "version": "9.0.1", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.12", diff --git a/package.json b/package.json index 6a1d42a..04bcc79 100644 --- a/package.json +++ b/package.json @@ -17,11 +17,14 @@ "test": "FORCE_COLOR=1 turbo run test", "test:watch": "turbo run test:watch", "format": "prettier --write \"**/*.{ts,tsx,md}\"", - "format-check": "prettier --check \"**/*.{ts,tsx,md}\"" + "format-check": "prettier --check \"**/*.{ts,tsx,md}\"", + "prepare": "husky install" }, "devDependencies": { "eslint-config-custom": "latest", + "husky": "^8.0.3", "prettier": "latest", + "pretty-quick": "^3.1.3", "turbo": "^1.10.13" }, "engines": { @@ -29,5 +32,11 @@ }, "resolutions": { "debug": "^4.3.4" + }, + "prettier": { + "trailingComma": "es5", + "tabWidth": 2, + "semi": true, + "singleQuote": false } } diff --git a/packages/cypress-cloud/bin/cli.ts b/packages/cypress-cloud/bin/cli.ts index b1a7726..7e6cc90 100755 --- a/packages/cypress-cloud/bin/cli.ts +++ b/packages/cypress-cloud/bin/cli.ts @@ -15,12 +15,11 @@ main() if (!result) { process.exit(1); } - // @ts-ignore + if (result.status === "failed") { process.exit(1); } - // @ts-ignore const overallFailed = result.totalFailed + result.totalSkipped; if (overallFailed > 0) { process.exit(overallFailed); diff --git a/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/README.md b/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/README.md index ad86121..f59885f 100644 --- a/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/README.md +++ b/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/README.md @@ -33,11 +33,12 @@ Credit: this builds on work by @PaperStrike in ') - .option('--double-sided') +program + .command("print") + .argument("") + .option("--double-sided") .action((targetFile, options) => { // command-arguments and options are fully typed }); @@ -46,19 +47,18 @@ program.command('print') For working with a single command without an action handler, the configuration need to be done at the same time as the variable is declared. ```js -import { Command } from '@commander-js/extra-typings'; +import { Command } from "@commander-js/extra-typings"; // broken pattern const program = new Command(); // program type does not include options or arguments -program.option('-d, --debug'); // adding option does not change type of program +program.option("-d, --debug"); // adding option does not change type of program const options = program.opts(); // dumb type ``` ```js -import { Command } from '@commander-js/extra-typings'; +import { Command } from "@commander-js/extra-typings"; // working pattern -const program = new Command() - .option('-d, --debug'); // program type includes chained options and arguments +const program = new Command().option("-d, --debug"); // program type includes chained options and arguments const options = program.opts(); // smart type ``` diff --git a/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/index.d.ts b/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/index.d.ts index 0d7b487..05b6bda 100644 --- a/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/index.d.ts +++ b/packages/cypress-cloud/bin/lib/@commander-js/extra-typings/index.d.ts @@ -1,4 +1,3 @@ - type TrimRight = S extends `${infer R} ` ? TrimRight : S; type TrimLeft = S extends ` ${infer R}` ? TrimLeft : S; type Trim = TrimLeft>; @@ -20,152 +19,299 @@ type Resolve = T extends infer O ? { [K in keyof O]: O[K] } : never; // - https://github.com/microsoft/TypeScript/issues/29729 // - https://github.com/sindresorhus/type-fest/blob/main/source/literal-union.d.ts // - https://github.com/sindresorhus/type-fest/blob/main/source/primitive.d.ts -type LiteralUnion = LiteralType | (BaseType & Record); +type LiteralUnion = + | LiteralType + | (BaseType & Record); // Side note: not trying to represent arrays as non-empty, keep it simple. // https://stackoverflow.com/a/56006703/1082434 -type InferVariadic = - S extends `${string}...` - ? ArgT[] - : ArgT; - -type InferArgumentType = - [CoerceT] extends [undefined] - ? InferVariadic | DefaultT - : ([ChoicesT] extends [undefined] - ? CoerceT | DefaultT - : CoerceT | DefaultT | ChoicesT - ) +type InferVariadic = S extends `${string}...` + ? ArgT[] + : ArgT; +type InferArgumentType = [ + CoerceT, +] extends [undefined] + ? + | InferVariadic + | DefaultT + : [ChoicesT] extends [undefined] + ? CoerceT | DefaultT + : CoerceT | DefaultT | ChoicesT; // Special handling for optional variadic argument, won't be undefined as implementation returns []. -type InferArgumentOptionalType = - Value extends `${string}...` - ? InferArgumentType - : InferArgumentType +type InferArgumentOptionalType< + Value extends string, + DefaultT, + CoerceT, + ChoicesT, +> = Value extends `${string}...` + ? InferArgumentType< + Value, + [DefaultT] extends [undefined] ? never : DefaultT, + CoerceT, + ChoicesT + > + : InferArgumentType; // ArgRequired comes from .argRequired()/.argOptional(), and ArgRequiredFromUsage is implied by usage /[optional] -type ResolveRequired = - ArgRequired extends undefined - ? ArgRequiredFromUsage - : ArgRequired; +type ResolveRequired< + ArgRequired extends boolean | undefined, + ArgRequiredFromUsage extends boolean, +> = ArgRequired extends undefined ? ArgRequiredFromUsage : ArgRequired; -type InferArgumentTypeResolvedRequired = - ArgRequired extends true - ? InferArgumentType - : InferArgumentOptionalType; +type InferArgumentTypeResolvedRequired< + Value extends string, + DefaultT, + CoerceT, + ArgRequired extends boolean, + ChoicesT, +> = ArgRequired extends true + ? InferArgumentType + : InferArgumentOptionalType; // Resolve whether argument required, and strip []/<> from around value. -type InferArgument = - S extends `<${infer Value}>` - ? InferArgumentTypeResolvedRequired, ChoicesT> - : S extends `[${infer Value}]` - ? InferArgumentTypeResolvedRequired, ChoicesT> - : InferArgumentTypeResolvedRequired, ChoicesT>; // the implementation fallback is treat as - -type InferArguments = - S extends `${infer First} ${infer Rest}` - ? [InferArgument, ...InferArguments>] - : [InferArgument]; +type InferArgument< + S extends string, + DefaultT = undefined, + CoerceT = undefined, + ArgRequired extends boolean | undefined = undefined, + ChoicesT = undefined, +> = S extends `<${infer Value}>` + ? InferArgumentTypeResolvedRequired< + Value, + DefaultT, + CoerceT, + ResolveRequired, + ChoicesT + > + : S extends `[${infer Value}]` + ? InferArgumentTypeResolvedRequired< + Value, + DefaultT, + CoerceT, + ResolveRequired, + ChoicesT + > + : InferArgumentTypeResolvedRequired< + S, + DefaultT, + CoerceT, + ResolveRequired, + ChoicesT + >; // the implementation fallback is treat as + +type InferArguments = S extends `${infer First} ${infer Rest}` + ? [InferArgument, ...InferArguments>] + : [InferArgument]; type InferCommmandArguments = - S extends `${string} ${infer Args}` - ? InferArguments> - : []; + S extends `${string} ${infer Args}` ? InferArguments> : []; type FlagsToFlag = - Flags extends `${string},${infer LongFlag}` - ? TrimLeft - : Flags extends `${string}|${infer LongFlag}` - ? TrimLeft - : Flags extends `${string} ${infer LongFlag}` - ? TrimLeft - : Flags; - -type ConvertFlagToName = - Flag extends `--no-${infer Name}` - ? CamelCase - : Flag extends `--${infer Name}` - ? CamelCase - : Flag extends `-${infer Name}` - ? CamelCase - : never; - -type CombineOptions = - keyof O extends keyof Options - ? { [K in keyof Options]: K extends keyof O ? Options[K] | O[keyof O] : Options[K] } - : Options & O; - -type IsAlwaysDefined = - Mandatory extends true - ? true - : [undefined] extends [DefaulT] - ? false - : true; + Flags extends `${string},${infer LongFlag}` + ? TrimLeft + : Flags extends `${string}|${infer LongFlag}` + ? TrimLeft + : Flags extends `${string} ${infer LongFlag}` + ? TrimLeft + : Flags; + +type ConvertFlagToName = Flag extends `--no-${infer Name}` + ? CamelCase + : Flag extends `--${infer Name}` + ? CamelCase + : Flag extends `-${infer Name}` + ? CamelCase + : never; + +type CombineOptions = keyof O extends keyof Options + ? { + [K in keyof Options]: K extends keyof O + ? Options[K] | O[keyof O] + : Options[K]; + } + : Options & O; + +type IsAlwaysDefined< + DefaulT, + Mandatory extends boolean, +> = Mandatory extends true + ? true + : [undefined] extends [DefaulT] + ? false + : true; // Modify PresetT to take into account negated. -type NegatePresetType = - Flag extends `--no-${string}` - ? undefined extends PresetT ? false : PresetT - : undefined extends PresetT ? true : PresetT; - +type NegatePresetType< + Flag extends string, + PresetT, +> = Flag extends `--no-${string}` + ? undefined extends PresetT + ? false + : PresetT + : undefined extends PresetT + ? true + : PresetT; + // Modify DefaultT to take into account negated. -type NegateDefaultType = - Flag extends `--no-${string}` - ? [undefined] extends [DefaultT] ? true : DefaultT - : [undefined] extends [DefaultT] ? never : DefaultT; // don't add undefined, will make property optional later - +type NegateDefaultType< + Flag extends string, + DefaultT, +> = Flag extends `--no-${string}` + ? [undefined] extends [DefaultT] + ? true + : DefaultT + : [undefined] extends [DefaultT] + ? never + : DefaultT; // don't add undefined, will make property optional later + // Modify ValueT to take into account coerce function. -type CoerceValueType = - [ValueT] extends [never] - ? never - : [CoerceT] extends [undefined] - ? ValueT - : CoerceT; - +type CoerceValueType = [ValueT] extends [never] + ? never + : [CoerceT] extends [undefined] + ? ValueT + : CoerceT; + // Modify PresetT to take into account coerce function. -type CoercePresetType = - [PresetT] extends [never] - ? never - : [CoerceT] extends [undefined] - ? PresetT - : undefined extends PresetT ? undefined : CoerceT; +type CoercePresetType = [PresetT] extends [never] + ? never + : [CoerceT] extends [undefined] + ? PresetT + : undefined extends PresetT + ? undefined + : CoerceT; -type BuildOptionProperty = - AlwaysDefined extends true - ? { [K in Name]: FullValueT } - : { [K in Name]?: FullValueT }; +type BuildOptionProperty< + Name extends string, + FullValueT, + AlwaysDefined extends boolean, +> = AlwaysDefined extends true + ? { [K in Name]: FullValueT } + : { [K in Name]?: FullValueT }; -type InferOptionsCombine = - Resolve>>; +type InferOptionsCombine< + Options, + Name extends string, + FullValueT, + AlwaysDefined extends boolean, +> = Resolve< + CombineOptions> +>; // Combine the possible types -type InferOptionsNegateCombo = - Flag extends `--no-${string}` - ? Name extends keyof Options - ? InferOptionsCombine // combo does not set default, leave that to positive option - : InferOptionsCombine // lone negated option sets default - : InferOptionsCombine; +type InferOptionsNegateCombo< + Options, + Flag extends string, + Name extends string, + ValueT, + PresetT, + DefaultT, + AlwaysDefined extends boolean, +> = Flag extends `--no-${string}` + ? Name extends keyof Options + ? InferOptionsCombine // combo does not set default, leave that to positive option + : InferOptionsCombine // lone negated option sets default + : InferOptionsCombine< + Options, + Name, + ValueT | PresetT | DefaultT, + AlwaysDefined + >; // Recalc values taking into account negated option. // Fill in appropriate PresetT value if undefined. -type InferOptionTypes = - InferOptionsNegateCombo, - CoerceValueType : InferVariadic>, - NegatePresetType>, - NegateDefaultType, - IsAlwaysDefined>; +type InferOptionTypes< + Options, + Flag extends string, + Value extends string, + ValueT, + PresetT, + DefaultT, + CoerceT, + Mandatory extends boolean, + ChoicesT, +> = InferOptionsNegateCombo< + Options, + Flag, + ConvertFlagToName, + CoerceValueType< + CoerceT, + [ChoicesT] extends [undefined] + ? InferVariadic + : InferVariadic + >, + NegatePresetType>, + NegateDefaultType, + IsAlwaysDefined +>; -type InferOptionsFlag = - InferOptionTypes>, Trim, ValueT, PresetT, DefaultT, CoerceT, Mandatory, ChoicesT>; +type InferOptionsFlag< + Options, + Flags extends string, + Value extends string, + ValueT, + PresetT, + DefaultT, + CoerceT, + Mandatory extends boolean, + ChoicesT, +> = InferOptionTypes< + Options, + FlagsToFlag>, + Trim, + ValueT, + PresetT, + DefaultT, + CoerceT, + Mandatory, + ChoicesT +>; // Split up Usage into Flags and Value -type InferOptions = - Usage extends `${infer Flags} <${infer Value}>` - ? InferOptionsFlag - : Usage extends `${infer Flags} [${infer Value}]` - ? InferOptionsFlag - : InferOptionsFlag; +type InferOptions< + Options, + Usage extends string, + DefaultT, + CoerceT, + Mandatory extends boolean, + PresetT = undefined, + ChoicesT = undefined, +> = Usage extends `${infer Flags} <${infer Value}>` + ? InferOptionsFlag< + Options, + Flags, + Value, + string, + never, + DefaultT, + CoerceT, + Mandatory, + ChoicesT + > + : Usage extends `${infer Flags} [${infer Value}]` + ? InferOptionsFlag< + Options, + Flags, + Value, + string, + PresetT, + DefaultT, + CoerceT, + Mandatory, + ChoicesT + > + : InferOptionsFlag< + Options, + Usage, + "", + never, + PresetT, + DefaultT, + CoerceT, + Mandatory, + ChoicesT + >; export type CommandUnknownOpts = Command; @@ -176,911 +322,1055 @@ export type CommandUnknownOpts = Command; /* eslint-disable @typescript-eslint/no-explicit-any */ export class CommanderError extends Error { - code: string; - exitCode: number; - message: string; - nestedError?: string; - - /** - * Constructs the CommanderError class - * @param exitCode - suggested exit code which could be used with process.exit - * @param code - an id string representing the error - * @param message - human-readable description of the error - * @constructor - */ - constructor(exitCode: number, code: string, message: string); - } - - export class InvalidArgumentError extends CommanderError { - /** - * Constructs the InvalidArgumentError class - * @param message - explanation of why argument is invalid - * @constructor - */ - constructor(message: string); - } - export { InvalidArgumentError as InvalidOptionArgumentError }; // deprecated old name - - export interface ErrorOptions { // optional parameter for error() - /** an id string representing the error */ - code?: string; - /** suggested exit code which could be used with process.exit */ - exitCode?: number; - } - - export class Argument { - description: string; - required: boolean; - variadic: boolean; - - /** - * Initialize a new command argument with the given name and description. - * The default is that the argument is required, and you can explicitly - * indicate this with <> around the name. Put [] around the name for an optional argument. - */ - constructor(arg: Usage, description?: string); - - /** - * Return argument name. - */ - name(): string; - - /** - * Set the default value, and optionally supply the description to be displayed in the help. - */ - default(value: T, description?: string): Argument; - - /** - * Set the custom handler for processing CLI command arguments into argument values. - */ - argParser(fn: (value: string, previous: T) => T): Argument; // setting ChoicesT to undefined because argParser overwrites choices - - /** - * Only allow argument value to be one of choices. - */ - choices(values: T): Argument; // setting CoerceT to undefined because choices overrides argParser - - /** - * Make argument required. - */ - argRequired(): Argument; - - /** - * Make argument optional. - */ - argOptional(): Argument; - } - - export class Option { - flags: string; - description: string; - - required: boolean; // A value must be supplied when the option is specified. - optional: boolean; // A value is optional when the option is specified. - variadic: boolean; - mandatory: boolean; // The option must have a value after parsing, which usually means it must be specified on command line. - optionFlags: string; - short?: string; - long?: string; - negate: boolean; - defaultValue?: any; - defaultValueDescription?: string; - parseArg?: (value: string, previous: T) => T; - hidden: boolean; - argChoices?: string[]; - - constructor(flags: Usage, description?: string); - - /** - * Set the default value, and optionally supply the description to be displayed in the help. - */ - default(value: T, description?: string): Option; - - /** - * Preset to use when option used without option-argument, especially optional but also boolean and negated. - * The custom processing (parseArg) is called. - * - * @example - * ```ts - * new Option('--color').default('GREYSCALE').preset('RGB'); - * new Option('--donate [amount]').preset('20').argParser(parseFloat); - * ``` - */ - preset(arg: T): Option; - - /** - * Add option name(s) that conflict with this option. - * An error will be displayed if conflicting options are found during parsing. - * - * @example - * ```ts - * new Option('--rgb').conflicts('cmyk'); - * new Option('--js').conflicts(['ts', 'jsx']); - * ``` - */ - conflicts(names: string | string[]): this; - - /** - * Specify implied option values for when this option is set and the implied options are not. - * - * The custom processing (parseArg) is not called on the implied values. - * - * @example - * program - * .addOption(new Option('--log', 'write logging information to file')) - * .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' })); - */ - implies(optionValues: OptionValues): this; - - /** - * Set environment variable to check for option value. - * - * An environment variables is only used if when processed the current option value is - * undefined, or the source of the current value is 'default' or 'config' or 'env'. - */ - env(name: string): this; - - /** - * Calculate the full description, including defaultValue etc. - */ - fullDescription(): string; - - /** - * Set the custom handler for processing CLI option arguments into option values. - */ - argParser(fn: (value: string, previous: T) => T): Option; // setting ChoicesT to undefined because argParser overrides choices - - /** - * Whether the option is mandatory and must have a value after parsing. - */ - makeOptionMandatory(mandatory?: M): Option; - - /** - * Hide option in help. - */ - hideHelp(hide?: boolean): this; - - /** - * Only allow option value to be one of choices. - */ - choices(values: T): Option; // setting CoerceT to undefined becuase choices overrides argParser - - /** - * Return option name. - */ - name(): string; - - /** - * Return option name, in a camelcase format that can be used - * as a object attribute key. - */ - attributeName(): string; - - /** - * Return whether a boolean option. - * - * Options are one of boolean, negated, required argument, or optional argument. - */ - isBoolean(): boolean; - } - - export class Help { - /** output helpWidth, long lines are wrapped to fit */ - helpWidth?: number; - sortSubcommands: boolean; - sortOptions: boolean; - showGlobalOptions: boolean; - - constructor(); - - /** Get the command term to show in the list of subcommands. */ - subcommandTerm(cmd: CommandUnknownOpts): string; - /** Get the command summary to show in the list of subcommands. */ - subcommandDescription(cmd: CommandUnknownOpts): string; - /** Get the option term to show in the list of options. */ - optionTerm(option: Option): string; - /** Get the option description to show in the list of options. */ - optionDescription(option: Option): string; - /** Get the argument term to show in the list of arguments. */ - argumentTerm(argument: Argument): string; - /** Get the argument description to show in the list of arguments. */ - argumentDescription(argument: Argument): string; - - /** Get the command usage to be displayed at the top of the built-in help. */ - commandUsage(cmd: CommandUnknownOpts): string; - /** Get the description for the command. */ - commandDescription(cmd: CommandUnknownOpts): string; - - /** Get an array of the visible subcommands. Includes a placeholder for the implicit help command, if there is one. */ - visibleCommands(cmd: CommandUnknownOpts): CommandUnknownOpts[]; - /** Get an array of the visible options. Includes a placeholder for the implicit help option, if there is one. */ - visibleOptions(cmd: CommandUnknownOpts): Option[]; - /** Get an array of the visible global options. (Not including help.) */ - visibleGlobalOptions(cmd: CommandUnknownOpts): Option[]; - /** Get an array of the arguments which have descriptions. */ - visibleArguments(cmd: CommandUnknownOpts): Argument[]; - - /** Get the longest command term length. */ - longestSubcommandTermLength(cmd: CommandUnknownOpts, helper: Help): number; - /** Get the longest option term length. */ - longestOptionTermLength(cmd: CommandUnknownOpts, helper: Help): number; - /** Get the longest global option term length. */ - longestGlobalOptionTermLength(cmd: CommandUnknownOpts, helper: Help): number; - /** Get the longest argument term length. */ - longestArgumentTermLength(cmd: CommandUnknownOpts, helper: Help): number; - /** Calculate the pad width from the maximum term length. */ - padWidth(cmd: CommandUnknownOpts, helper: Help): number; - - /** - * Wrap the given string to width characters per line, with lines after the first indented. - * Do not wrap if insufficient room for wrapping (minColumnWidth), or string is manually formatted. - */ - wrap(str: string, width: number, indent: number, minColumnWidth?: number): string; - - /** Generate the built-in help text. */ - formatHelp(cmd: CommandUnknownOpts, helper: Help): string; - } - export type HelpConfiguration = Partial; - - export interface ParseOptions { - from: 'node' | 'electron' | 'user'; - } - export interface HelpContext { // optional parameter for .help() and .outputHelp() - error: boolean; - } - export interface AddHelpTextContext { // passed to text function used with .addHelpText() - error: boolean; - command: Command; - } - export interface OutputConfiguration { - writeOut?(str: string): void; - writeErr?(str: string): void; - getOutHelpWidth?(): number; - getErrHelpWidth?(): number; - outputError?(str: string, write: (str: string) => void): void; - - } - - export type AddHelpTextPosition = 'beforeAll' | 'before' | 'after' | 'afterAll'; - export type HookEvent = 'preSubcommand' | 'preAction' | 'postAction'; - // The source is a string so author can define their own too. - export type OptionValueSource = LiteralUnion<'default' | 'config' | 'env' | 'cli' | 'implied', string> | undefined; - - export interface OptionValues { - [key: string]: unknown; - } - - export class Command { - args: string[]; - processedArgs: Args; - commands: CommandUnknownOpts[]; - parent: CommandUnknownOpts | null; - - constructor(name?: string); - - /** - * Set the program version to `str`. - * - * This method auto-registers the "-V, --version" flag - * which will print the version number when passed. - * - * You can optionally supply the flags and description to override the defaults. - */ - version(str: string, flags?: string, description?: string): this; - - /** - * Define a command, implemented using an action handler. - * - * @remarks - * The command description is supplied using `.description`, not as a parameter to `.command`. - * - * @example - * ```ts - * program - * .command('clone [destination]') - * .description('clone a repository into a newly created directory') - * .action((source, destination) => { - * console.log('clone command called'); - * }); - * ``` - * - * @param nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` - * @param opts - configuration options - * @returns new command - */ - command(nameAndArgs: Usage, opts?: CommandOptions): Command<[...InferCommmandArguments]>; - /** - * Define a command, implemented in a separate executable file. - * - * @remarks - * The command description is supplied as the second parameter to `.command`. - * - * @example - * ```ts - * program - * .command('start ', 'start named service') - * .command('stop [service]', 'stop named service, or all if no name supplied'); - * ``` - * - * @param nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` - * @param description - description of executable command - * @param opts - configuration options - * @returns `this` command for chaining - */ - command(nameAndArgs: string, description: string, opts?: ExecutableCommandOptions): this; - - /** - * Factory routine to create a new unattached command. - * - * See .command() for creating an attached subcommand, which uses this routine to - * create the command. You can override createCommand to customise subcommands. - */ - createCommand(name?: string): Command; - - /** - * Add a prepared subcommand. - * - * See .command() for creating an attached subcommand which inherits settings from its parent. - * - * @returns `this` command for chaining - */ - addCommand(cmd: CommandUnknownOpts, opts?: CommandOptions): this; - - /** - * Factory routine to create a new unattached argument. - * - * See .argument() for creating an attached argument, which uses this routine to - * create the argument. You can override createArgument to return a custom argument. - */ - createArgument(name: Usage, description?: string): Argument; - - /** - * Define argument syntax for command. - * - * The default is that the argument is required, and you can explicitly - * indicate this with <> around the name. Put [] around the name for an optional argument. - * - * @example - * ``` - * program.argument(''); - * program.argument('[output-file]'); - * ``` - * - * @returns `this` command for chaining - */ - argument( - flags: S, description: string, fn: (value: string, previous: T) => T): Command<[...Args, InferArgument]>; - argument( - flags: S, description: string, fn: (value: string, previous: T) => T, defaultValue: T): Command<[...Args, InferArgument]>; - argument( - usage: S, description?: string): Command<[...Args, InferArgument]>; - argument( - usage: S, description: string, defaultValue: DefaultT): Command<[...Args, InferArgument]>; - - /** - * Define argument syntax for command, adding a prepared argument. - * - * @returns `this` command for chaining - */ - addArgument( - arg: Argument): Command<[...Args, InferArgument]>; - - - /** - * Define argument syntax for command, adding multiple at once (without descriptions). - * - * See also .argument(). - * - * @example - * ``` - * program.arguments(' [env]'); - * ``` - * - * @returns `this` command for chaining - */ - arguments(args: Names): Command<[...Args, ...InferArguments]>; - - - /** - * Override default decision whether to add implicit help command. - * - * @example - * ``` - * addHelpCommand() // force on - * addHelpCommand(false); // force off - * addHelpCommand('help [cmd]', 'display help for [cmd]'); // force on with custom details - * ``` - * - * @returns `this` command for chaining - */ - addHelpCommand(enableOrNameAndArgs?: string | boolean, description?: string): this; - - /** - * Add hook for life cycle event. - */ - hook(event: HookEvent, listener: (thisCommand: this, actionCommand: CommandUnknownOpts) => void | Promise): this; - - /** - * Register callback to use as replacement for calling process.exit. - */ - exitOverride(callback?: (err: CommanderError) => never | void): this; - - /** - * Display error message and exit (or call exitOverride). - */ - error(message: string, errorOptions?: ErrorOptions): never; - - /** - * You can customise the help with a subclass of Help by overriding createHelp, - * or by overriding Help properties using configureHelp(). - */ - createHelp(): Help; - - /** - * You can customise the help by overriding Help properties using configureHelp(), - * or with a subclass of Help by overriding createHelp(). - */ - configureHelp(configuration: HelpConfiguration): this; - /** Get configuration */ - configureHelp(): HelpConfiguration; - - /** - * The default output goes to stdout and stderr. You can customise this for special - * applications. You can also customise the display of errors by overriding outputError. - * - * The configuration properties are all functions: - * ``` - * // functions to change where being written, stdout and stderr - * writeOut(str) - * writeErr(str) - * // matching functions to specify width for wrapping help - * getOutHelpWidth() - * getErrHelpWidth() - * // functions based on what is being written out - * outputError(str, write) // used for displaying errors, and not used for displaying help - * ``` - */ - configureOutput(configuration: OutputConfiguration): this; - /** Get configuration */ - configureOutput(): OutputConfiguration; - - /** - * Copy settings that are useful to have in common across root command and subcommands. - * - * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.) - */ - copyInheritedSettings(sourceCommand: CommandUnknownOpts): this; - - /** - * Display the help or a custom message after an error occurs. - */ - showHelpAfterError(displayHelp?: boolean | string): this; - - /** - * Display suggestion of similar commands for unknown commands, or options for unknown options. - */ - showSuggestionAfterError(displaySuggestion?: boolean): this; - - /** - * Register callback `fn` for the command. - * - * @example - * ``` - * program - * .command('serve') - * .description('start service') - * .action(function() { - * // do work here - * }); - * ``` - * - * @returns `this` command for chaining - */ - action(fn: (...args: [...Args, Opts, this]) => void | Promise): this; - - /** - * Define option with `flags`, `description` and optional - * coercion `fn`. - * - * The `flags` string contains the short and/or long flags, - * separated by comma, a pipe or space. The following are all valid - * all will output this way when `--help` is used. - * - * "-p, --pepper" - * "-p|--pepper" - * "-p --pepper" - * - * @example - * ``` - * // simple boolean defaulting to false - * program.option('-p, --pepper', 'add pepper'); - * - * --pepper - * program.pepper - * // => Boolean - * - * // simple boolean defaulting to true - * program.option('-C, --no-cheese', 'remove cheese'); - * - * program.cheese - * // => true - * - * --no-cheese - * program.cheese - * // => false - * - * // required argument - * program.option('-C, --chdir ', 'change the working directory'); - * - * --chdir /tmp - * program.chdir - * // => "/tmp" - * - * // optional argument - * program.option('-c, --cheese [type]', 'add cheese [marble]'); - * ``` - * - * @returns `this` command for chaining - */ - option( - usage: S, description?: string): Command>; - option( - usage: S, description?: string, defaultValue?: DefaultT): Command>; - option( - usage: S, description: string, fn: (value: string, previous: T) => T): Command>; - option( - usage: S, description: string, fn: (value: string, previous: T) => T, defaultValue?: T): Command>; - - /** - * Define a required option, which must have a value after parsing. This usually means - * the option must be specified on the command line. (Otherwise the same as .option().) - * - * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. - */ - requiredOption( - usage: S, description?: string): Command>; - requiredOption( - usage: S, description?: string, defaultValue?: DefaultT): Command>; - requiredOption( - usage: S, description: string, fn: (value: string, previous: T) => T): Command>; - requiredOption( - usage: S, description: string, fn: (value: string, previous: T) => T, defaultValue?: D): Command>; - - /** - * Factory routine to create a new unattached option. - * - * See .option() for creating an attached option, which uses this routine to - * create the option. You can override createOption to return a custom option. - */ - - createOption(flags: Usage, description?: string): Option; - - /** - * Add a prepared Option. - * - * See .option() and .requiredOption() for creating and attaching an option in a single call. - */ - addOption( - option: Option): Command>; - - /** - * Whether to store option values as properties on command object, - * or store separately (specify false). In both cases the option values can be accessed using .opts(). - * - * @returns `this` command for chaining - */ - storeOptionsAsProperties(): this & T; - storeOptionsAsProperties(storeAsProperties: true): this & T; - storeOptionsAsProperties(storeAsProperties?: boolean): this; - - /** - * Retrieve option value. - */ - getOptionValue(key: K): Opts[K]; - getOptionValue(key: string): unknown; - - /** - * Store option value. - */ - setOptionValue(key: K, value: unknown): this; - setOptionValue(key: string, value: unknown): this; - - /** - * Store option value and where the value came from. - */ - setOptionValueWithSource(key: K, value: unknown, source: OptionValueSource): this; - setOptionValueWithSource(key: string, value: unknown, source: OptionValueSource): this; - - /** - * Get source of option value. - */ - getOptionValueSource(key: K): OptionValueSource | undefined; - getOptionValueSource(key: string): OptionValueSource | undefined; - - /** - * Get source of option value. See also .optsWithGlobals(). - */ - getOptionValueSourceWithGlobals(key: K): OptionValueSource | undefined; - getOptionValueSourceWithGlobals(key: string): OptionValueSource | undefined; - - /** - * Alter parsing of short flags with optional values. - * - * @example - * ``` - * // for `.option('-f,--flag [value]'): - * .combineFlagAndOptionalValue(true) // `-f80` is treated like `--flag=80`, this is the default behaviour - * .combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b` - * ``` - * - * @returns `this` command for chaining - */ - combineFlagAndOptionalValue(combine?: boolean): this; - - /** - * Allow unknown options on the command line. - * - * @returns `this` command for chaining - */ - allowUnknownOption(allowUnknown?: boolean): this; - - /** - * Allow excess command-arguments on the command line. Pass false to make excess arguments an error. - * - * @returns `this` command for chaining - */ - allowExcessArguments(allowExcess?: boolean): this; - - /** - * Enable positional options. Positional means global options are specified before subcommands which lets - * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions. - * - * The default behaviour is non-positional and global options may appear anywhere on the command line. - * - * @returns `this` command for chaining - */ - enablePositionalOptions(positional?: boolean): this; - - /** - * Pass through options that come after command-arguments rather than treat them as command-options, - * so actual command-options come before command-arguments. Turning this on for a subcommand requires - * positional options to have been enabled on the program (parent commands). - * - * The default behaviour is non-positional and options may appear before or after command-arguments. - * - * @returns `this` command for chaining - */ - passThroughOptions(passThrough?: boolean): this; - - /** - * Parse `argv`, setting options and invoking commands when defined. - * - * The default expectation is that the arguments are from node and have the application as argv[0] - * and the script being run in argv[1], with user parameters after that. - * - * @example - * ``` - * program.parse(process.argv); - * program.parse(); // implicitly use process.argv and auto-detect node vs electron conventions - * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0] - * ``` - * - * @returns `this` command for chaining - */ - parse(argv?: readonly string[], options?: ParseOptions): this; - - /** - * Parse `argv`, setting options and invoking commands when defined. - * - * Use parseAsync instead of parse if any of your action handlers are async. Returns a Promise. - * - * The default expectation is that the arguments are from node and have the application as argv[0] - * and the script being run in argv[1], with user parameters after that. - * - * @example - * ``` - * program.parseAsync(process.argv); - * program.parseAsync(); // implicitly use process.argv and auto-detect node vs electron conventions - * program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0] - * ``` - * - * @returns Promise - */ - parseAsync(argv?: readonly string[], options?: ParseOptions): Promise; - - /** - * Parse options from `argv` removing known options, - * and return argv split into operands and unknown arguments. - * - * argv => operands, unknown - * --known kkk op => [op], [] - * op --known kkk => [op], [] - * sub --unknown uuu op => [sub], [--unknown uuu op] - * sub -- --unknown uuu op => [sub --unknown uuu op], [] - */ - parseOptions(argv: string[]): ParseOptionsResult; - - /** - * Return an object containing local option values as key-value pairs - */ - opts(): Opts; - - /** - * Return an object containing merged local and global option values as key-value pairs. - */ - optsWithGlobals(): T; - - /** - * Set the description. - * - * @returns `this` command for chaining - */ - - description(str: string): this; - /** @deprecated since v8, instead use .argument to add command argument with description */ - description(str: string, argsDescription: {[argName: string]: string}): this; - /** - * Get the description. - */ - description(): string; - - /** - * Set the summary. Used when listed as subcommand of parent. - * - * @returns `this` command for chaining - */ - - summary(str: string): this; - /** - * Get the summary. - */ - summary(): string; - - /** - * Set an alias for the command. - * - * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help. - * - * @returns `this` command for chaining - */ - alias(alias: string): this; - /** - * Get alias for the command. - */ - alias(): string; - - /** - * Set aliases for the command. - * - * Only the first alias is shown in the auto-generated help. - * - * @returns `this` command for chaining - */ - aliases(aliases: readonly string[]): this; - /** - * Get aliases for the command. - */ - aliases(): string[]; - - /** - * Set the command usage. - * - * @returns `this` command for chaining - */ - usage(str: string): this; - /** - * Get the command usage. - */ - usage(): string; - - /** - * Set the name of the command. - * - * @returns `this` command for chaining - */ - name(str: string): this; - /** - * Get the name of the command. - */ - name(): string; - - /** - * Set the name of the command from script filename, such as process.argv[1], - * or require.main.filename, or __filename. - * - * (Used internally and public although not documented in README.) - * - * @example - * ```ts - * program.nameFromFilename(require.main.filename); - * ``` - * - * @returns `this` command for chaining - */ - nameFromFilename(filename: string): this; - - /** - * Set the directory for searching for executable subcommands of this command. - * - * @example - * ```ts - * program.executableDir(__dirname); - * // or - * program.executableDir('subcommands'); - * ``` - * - * @returns `this` command for chaining - */ - executableDir(path: string): this; - /** - * Get the executable search directory. - */ - executableDir(): string; - - /** - * Output help information for this command. - * - * Outputs built-in help, and custom text added using `.addHelpText()`. - * - */ - outputHelp(context?: HelpContext): void; - /** @deprecated since v7 */ - outputHelp(cb?: (str: string) => string): void; - - /** - * Return command help documentation. - */ - helpInformation(context?: HelpContext): string; - - /** - * You can pass in flags and a description to override the help - * flags and help description for your command. Pass in false - * to disable the built-in help option. - */ - helpOption(flags?: string | boolean, description?: string): this; - - /** - * Output help information and exit. - * - * Outputs built-in help, and custom text added using `.addHelpText()`. - */ - help(context?: HelpContext): never; - /** @deprecated since v7 */ - help(cb?: (str: string) => string): never; - - /** - * Add additional text to be displayed with the built-in help. - * - * Position is 'before' or 'after' to affect just this command, - * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands. - */ - addHelpText(position: AddHelpTextPosition, text: string): this; - addHelpText(position: AddHelpTextPosition, text: (context: AddHelpTextContext) => string): this; - - /** - * Add a listener (callback) for when events occur. (Implemented using EventEmitter.) - */ - on(event: string | symbol, listener: (...args: any[]) => void): this; - } - - export interface CommandOptions { - hidden?: boolean; - isDefault?: boolean; - /** @deprecated since v7, replaced by hidden */ - noHelp?: boolean; - } - export interface ExecutableCommandOptions extends CommandOptions { - executableFile?: string; - } - - export interface ParseOptionsResult { - operands: string[]; - unknown: string[]; - } - - export function createCommand(name?: string): Command; - export function createOption(flags: Usage, description?: string): Option; - export function createArgument(name: Usage, description?: string): Argument; - - export const program: Command; - + code: string; + exitCode: number; + message: string; + nestedError?: string; + + /** + * Constructs the CommanderError class + * @param exitCode - suggested exit code which could be used with process.exit + * @param code - an id string representing the error + * @param message - human-readable description of the error + * @constructor + */ + constructor(exitCode: number, code: string, message: string); +} + +export class InvalidArgumentError extends CommanderError { + /** + * Constructs the InvalidArgumentError class + * @param message - explanation of why argument is invalid + * @constructor + */ + constructor(message: string); +} +export { InvalidArgumentError as InvalidOptionArgumentError }; // deprecated old name + +export interface ErrorOptions { + // optional parameter for error() + /** an id string representing the error */ + code?: string; + /** suggested exit code which could be used with process.exit */ + exitCode?: number; +} + +export class Argument< + Usage extends string = "", + DefaultT = undefined, + CoerceT = undefined, + ArgRequired extends boolean | undefined = undefined, + ChoicesT = undefined, +> { + description: string; + required: boolean; + variadic: boolean; + + /** + * Initialize a new command argument with the given name and description. + * The default is that the argument is required, and you can explicitly + * indicate this with <> around the name. Put [] around the name for an optional argument. + */ + constructor(arg: Usage, description?: string); + + /** + * Return argument name. + */ + name(): string; + + /** + * Set the default value, and optionally supply the description to be displayed in the help. + */ + default( + value: T, + description?: string + ): Argument; + + /** + * Set the custom handler for processing CLI command arguments into argument values. + */ + argParser( + fn: (value: string, previous: T) => T + ): Argument; // setting ChoicesT to undefined because argParser overwrites choices + + /** + * Only allow argument value to be one of choices. + */ + choices( + values: T + ): Argument; // setting CoerceT to undefined because choices overrides argParser + + /** + * Make argument required. + */ + argRequired(): Argument; + + /** + * Make argument optional. + */ + argOptional(): Argument; +} + +export class Option< + Usage extends string = "", + PresetT = undefined, + DefaultT = undefined, + CoerceT = undefined, + Mandatory extends boolean = false, + ChoicesT = undefined, +> { + flags: string; + description: string; + + required: boolean; // A value must be supplied when the option is specified. + optional: boolean; // A value is optional when the option is specified. + variadic: boolean; + mandatory: boolean; // The option must have a value after parsing, which usually means it must be specified on command line. + optionFlags: string; + short?: string; + long?: string; + negate: boolean; + defaultValue?: any; + defaultValueDescription?: string; + parseArg?: (value: string, previous: T) => T; + hidden: boolean; + argChoices?: string[]; + + constructor(flags: Usage, description?: string); + + /** + * Set the default value, and optionally supply the description to be displayed in the help. + */ + default( + value: T, + description?: string + ): Option; + + /** + * Preset to use when option used without option-argument, especially optional but also boolean and negated. + * The custom processing (parseArg) is called. + * + * @example + * ```ts + * new Option('--color').default('GREYSCALE').preset('RGB'); + * new Option('--donate [amount]').preset('20').argParser(parseFloat); + * ``` + */ + preset(arg: T): Option; + + /** + * Add option name(s) that conflict with this option. + * An error will be displayed if conflicting options are found during parsing. + * + * @example + * ```ts + * new Option('--rgb').conflicts('cmyk'); + * new Option('--js').conflicts(['ts', 'jsx']); + * ``` + */ + conflicts(names: string | string[]): this; + + /** + * Specify implied option values for when this option is set and the implied options are not. + * + * The custom processing (parseArg) is not called on the implied values. + * + * @example + * program + * .addOption(new Option('--log', 'write logging information to file')) + * .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' })); + */ + implies(optionValues: OptionValues): this; + + /** + * Set environment variable to check for option value. + * + * An environment variables is only used if when processed the current option value is + * undefined, or the source of the current value is 'default' or 'config' or 'env'. + */ + env(name: string): this; + + /** + * Calculate the full description, including defaultValue etc. + */ + fullDescription(): string; + + /** + * Set the custom handler for processing CLI option arguments into option values. + */ + argParser( + fn: (value: string, previous: T) => T + ): Option; // setting ChoicesT to undefined because argParser overrides choices + + /** + * Whether the option is mandatory and must have a value after parsing. + */ + makeOptionMandatory( + mandatory?: M + ): Option; + + /** + * Hide option in help. + */ + hideHelp(hide?: boolean): this; + + /** + * Only allow option value to be one of choices. + */ + choices( + values: T + ): Option; // setting CoerceT to undefined becuase choices overrides argParser + + /** + * Return option name. + */ + name(): string; + + /** + * Return option name, in a camelcase format that can be used + * as a object attribute key. + */ + attributeName(): string; + + /** + * Return whether a boolean option. + * + * Options are one of boolean, negated, required argument, or optional argument. + */ + isBoolean(): boolean; +} + +export class Help { + /** output helpWidth, long lines are wrapped to fit */ + helpWidth?: number; + sortSubcommands: boolean; + sortOptions: boolean; + showGlobalOptions: boolean; + + constructor(); + + /** Get the command term to show in the list of subcommands. */ + subcommandTerm(cmd: CommandUnknownOpts): string; + /** Get the command summary to show in the list of subcommands. */ + subcommandDescription(cmd: CommandUnknownOpts): string; + /** Get the option term to show in the list of options. */ + optionTerm(option: Option): string; + /** Get the option description to show in the list of options. */ + optionDescription(option: Option): string; + /** Get the argument term to show in the list of arguments. */ + argumentTerm(argument: Argument): string; + /** Get the argument description to show in the list of arguments. */ + argumentDescription(argument: Argument): string; + + /** Get the command usage to be displayed at the top of the built-in help. */ + commandUsage(cmd: CommandUnknownOpts): string; + /** Get the description for the command. */ + commandDescription(cmd: CommandUnknownOpts): string; + + /** Get an array of the visible subcommands. Includes a placeholder for the implicit help command, if there is one. */ + visibleCommands(cmd: CommandUnknownOpts): CommandUnknownOpts[]; + /** Get an array of the visible options. Includes a placeholder for the implicit help option, if there is one. */ + visibleOptions(cmd: CommandUnknownOpts): Option[]; + /** Get an array of the visible global options. (Not including help.) */ + visibleGlobalOptions(cmd: CommandUnknownOpts): Option[]; + /** Get an array of the arguments which have descriptions. */ + visibleArguments(cmd: CommandUnknownOpts): Argument[]; + + /** Get the longest command term length. */ + longestSubcommandTermLength(cmd: CommandUnknownOpts, helper: Help): number; + /** Get the longest option term length. */ + longestOptionTermLength(cmd: CommandUnknownOpts, helper: Help): number; + /** Get the longest global option term length. */ + longestGlobalOptionTermLength(cmd: CommandUnknownOpts, helper: Help): number; + /** Get the longest argument term length. */ + longestArgumentTermLength(cmd: CommandUnknownOpts, helper: Help): number; + /** Calculate the pad width from the maximum term length. */ + padWidth(cmd: CommandUnknownOpts, helper: Help): number; + + /** + * Wrap the given string to width characters per line, with lines after the first indented. + * Do not wrap if insufficient room for wrapping (minColumnWidth), or string is manually formatted. + */ + wrap( + str: string, + width: number, + indent: number, + minColumnWidth?: number + ): string; + + /** Generate the built-in help text. */ + formatHelp(cmd: CommandUnknownOpts, helper: Help): string; +} +export type HelpConfiguration = Partial; + +export interface ParseOptions { + from: "node" | "electron" | "user"; +} +export interface HelpContext { + // optional parameter for .help() and .outputHelp() + error: boolean; +} +export interface AddHelpTextContext { + // passed to text function used with .addHelpText() + error: boolean; + command: Command; +} +export interface OutputConfiguration { + writeOut?(str: string): void; + writeErr?(str: string): void; + getOutHelpWidth?(): number; + getErrHelpWidth?(): number; + outputError?(str: string, write: (str: string) => void): void; +} + +export type AddHelpTextPosition = "beforeAll" | "before" | "after" | "afterAll"; +export type HookEvent = "preSubcommand" | "preAction" | "postAction"; +// The source is a string so author can define their own too. +export type OptionValueSource = + | LiteralUnion<"default" | "config" | "env" | "cli" | "implied", string> + | undefined; + +export interface OptionValues { + [key: string]: unknown; +} + +export class Command { + args: string[]; + processedArgs: Args; + commands: CommandUnknownOpts[]; + parent: CommandUnknownOpts | null; + + constructor(name?: string); + + /** + * Set the program version to `str`. + * + * This method auto-registers the "-V, --version" flag + * which will print the version number when passed. + * + * You can optionally supply the flags and description to override the defaults. + */ + version(str: string, flags?: string, description?: string): this; + + /** + * Define a command, implemented using an action handler. + * + * @remarks + * The command description is supplied using `.description`, not as a parameter to `.command`. + * + * @example + * ```ts + * program + * .command('clone [destination]') + * .description('clone a repository into a newly created directory') + * .action((source, destination) => { + * console.log('clone command called'); + * }); + * ``` + * + * @param nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` + * @param opts - configuration options + * @returns new command + */ + command( + nameAndArgs: Usage, + opts?: CommandOptions + ): Command<[...InferCommmandArguments]>; + /** + * Define a command, implemented in a separate executable file. + * + * @remarks + * The command description is supplied as the second parameter to `.command`. + * + * @example + * ```ts + * program + * .command('start ', 'start named service') + * .command('stop [service]', 'stop named service, or all if no name supplied'); + * ``` + * + * @param nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` + * @param description - description of executable command + * @param opts - configuration options + * @returns `this` command for chaining + */ + command( + nameAndArgs: string, + description: string, + opts?: ExecutableCommandOptions + ): this; + + /** + * Factory routine to create a new unattached command. + * + * See .command() for creating an attached subcommand, which uses this routine to + * create the command. You can override createCommand to customise subcommands. + */ + createCommand(name?: string): Command; + + /** + * Add a prepared subcommand. + * + * See .command() for creating an attached subcommand which inherits settings from its parent. + * + * @returns `this` command for chaining + */ + addCommand(cmd: CommandUnknownOpts, opts?: CommandOptions): this; + + /** + * Factory routine to create a new unattached argument. + * + * See .argument() for creating an attached argument, which uses this routine to + * create the argument. You can override createArgument to return a custom argument. + */ + createArgument( + name: Usage, + description?: string + ): Argument; + + /** + * Define argument syntax for command. + * + * The default is that the argument is required, and you can explicitly + * indicate this with <> around the name. Put [] around the name for an optional argument. + * + * @example + * ``` + * program.argument(''); + * program.argument('[output-file]'); + * ``` + * + * @returns `this` command for chaining + */ + argument( + flags: S, + description: string, + fn: (value: string, previous: T) => T + ): Command<[...Args, InferArgument]>; + argument( + flags: S, + description: string, + fn: (value: string, previous: T) => T, + defaultValue: T + ): Command<[...Args, InferArgument]>; + argument( + usage: S, + description?: string + ): Command<[...Args, InferArgument]>; + argument( + usage: S, + description: string, + defaultValue: DefaultT + ): Command<[...Args, InferArgument]>; + + /** + * Define argument syntax for command, adding a prepared argument. + * + * @returns `this` command for chaining + */ + addArgument< + Usage extends string, + DefaultT, + CoerceT, + ArgRequired extends boolean | undefined, + ChoicesT, + >( + arg: Argument + ): Command< + [...Args, InferArgument] + >; + + /** + * Define argument syntax for command, adding multiple at once (without descriptions). + * + * See also .argument(). + * + * @example + * ``` + * program.arguments(' [env]'); + * ``` + * + * @returns `this` command for chaining + */ + arguments( + args: Names + ): Command<[...Args, ...InferArguments]>; + + /** + * Override default decision whether to add implicit help command. + * + * @example + * ``` + * addHelpCommand() // force on + * addHelpCommand(false); // force off + * addHelpCommand('help [cmd]', 'display help for [cmd]'); // force on with custom details + * ``` + * + * @returns `this` command for chaining + */ + addHelpCommand( + enableOrNameAndArgs?: string | boolean, + description?: string + ): this; + + /** + * Add hook for life cycle event. + */ + hook( + event: HookEvent, + listener: ( + thisCommand: this, + actionCommand: CommandUnknownOpts + ) => void | Promise + ): this; + + /** + * Register callback to use as replacement for calling process.exit. + */ + exitOverride(callback?: (err: CommanderError) => never | void): this; + + /** + * Display error message and exit (or call exitOverride). + */ + error(message: string, errorOptions?: ErrorOptions): never; + + /** + * You can customise the help with a subclass of Help by overriding createHelp, + * or by overriding Help properties using configureHelp(). + */ + createHelp(): Help; + + /** + * You can customise the help by overriding Help properties using configureHelp(), + * or with a subclass of Help by overriding createHelp(). + */ + configureHelp(configuration: HelpConfiguration): this; + /** Get configuration */ + configureHelp(): HelpConfiguration; + + /** + * The default output goes to stdout and stderr. You can customise this for special + * applications. You can also customise the display of errors by overriding outputError. + * + * The configuration properties are all functions: + * ``` + * // functions to change where being written, stdout and stderr + * writeOut(str) + * writeErr(str) + * // matching functions to specify width for wrapping help + * getOutHelpWidth() + * getErrHelpWidth() + * // functions based on what is being written out + * outputError(str, write) // used for displaying errors, and not used for displaying help + * ``` + */ + configureOutput(configuration: OutputConfiguration): this; + /** Get configuration */ + configureOutput(): OutputConfiguration; + + /** + * Copy settings that are useful to have in common across root command and subcommands. + * + * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.) + */ + copyInheritedSettings(sourceCommand: CommandUnknownOpts): this; + + /** + * Display the help or a custom message after an error occurs. + */ + showHelpAfterError(displayHelp?: boolean | string): this; + + /** + * Display suggestion of similar commands for unknown commands, or options for unknown options. + */ + showSuggestionAfterError(displaySuggestion?: boolean): this; + + /** + * Register callback `fn` for the command. + * + * @example + * ``` + * program + * .command('serve') + * .description('start service') + * .action(function() { + * // do work here + * }); + * ``` + * + * @returns `this` command for chaining + */ + action(fn: (...args: [...Args, Opts, this]) => void | Promise): this; + + /** + * Define option with `flags`, `description` and optional + * coercion `fn`. + * + * The `flags` string contains the short and/or long flags, + * separated by comma, a pipe or space. The following are all valid + * all will output this way when `--help` is used. + * + * "-p, --pepper" + * "-p|--pepper" + * "-p --pepper" + * + * @example + * ``` + * // simple boolean defaulting to false + * program.option('-p, --pepper', 'add pepper'); + * + * --pepper + * program.pepper + * // => Boolean + * + * // simple boolean defaulting to true + * program.option('-C, --no-cheese', 'remove cheese'); + * + * program.cheese + * // => true + * + * --no-cheese + * program.cheese + * // => false + * + * // required argument + * program.option('-C, --chdir ', 'change the working directory'); + * + * --chdir /tmp + * program.chdir + * // => "/tmp" + * + * // optional argument + * program.option('-c, --cheese [type]', 'add cheese [marble]'); + * ``` + * + * @returns `this` command for chaining + */ + option( + usage: S, + description?: string + ): Command>; + option( + usage: S, + description?: string, + defaultValue?: DefaultT + ): Command>; + option( + usage: S, + description: string, + fn: (value: string, previous: T) => T + ): Command>; + option( + usage: S, + description: string, + fn: (value: string, previous: T) => T, + defaultValue?: T + ): Command>; + + /** + * Define a required option, which must have a value after parsing. This usually means + * the option must be specified on the command line. (Otherwise the same as .option().) + * + * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. + */ + requiredOption( + usage: S, + description?: string + ): Command>; + requiredOption< + S extends string, + DefaultT extends string | boolean | string[], + >( + usage: S, + description?: string, + defaultValue?: DefaultT + ): Command>; + requiredOption( + usage: S, + description: string, + fn: (value: string, previous: T) => T + ): Command>; + requiredOption( + usage: S, + description: string, + fn: (value: string, previous: T) => T, + defaultValue?: D + ): Command>; + + /** + * Factory routine to create a new unattached option. + * + * See .option() for creating an attached option, which uses this routine to + * create the option. You can override createOption to return a custom option. + */ + + createOption( + flags: Usage, + description?: string + ): Option; + + /** + * Add a prepared Option. + * + * See .option() and .requiredOption() for creating and attaching an option in a single call. + */ + addOption< + Usage extends string, + PresetT, + DefaultT, + CoerceT, + Mandatory extends boolean, + ChoicesT, + >( + option: Option + ): Command< + Args, + InferOptions + >; + + /** + * Whether to store option values as properties on command object, + * or store separately (specify false). In both cases the option values can be accessed using .opts(). + * + * @returns `this` command for chaining + */ + storeOptionsAsProperties(): this & T; + storeOptionsAsProperties( + storeAsProperties: true + ): this & T; + storeOptionsAsProperties(storeAsProperties?: boolean): this; + + /** + * Retrieve option value. + */ + getOptionValue(key: K): Opts[K]; + getOptionValue(key: string): unknown; + + /** + * Store option value. + */ + setOptionValue(key: K, value: unknown): this; + setOptionValue(key: string, value: unknown): this; + + /** + * Store option value and where the value came from. + */ + setOptionValueWithSource( + key: K, + value: unknown, + source: OptionValueSource + ): this; + setOptionValueWithSource( + key: string, + value: unknown, + source: OptionValueSource + ): this; + + /** + * Get source of option value. + */ + getOptionValueSource( + key: K + ): OptionValueSource | undefined; + getOptionValueSource(key: string): OptionValueSource | undefined; + + /** + * Get source of option value. See also .optsWithGlobals(). + */ + getOptionValueSourceWithGlobals( + key: K + ): OptionValueSource | undefined; + getOptionValueSourceWithGlobals(key: string): OptionValueSource | undefined; + + /** + * Alter parsing of short flags with optional values. + * + * @example + * ``` + * // for `.option('-f,--flag [value]'): + * .combineFlagAndOptionalValue(true) // `-f80` is treated like `--flag=80`, this is the default behaviour + * .combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b` + * ``` + * + * @returns `this` command for chaining + */ + combineFlagAndOptionalValue(combine?: boolean): this; + + /** + * Allow unknown options on the command line. + * + * @returns `this` command for chaining + */ + allowUnknownOption(allowUnknown?: boolean): this; + + /** + * Allow excess command-arguments on the command line. Pass false to make excess arguments an error. + * + * @returns `this` command for chaining + */ + allowExcessArguments(allowExcess?: boolean): this; + + /** + * Enable positional options. Positional means global options are specified before subcommands which lets + * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions. + * + * The default behaviour is non-positional and global options may appear anywhere on the command line. + * + * @returns `this` command for chaining + */ + enablePositionalOptions(positional?: boolean): this; + + /** + * Pass through options that come after command-arguments rather than treat them as command-options, + * so actual command-options come before command-arguments. Turning this on for a subcommand requires + * positional options to have been enabled on the program (parent commands). + * + * The default behaviour is non-positional and options may appear before or after command-arguments. + * + * @returns `this` command for chaining + */ + passThroughOptions(passThrough?: boolean): this; + + /** + * Parse `argv`, setting options and invoking commands when defined. + * + * The default expectation is that the arguments are from node and have the application as argv[0] + * and the script being run in argv[1], with user parameters after that. + * + * @example + * ``` + * program.parse(process.argv); + * program.parse(); // implicitly use process.argv and auto-detect node vs electron conventions + * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0] + * ``` + * + * @returns `this` command for chaining + */ + parse(argv?: readonly string[], options?: ParseOptions): this; + + /** + * Parse `argv`, setting options and invoking commands when defined. + * + * Use parseAsync instead of parse if any of your action handlers are async. Returns a Promise. + * + * The default expectation is that the arguments are from node and have the application as argv[0] + * and the script being run in argv[1], with user parameters after that. + * + * @example + * ``` + * program.parseAsync(process.argv); + * program.parseAsync(); // implicitly use process.argv and auto-detect node vs electron conventions + * program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0] + * ``` + * + * @returns Promise + */ + parseAsync(argv?: readonly string[], options?: ParseOptions): Promise; + + /** + * Parse options from `argv` removing known options, + * and return argv split into operands and unknown arguments. + * + * argv => operands, unknown + * --known kkk op => [op], [] + * op --known kkk => [op], [] + * sub --unknown uuu op => [sub], [--unknown uuu op] + * sub -- --unknown uuu op => [sub --unknown uuu op], [] + */ + parseOptions(argv: string[]): ParseOptionsResult; + + /** + * Return an object containing local option values as key-value pairs + */ + opts(): Opts; + + /** + * Return an object containing merged local and global option values as key-value pairs. + */ + optsWithGlobals(): T; + + /** + * Set the description. + * + * @returns `this` command for chaining + */ + + description(str: string): this; + /** @deprecated since v8, instead use .argument to add command argument with description */ + description( + str: string, + argsDescription: { [argName: string]: string } + ): this; + /** + * Get the description. + */ + description(): string; + + /** + * Set the summary. Used when listed as subcommand of parent. + * + * @returns `this` command for chaining + */ + + summary(str: string): this; + /** + * Get the summary. + */ + summary(): string; + + /** + * Set an alias for the command. + * + * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help. + * + * @returns `this` command for chaining + */ + alias(alias: string): this; + /** + * Get alias for the command. + */ + alias(): string; + + /** + * Set aliases for the command. + * + * Only the first alias is shown in the auto-generated help. + * + * @returns `this` command for chaining + */ + aliases(aliases: readonly string[]): this; + /** + * Get aliases for the command. + */ + aliases(): string[]; + + /** + * Set the command usage. + * + * @returns `this` command for chaining + */ + usage(str: string): this; + /** + * Get the command usage. + */ + usage(): string; + + /** + * Set the name of the command. + * + * @returns `this` command for chaining + */ + name(str: string): this; + /** + * Get the name of the command. + */ + name(): string; + + /** + * Set the name of the command from script filename, such as process.argv[1], + * or require.main.filename, or __filename. + * + * (Used internally and public although not documented in README.) + * + * @example + * ```ts + * program.nameFromFilename(require.main.filename); + * ``` + * + * @returns `this` command for chaining + */ + nameFromFilename(filename: string): this; + + /** + * Set the directory for searching for executable subcommands of this command. + * + * @example + * ```ts + * program.executableDir(__dirname); + * // or + * program.executableDir('subcommands'); + * ``` + * + * @returns `this` command for chaining + */ + executableDir(path: string): this; + /** + * Get the executable search directory. + */ + executableDir(): string; + + /** + * Output help information for this command. + * + * Outputs built-in help, and custom text added using `.addHelpText()`. + * + */ + outputHelp(context?: HelpContext): void; + /** @deprecated since v7 */ + outputHelp(cb?: (str: string) => string): void; + + /** + * Return command help documentation. + */ + helpInformation(context?: HelpContext): string; + + /** + * You can pass in flags and a description to override the help + * flags and help description for your command. Pass in false + * to disable the built-in help option. + */ + helpOption(flags?: string | boolean, description?: string): this; + + /** + * Output help information and exit. + * + * Outputs built-in help, and custom text added using `.addHelpText()`. + */ + help(context?: HelpContext): never; + /** @deprecated since v7 */ + help(cb?: (str: string) => string): never; + + /** + * Add additional text to be displayed with the built-in help. + * + * Position is 'before' or 'after' to affect just this command, + * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands. + */ + addHelpText(position: AddHelpTextPosition, text: string): this; + addHelpText( + position: AddHelpTextPosition, + text: (context: AddHelpTextContext) => string + ): this; + + /** + * Add a listener (callback) for when events occur. (Implemented using EventEmitter.) + */ + on(event: string | symbol, listener: (...args: any[]) => void): this; +} + +export interface CommandOptions { + hidden?: boolean; + isDefault?: boolean; + /** @deprecated since v7, replaced by hidden */ + noHelp?: boolean; +} +export interface ExecutableCommandOptions extends CommandOptions { + executableFile?: string; +} + +export interface ParseOptionsResult { + operands: string[]; + unknown: string[]; +} + +export function createCommand(name?: string): Command; +export function createOption( + flags: Usage, + description?: string +): Option; +export function createArgument( + name: Usage, + description?: string +): Argument; + +export const program: Command; diff --git a/packages/cypress-cloud/lib/__tests__/dataFlow.test.ts b/packages/cypress-cloud/lib/__tests__/dataFlow.test.ts index 4c93f2f..6fc8ee5 100644 --- a/packages/cypress-cloud/lib/__tests__/dataFlow.test.ts +++ b/packages/cypress-cloud/lib/__tests__/dataFlow.test.ts @@ -4,7 +4,7 @@ import path from "path"; import * as api from "../api"; import { initCapture } from "../capture"; import { listenToEvents, stopListeningToEvents } from "../listener"; -import { pubsub } from "../pubsub"; +import { Event, getPubSub } from "../pubsub"; import { getReportResultsTask } from "../results/uploadResults"; import { ConfigState, ExecutionState } from "../state"; @@ -114,12 +114,12 @@ describe("Data Flow", () => { executionState.addScreenshotsData(screenshot) ); - pubsub.emit("cypress:runResult", { + getPubSub().emit(Event.RUN_RESULT, { specRelative, instanceId, runResult, }); - pubsub.emit("after:spec", { + getPubSub().emit(Event.AFTER_SPEC, { spec: { relative: specRelative, }, diff --git a/packages/cypress-cloud/lib/api/api.ts b/packages/cypress-cloud/lib/api/api.ts index ab0c0ed..b2c36d2 100644 --- a/packages/cypress-cloud/lib/api/api.ts +++ b/packages/cypress-cloud/lib/api/api.ts @@ -1,15 +1,8 @@ import { makeRequest } from "../httpClient"; import { - CreateInstanceCyPayload, - CreateInstancePayload, - CreateInstanceResponse, - CreateInstancesResponse, CreateRunPayload, CreateRunResponse, - SetInstanceTestsPayload, - UpdateInstanceResultsMergedPayload, - UpdateInstanceResultsPayload, - UpdateInstanceResultsResponse, + InstanceAPIPayload, } from "./types"; import { printWarnings } from "./warnings"; @@ -32,10 +25,10 @@ export const createInstance = async ({ groupId, machineId, platform, -}: CreateInstancePayload) => { +}: InstanceAPIPayload.CreateInstancePayload) => { const response = await makeRequest< - CreateInstanceResponse, - CreateInstancePayload + InstanceAPIPayload.CreateInstanceResponse, + InstanceAPIPayload.CreateInstancePayload >({ method: "POST", url: `runs/${runId}/instances`, @@ -50,10 +43,12 @@ export const createInstance = async ({ return response.data; }; -export const createBatchedInstances = async (data: CreateInstanceCyPayload) => { +export const createBatchedInstances = async ( + data: InstanceAPIPayload.CreateInstanceCyPayload +) => { const respone = await makeRequest< - CreateInstancesResponse, - CreateInstanceCyPayload + InstanceAPIPayload.CreateInstancesResponse, + InstanceAPIPayload.CreateInstanceCyPayload >({ method: "POST", url: `runs/${data.runId}/cy/instances`, @@ -65,9 +60,9 @@ export const createBatchedInstances = async (data: CreateInstanceCyPayload) => { export const setInstanceTests = ( instanceId: string, - payload: SetInstanceTestsPayload + payload: InstanceAPIPayload.SetInstanceTestsPayload ) => - makeRequest<{}, SetInstanceTestsPayload>({ + makeRequest<{}, InstanceAPIPayload.SetInstanceTestsPayload>({ method: "POST", url: `instances/${instanceId}/tests`, data: payload, @@ -75,9 +70,12 @@ export const setInstanceTests = ( export const updateInstanceResults = ( instanceId: string, - payload: UpdateInstanceResultsPayload + payload: InstanceAPIPayload.UpdateInstanceResultsPayload ) => - makeRequest({ + makeRequest< + InstanceAPIPayload.UpdateInstanceResultsResponse, + InstanceAPIPayload.UpdateInstanceResultsPayload + >({ method: "POST", url: `instances/${instanceId}/results`, data: payload, @@ -85,11 +83,11 @@ export const updateInstanceResults = ( export const reportInstanceResultsMerged = ( instanceId: string, - payload: UpdateInstanceResultsMergedPayload + payload: InstanceAPIPayload.UpdateInstanceResultsMergedPayload ) => makeRequest< - UpdateInstanceResultsResponse, - UpdateInstanceResultsMergedPayload + InstanceAPIPayload.UpdateInstanceResultsResponse, + InstanceAPIPayload.UpdateInstanceResultsMergedPayload >({ method: "POST", url: `instances/${instanceId}/cy/results`, diff --git a/packages/cypress-cloud/lib/cancellation/cancellation.ts b/packages/cypress-cloud/lib/cancellation/cancellation.ts index df5dec0..883bbef 100644 --- a/packages/cypress-cloud/lib/cancellation/cancellation.ts +++ b/packages/cypress-cloud/lib/cancellation/cancellation.ts @@ -1,4 +1,4 @@ -import { Event, pubsub } from "../pubsub"; +import { Event, getPubSub } from "../pubsub"; interface ExecutionState { cancellationReason: string | null; @@ -12,7 +12,7 @@ export const setCancellationReason = (reason: string) => { return; } state.cancellationReason = reason; - pubsub.emit(Event.RUN_CANCELLED, reason); + getPubSub().emit(Event.RUN_CANCELLED, reason); }; export const getCancellationReason = () => state.cancellationReason; diff --git a/packages/cypress-cloud/lib/config/params.ts b/packages/cypress-cloud/lib/config/params.ts index 4578a86..7b6e203 100644 --- a/packages/cypress-cloud/lib/config/params.ts +++ b/packages/cypress-cloud/lib/config/params.ts @@ -37,10 +37,13 @@ export async function resolveCurrentsParams( const testingType = params.testingType ?? "e2e"; - const batchSize = - testingType === "e2e" - ? configFromFile.e2e.batchSize - : configFromFile.component.batchSize; + let batchSize = params.batchSize; + if (!batchSize) { + batchSize = + testingType === "e2e" + ? configFromFile.e2e.batchSize + : configFromFile.component.batchSize; + } // batchSize and cloudServiceUrl defaults are in getCurrentsConfig() return { diff --git a/packages/cypress-cloud/lib/httpClient/__tests__/httpClient.retries.test.ts b/packages/cypress-cloud/lib/httpClient/__tests__/httpClient.retries.test.ts index 2bca2e2..092fa8e 100644 --- a/packages/cypress-cloud/lib/httpClient/__tests__/httpClient.retries.test.ts +++ b/packages/cypress-cloud/lib/httpClient/__tests__/httpClient.retries.test.ts @@ -5,7 +5,6 @@ import { makeRequest } from "../httpClient"; jest.mock("../config"); jest.mock("cypress-cloud/lib/log"); - (getAPIBaseUrl as jest.Mock).mockReturnValue("http://localhost:1234"); const apiMock = nock(getAPIBaseUrl()).persist(); diff --git a/packages/cypress-cloud/lib/listener.ts b/packages/cypress-cloud/lib/listener.ts index 1a76a8b..718396e 100644 --- a/packages/cypress-cloud/lib/listener.ts +++ b/packages/cypress-cloud/lib/listener.ts @@ -1,43 +1,28 @@ -import chalk from "chalk"; import Debug from "debug"; -import { getCapturedOutput } from "./capture"; -import { getCoverageFilePath } from "./coverage"; import { CypressTypes } from "./cypress.types"; -import { getSpecShortName, writeDataToFile } from "./debug-data"; -import { format } from "./log"; -import { pubsub } from "./pubsub"; +import { Event, allEvents, getPubSub } from "./pubsub"; import { handleScreenshotEvent, + handleSpecAfter, handleTestAfter, handleTestBefore, } from "./results/captureHooks"; import { ModuleAPIResults } from "./results/moduleAPIResult"; -import { SpecAfterResult } from "./results/specAfterResult"; -import { createReportTaskSpec } from "./runner"; import { ConfigState, ExecutionState } from "./state"; const debug = Debug("currents:events"); -const events = [ - "cypress:runResult", - "test:after:run", - "test:before:run", - "after:screenshot", - "after:spec", -]; export function stopListeningToEvents() { - events.forEach((e) => pubsub.removeAllListeners(e)); + allEvents.forEach((e) => getPubSub().removeAllListeners(e)); } export function listenToEvents( configState: ConfigState, executionState: ExecutionState, - experimentalCoverageRecording?: boolean + experimentalCoverageRecording: boolean = false ) { - const config = configState.getConfig(); - - pubsub.on( - "cypress:runResult", + getPubSub().on( + Event.RUN_RESULT, ({ instanceId, runResult, @@ -48,12 +33,12 @@ export function listenToEvents( runResult: CypressTypes.ModuleAPI.CompletedResult; }) => { // % save results - writeDataToFile( - JSON.stringify(runResult), - getSpecShortName(specRelative), - "runResult" - ); - debug("cypress:runResult %s: %o", instanceId, runResult); + // writeDataToFile( + // JSON.stringify(runResult), + // getSpecShortName(specRelative), + // "runResult" + // ); + debug("%s %s: %o", Event.RUN_RESULT, instanceId, runResult); executionState.setInstanceResult( instanceId, ModuleAPIResults.getStandardResult(runResult, executionState) @@ -61,26 +46,26 @@ export function listenToEvents( } ); - pubsub.on("test:after:run", (payload: string) => { - debug("test:after:run %o", payload); + getPubSub().on(Event.TEST_AFTER_RUN, (payload: string) => { + debug("%s %o", Event.TEST_AFTER_RUN, payload); handleTestAfter(payload, executionState); }); - pubsub.on("test:before:run", (payload: string) => { - debug("test:before:run %o", payload); + getPubSub().on(Event.TEST_BEFORE_RUN, (payload: string) => { + debug("%s %o", Event.TEST_BEFORE_RUN, payload); handleTestBefore(payload, executionState); }); - pubsub.on( - "after:screenshot", + getPubSub().on( + Event.AFTER_SCREENSHOT, (screenshot: CypressTypes.EventPayload.ScreenshotAfter) => { - debug("after:screenshot %o", screenshot); + debug("%s %o", Event.AFTER_SCREENSHOT, screenshot); handleScreenshotEvent(screenshot, executionState); } ); - pubsub.on( - "after:spec", + getPubSub().on( + Event.AFTER_SPEC, async ({ spec, results, @@ -88,37 +73,13 @@ export function listenToEvents( spec: CypressTypes.EventPayload.SpecAfter.Spec; results: CypressTypes.EventPayload.SpecAfter.Payload; }) => { - // % save results - const s = getSpecShortName(spec.relative); - writeDataToFile(JSON.stringify(results), s, "specAfter"); - - debug("after:spec %s %o", spec.relative, results); - executionState.setSpecAfter( - spec.relative, - SpecAfterResult.getSpecAfterStandard(results, executionState) - ); - executionState.setSpecOutput(spec.relative, getCapturedOutput()); - - if (experimentalCoverageRecording) { - const { path, error } = await getCoverageFilePath( - config?.env?.coverageFile - ); - - if (!error) { - executionState.setSpecCoverage(spec.relative, path); - } else { - executionState.addWarning( - format( - `Error reading coverage file "%s". Coverage recording will be skipped.\n${chalk.dim( - `Error: %s` - )}`, - path, - error - ) - ); - } - } - createReportTaskSpec(configState, executionState, spec.relative); + await handleSpecAfter({ + spec, + results, + executionState, + configState, + experimentalCoverageRecording, + }); } ); } diff --git a/packages/cypress-cloud/lib/log.ts b/packages/cypress-cloud/lib/log.ts index 8303713..14e7cb2 100644 --- a/packages/cypress-cloud/lib/log.ts +++ b/packages/cypress-cloud/lib/log.ts @@ -38,3 +38,4 @@ export const gray = chalk.gray; export const white = chalk.white; export const magenta = chalk.magenta; export const bold = chalk.bold; +export const dim = chalk.dim; diff --git a/packages/cypress-cloud/lib/pubsub.ts b/packages/cypress-cloud/lib/pubsub.ts deleted file mode 100644 index a0872cd..0000000 --- a/packages/cypress-cloud/lib/pubsub.ts +++ /dev/null @@ -1,5 +0,0 @@ -import EventEmitter from "events"; -export enum Event { - RUN_CANCELLED = "runCancelled", -} -export const pubsub = new EventEmitter(); diff --git a/packages/cypress-cloud/lib/pubsub/events.ts b/packages/cypress-cloud/lib/pubsub/events.ts new file mode 100644 index 0000000..c995d49 --- /dev/null +++ b/packages/cypress-cloud/lib/pubsub/events.ts @@ -0,0 +1,9 @@ +export enum Event { + RUN_CANCELLED = "run:cancelled", + RUN_RESULT = "run:result", + TEST_AFTER_RUN = "test:after:run", + TEST_BEFORE_RUN = "test:before:run", + AFTER_SCREENSHOT = "after:screenshot", + AFTER_SPEC = "after:spec", +} +export const allEvents = Object.values(Event); diff --git a/packages/cypress-cloud/lib/pubsub/index.ts b/packages/cypress-cloud/lib/pubsub/index.ts new file mode 100644 index 0000000..00dbd5c --- /dev/null +++ b/packages/cypress-cloud/lib/pubsub/index.ts @@ -0,0 +1,2 @@ +export * from "./events"; +export * from "./pubsub"; diff --git a/packages/cypress-cloud/lib/pubsub/pubsub.ts b/packages/cypress-cloud/lib/pubsub/pubsub.ts new file mode 100644 index 0000000..38b15df --- /dev/null +++ b/packages/cypress-cloud/lib/pubsub/pubsub.ts @@ -0,0 +1,9 @@ +import EventEmitter from "events"; + +let _pubsub: EventEmitter | null = null; +export const getPubSub = () => { + if (!_pubsub) { + _pubsub = new EventEmitter(); + } + return _pubsub; +}; diff --git a/packages/cypress-cloud/lib/results/captureHooks.ts b/packages/cypress-cloud/lib/results/captureHooks.ts index 8dae033..1c34355 100644 --- a/packages/cypress-cloud/lib/results/captureHooks.ts +++ b/packages/cypress-cloud/lib/results/captureHooks.ts @@ -1,10 +1,13 @@ +import Debug from "debug"; +import { getCapturedOutput } from "../capture"; +import { getCoverageFilePath } from "../coverage"; import { CypressTypes } from "../cypress.types"; -import { - getScreenshotCount, - getTestHookSpecName, - writeDataToFile, -} from "../debug-data"; -import { ExecutionState } from "../state"; +import { dim, format } from "../log"; +import { createReportTaskSpec } from "../runner"; +import { ConfigState, ExecutionState } from "../state"; +import { SpecAfterResult } from "./specAfterResult"; + +const debug = Debug("currents:events"); export function handleScreenshotEvent( screenshot: CypressTypes.EventPayload.ScreenshotAfter, @@ -17,12 +20,12 @@ export function handleScreenshotEvent( width: screenshot.dimensions.width, }; // % save results - writeDataToFile( - JSON.stringify(data), - `${screenshot.specName}`, - `screenshot`, - `_0${getScreenshotCount(screenshot.specName)}` - ); + // writeDataToFile( + // JSON.stringify(data), + // `${screenshot.specName}`, + // `screenshot`, + // `_0${getScreenshotCount(screenshot.specName)}` + // ); executionState.addScreenshotsData(data); } @@ -42,12 +45,61 @@ export function handleTestAfter( const test: CypressTypes.EventPayload.TestAfter = JSON.parse(testAttempt); // % save results - writeDataToFile( - testAttempt, - getTestHookSpecName(test), - "testAfter", - `_0${test.currentRetry}` - ); + // writeDataToFile( + // testAttempt, + // getTestHookSpecName(test), + // "testAfter", + // `_0${test.currentRetry}` + // ); executionState.addAttemptsData(test); } + +export async function handleSpecAfter({ + executionState, + configState, + spec, + results, + experimentalCoverageRecording = false, +}: { + executionState: ExecutionState; + configState: ConfigState; + spec: CypressTypes.EventPayload.SpecAfter.Spec; + results: CypressTypes.EventPayload.SpecAfter.Payload; + experimentalCoverageRecording: boolean; +}) { + // % save results + // const s = getSpecShortName(spec.relative); + // writeDataToFile(JSON.stringify(results), s, "specAfter"); + + debug("after:spec %s %o", spec.relative, results); + executionState.setSpecAfter( + spec.relative, + SpecAfterResult.getSpecAfterStandard(results, executionState) + ); + executionState.setSpecOutput(spec.relative, getCapturedOutput()); + const config = configState.getConfig(); + + if (experimentalCoverageRecording) { + const config = configState.getConfig(); + + const { path, error } = await getCoverageFilePath( + config?.env?.coverageFile + ); + + if (!error) { + executionState.setSpecCoverage(spec.relative, path); + } else { + executionState.addWarning( + format( + `Error reading coverage file "%s". Coverage recording will be skipped.\n${dim( + `Error: %s` + )}`, + path, + error + ) + ); + } + } + createReportTaskSpec(configState, executionState, spec.relative); +} diff --git a/packages/cypress-cloud/lib/results/uploadResults.ts b/packages/cypress-cloud/lib/results/uploadResults.ts index c0a2769..c995a8c 100644 --- a/packages/cypress-cloud/lib/results/uploadResults.ts +++ b/packages/cypress-cloud/lib/results/uploadResults.ts @@ -8,7 +8,6 @@ import { import { uploadArtifacts, uploadStdoutSafe } from "../artifacts"; import { setCancellationReason } from "../cancellation"; import { getInitialOutput } from "../capture"; -import { getSpecShortName, writeDataToFile } from "../debug-data"; import { isCurrents } from "../env"; import { ConfigState, ExecutionState } from "../state"; import { getInstanceResultPayload, getInstanceTestsPayload } from "./api"; @@ -31,14 +30,14 @@ export async function getReportResultsTask( const instanceTests = getInstanceTestsPayload(run, configState); // % save results - writeDataToFile( - JSON.stringify({ - tests: instanceTests, - results: instanceResults, - }), - getSpecShortName(results.runs[0].spec.relative), - "apiCall" - ); + // writeDataToFile( + // JSON.stringify({ + // tests: instanceTests, + // results: instanceResults, + // }), + // getSpecShortName(results.runs[0].spec.relative), + // "apiCall" + // ); const { videoUploadUrl, screenshotUploadUrls, coverageUploadUrl, cloud } = await reportResults(instanceId, instanceTests, instanceResults); diff --git a/packages/cypress-cloud/lib/runner/__tests__/cancellable.test.ts b/packages/cypress-cloud/lib/runner/__tests__/cancellable.test.ts index 2f8661e..14ad702 100644 --- a/packages/cypress-cloud/lib/runner/__tests__/cancellable.test.ts +++ b/packages/cypress-cloud/lib/runner/__tests__/cancellable.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "@jest/globals"; import { warn } from "cypress-cloud/lib/log"; -import { Event, pubsub } from "cypress-cloud/lib/pubsub"; +import { Event, getPubSub } from "cypress-cloud/lib/pubsub"; import { random } from "lodash"; import { runTillDoneOrCancelled } from "../cancellable"; import { runTillDone } from "../runner"; @@ -31,7 +31,7 @@ describe("runTillDoneOrCancelled", () => { await runTillDoneOrCancelled({}); expect(runTillDone).toHaveBeenCalled(); expect(result).toEqual(_result); - expect(pubsub.listeners(Event.RUN_CANCELLED)).toHaveLength(0); + expect(getPubSub().listeners(Event.RUN_CANCELLED)).toHaveLength(0); }); it("rejects when runTillDone rejects", async () => { @@ -41,7 +41,7 @@ describe("runTillDoneOrCancelled", () => { // @ts-expect-error await expect(runTillDoneOrCancelled()).rejects.toThrow(); await new Promise((resolve) => setTimeout(resolve, 100)); - expect(pubsub.listeners(Event.RUN_CANCELLED)).toHaveLength(0); + expect(getPubSub().listeners(Event.RUN_CANCELLED)).toHaveLength(0); }); it("cancels the run when the RUN_CANCELLED event is emitted", async () => { @@ -58,13 +58,13 @@ describe("runTillDoneOrCancelled", () => { // schedule firing the event setTimeout(() => { - pubsub.emit(Event.RUN_CANCELLED, cancelReason); + getPubSub().emit(Event.RUN_CANCELLED, cancelReason); }, 100); // @ts-expect-error await runTillDoneOrCancelled(); expect(runTillDone).toHaveBeenCalled(); expect(warn).toHaveBeenCalledWith(expect.any(String), cancelReason); - expect(pubsub.listeners(Event.RUN_CANCELLED)).toHaveLength(0); + expect(getPubSub().listeners(Event.RUN_CANCELLED)).toHaveLength(0); }); }); diff --git a/packages/cypress-cloud/lib/runner/cancellable.ts b/packages/cypress-cloud/lib/runner/cancellable.ts index 608f668..825eb91 100644 --- a/packages/cypress-cloud/lib/runner/cancellable.ts +++ b/packages/cypress-cloud/lib/runner/cancellable.ts @@ -1,6 +1,6 @@ import { BPromise } from "../lang"; import { warn } from "../log"; -import { Event, pubsub } from "../pubsub"; +import { Event, getPubSub } from "../pubsub"; import { runTillDone } from "./runner"; let cancellable: { @@ -36,8 +36,8 @@ export async function runTillDoneOrCancelled( ); }); - pubsub.addListener(Event.RUN_CANCELLED, onRunCancelled); + getPubSub().addListener(Event.RUN_CANCELLED, onRunCancelled); }).finally(() => { - pubsub.removeListener(Event.RUN_CANCELLED, onRunCancelled); + getPubSub().removeListener(Event.RUN_CANCELLED, onRunCancelled); }); } diff --git a/packages/cypress-cloud/lib/runner/runner.ts b/packages/cypress-cloud/lib/runner/runner.ts index 1f16b3e..e028dfa 100644 --- a/packages/cypress-cloud/lib/runner/runner.ts +++ b/packages/cypress-cloud/lib/runner/runner.ts @@ -17,7 +17,7 @@ import { runSpecFileSafe } from "../cypress"; import { CypressTypes } from "../cypress.types"; import { isCurrents } from "../env"; import { divider, info, title, warn } from "../log"; -import { pubsub } from "../pubsub"; +import { Event, getPubSub } from "../pubsub"; import { ConfigState, ExecutionState } from "../state"; import { createReportTask, reportTasks } from "./reportTask"; @@ -159,7 +159,7 @@ async function runBatch( return; } - pubsub.emit("cypress:runResult", { + getPubSub().emit(Event.RUN_RESULT, { specRelative: spec.spec, instanceId: spec.instanceId, runResult: singleSpecResult, @@ -187,6 +187,7 @@ function getSingleSpecRunResult( return { ...batchedResult, + // @ts-ignore runs: [run], }; } diff --git a/packages/cypress-cloud/lib/ws/ws.ts b/packages/cypress-cloud/lib/ws/ws.ts index e8a9ef7..4d609ac 100644 --- a/packages/cypress-cloud/lib/ws/ws.ts +++ b/packages/cypress-cloud/lib/ws/ws.ts @@ -4,7 +4,7 @@ import http from "http"; import HttpTerminator from "lil-http-terminator"; import { match, P } from "ts-pattern"; import * as WebSocket from "ws"; -import { pubsub } from "../pubsub"; +import { getPubSub } from "../pubsub"; const debug = Debug("currents:ws"); @@ -48,7 +48,7 @@ export const startWSS = () => { wss.on("connection", function connection(ws) { ws.on("message", function incoming(event) { const message = JSON.parse(event.toString()); - pubsub.emit(message.type, message.payload); + getPubSub().emit(message.type, message.payload); }); }); }) diff --git a/packages/cypress-cloud/plugin/13.0.0-test.json b/packages/cypress-cloud/plugin/13.0.0-test.json deleted file mode 100644 index 57eb457..0000000 --- a/packages/cypress-cloud/plugin/13.0.0-test.json +++ /dev/null @@ -1,1182 +0,0 @@ -{ - "title": "should display the correct text", - "body": "function () {\n cy.get(\"@todos\").eq(0).find(\".toggle\").check();\n cy.get(\".clear-completed\").contains(\"Clear completed X\");\n }", - "async": 0, - "sync": true, - "_timeout": 4000, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": 0, - "_currentRetry": 0, - "pending": false, - "type": "test", - "file": null, - "invocationDetails": { - "function": "Suite.eval", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js", - "originalFile": "webpack://web/./cypress/e2e/xxx.js", - "relativeFile": "cypress/e2e/xxx.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/e2e/xxx.js", - "line": 10, - "column": 2, - "whitespace": " ", - "stack": "Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:16:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:12:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:37:12)\n at eval ()" - }, - "parent": { - "title": "Clear completed button", - "ctx": { - "_runnable": "[Circular]", - "test": "[Circular]", - "todos": { - "0": {}, - "1": {}, - "2": {}, - "length": 3, - "prevObject": { - "0": { - "location": { - "ancestorOrigins": { - "0": "https://todomvc.com" - }, - "href": "https://todomvc.com/examples/vanillajs/", - "origin": "https://todomvc.com", - "protocol": "https:", - "host": "todomvc.com", - "hostname": "todomvc.com", - "port": "", - "pathname": "/examples/vanillajs/", - "search": "", - "hash": "" - }, - "referrer": "" - }, - "length": 1 - }, - "selector": ".todo-list li" - } - }, - "suites": [], - "tests": [ - "[Circular]", - { - "title": "should remove completed items when clicked", - "body": "function () {\n cy.get(\"@todos\").eq(1).find(\".toggle\").check();\n cy.get(\".clear-completed\").click();\n cy.get(\"@todos\").should(\"have.length\", 2);\n cy.get(\".todo-list li\").eq(0).should(\"contain\", TODO_ITEM_ONE);\n cy.get(\".todo-list li\").eq(1).should(\"contain\", \"XXXX\");\n }", - "async": 0, - "sync": true, - "_timeout": 0, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "test", - "file": null, - "invocationDetails": { - "function": "Suite.eval", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js", - "originalFile": "webpack://web/./cypress/e2e/xxx.js", - "relativeFile": "cypress/e2e/xxx.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/e2e/xxx.js", - "line": 21, - "column": 2, - "whitespace": " ", - "stack": "Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:22:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:12:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:37:12)\n at eval ()" - }, - "parent": "[Circular]", - "ctx": { - "_runnable": "[Circular]", - "test": "[Circular]", - "todos": { - "0": {}, - "1": {}, - "2": {}, - "length": 3, - "prevObject": { - "0": { - "location": { - "ancestorOrigins": { - "0": "https://todomvc.com" - }, - "href": "https://todomvc.com/examples/vanillajs/", - "origin": "https://todomvc.com", - "protocol": "https:", - "host": "todomvc.com", - "hostname": "todomvc.com", - "port": "", - "pathname": "/examples/vanillajs/", - "search": "", - "hash": "" - }, - "referrer": "" - }, - "length": 1 - }, - "selector": ".todo-list li" - } - }, - "_testConfig": { - "testConfigList": [ - { - "overrideLevel": "test", - "overrides": { - "tags": [ - "@tagB" - ] - }, - "invocationDetails": { - "function": "Suite.eval", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js", - "originalFile": "webpack://web/./cypress/e2e/xxx.js", - "relativeFile": "cypress/e2e/xxx.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/e2e/xxx.js", - "line": 21, - "column": 2, - "whitespace": " ", - "stack": "Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:22:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:12:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:37:12)\n at eval ()" - } - } - ], - "unverifiedTestConfig": { - "tags": [ - "@tagB" - ] - } - }, - "id": "r4", - "_condensedHooks": true, - "hooks": [], - "order": 2 - }, - { - "title": "should be hidden when there are no items that are completed", - "body": "function () {\n cy.get(\"@todos\").eq(1).find(\".toggle\").check();\n cy.get(\".clear-completed\").should(\"be.visible\").click();\n cy.get(\".clear-completed\").should(\"not.be.visible\");\n }", - "async": 0, - "sync": true, - "_timeout": 0, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "test", - "file": null, - "invocationDetails": { - "function": "Suite.eval", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js", - "originalFile": "webpack://web/./cypress/e2e/xxx.js", - "relativeFile": "cypress/e2e/xxx.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/e2e/xxx.js", - "line": 36, - "column": 2, - "whitespace": " ", - "stack": "Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:31:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:12:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:37:12)\n at eval ()" - }, - "parent": "[Circular]", - "ctx": { - "_runnable": "[Circular]", - "test": "[Circular]", - "todos": { - "0": {}, - "1": {}, - "2": {}, - "length": 3, - "prevObject": { - "0": { - "location": { - "ancestorOrigins": { - "0": "https://todomvc.com" - }, - "href": "https://todomvc.com/examples/vanillajs/", - "origin": "https://todomvc.com", - "protocol": "https:", - "host": "todomvc.com", - "hostname": "todomvc.com", - "port": "", - "pathname": "/examples/vanillajs/", - "search": "", - "hash": "" - }, - "referrer": "" - }, - "length": 1 - }, - "selector": ".todo-list li" - } - }, - "id": "r5", - "_condensedHooks": true, - "hooks": [], - "_testConfig": { - "testConfigList": [], - "unverifiedTestConfig": {} - }, - "order": 3 - } - ], - "pending": false, - "_beforeEach": [ - { - "title": "\"before each\" hook", - "body": "function () {\n cy.createDefaultTodos().as(\"todos\");\n }", - "async": 0, - "sync": true, - "_timeout": 4000, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "[Circular]", - "ctx": { - "_runnable": "[Circular]", - "test": "[Circular]", - "todos": { - "0": {}, - "1": {}, - "2": {}, - "length": 3, - "prevObject": { - "0": { - "location": { - "ancestorOrigins": { - "0": "https://todomvc.com" - }, - "href": "https://todomvc.com/examples/vanillajs/", - "origin": "https://todomvc.com", - "protocol": "https:", - "host": "todomvc.com", - "hostname": "todomvc.com", - "port": "", - "pathname": "/examples/vanillajs/", - "search": "", - "hash": "" - }, - "referrer": "" - }, - "length": 1 - }, - "selector": ".todo-list li" - } - }, - "file": null, - "invocationDetails": { - "function": "Suite.eval", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js", - "originalFile": "webpack://web/./cypress/e2e/xxx.js", - "relativeFile": "cypress/e2e/xxx.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/e2e/xxx.js", - "line": 6, - "column": 2, - "whitespace": " ", - "stack": "Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:13:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:12:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:37:12)\n at eval ()" - }, - "hookId": "h5", - "hookName": "before each", - "id": "r3", - "_events": {}, - "_eventsCount": 1, - "timer": null, - "duration": 838, - "_fired": { - "runner:runnable:after:run:async": true - }, - "_error": null - } - ], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "root": false, - "_timeout": 0, - "_enableTimeouts": false, - "_slow": 10000, - "_bail": false, - "_retries": -1, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "_events": {}, - "_eventsCount": 1, - "parent": { - "title": "", - "ctx": { - "_runnable": { - "title": "\"after each\" hook", - "body": "() => {\n const afterHook = cy.state(\"runnable\");\n if (afterHook.parent) {\n sendSuite(afterHook.parent);\n }\n}", - "async": 0, - "sync": true, - "_timeout": 4000, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "[Circular]", - "ctx": "[Circular]", - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "../../packages/cypress-cloud/dist/support/index.js", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/../../support/index.ts", - "relativeFile": "../support/index.ts", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/support/index.ts", - "line": 25, - "column": 0, - "whitespace": " ", - "stack": "Error\n at ../../packages/cypress-cloud/dist/support/index.js (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8554:1)\n at __webpack_require__ (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8727:42)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8787:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "hookId": "h4", - "hookName": "after each", - "id": "r3", - "_events": {}, - "_eventsCount": 1 - }, - "test": { - "title": "\"after each\" hook", - "body": "() => {\n const afterHook = cy.state(\"runnable\");\n if (afterHook.parent) {\n sendSuite(afterHook.parent);\n }\n}", - "async": 0, - "sync": true, - "_timeout": 4000, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "[Circular]", - "ctx": "[Circular]", - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "../../packages/cypress-cloud/dist/support/index.js", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/../../support/index.ts", - "relativeFile": "../support/index.ts", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/support/index.ts", - "line": 25, - "column": 0, - "whitespace": " ", - "stack": "Error\n at ../../packages/cypress-cloud/dist/support/index.js (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8554:1)\n at __webpack_require__ (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8727:42)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8787:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "hookId": "h4", - "hookName": "after each", - "id": "r3", - "_events": {}, - "_eventsCount": 1 - }, - "currentTest": "[Circular]" - }, - "suites": [ - "[Circular]" - ], - "tests": [], - "pending": false, - "_beforeEach": [ - { - "title": "\"before each\" hook", - "body": "function () {\n cy.visit(\"/\");\n}", - "async": 0, - "sync": true, - "_timeout": 4000, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "[Circular]", - "ctx": { - "_runnable": { - "title": "\"after each\" hook", - "body": "() => {\n const afterHook = cy.state(\"runnable\");\n if (afterHook.parent) {\n sendSuite(afterHook.parent);\n }\n}", - "async": 0, - "sync": true, - "_timeout": 4000, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "[Circular]", - "ctx": "[Circular]", - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "../../packages/cypress-cloud/dist/support/index.js", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/../../support/index.ts", - "relativeFile": "../support/index.ts", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/support/index.ts", - "line": 25, - "column": 0, - "whitespace": " ", - "stack": "Error\n at ../../packages/cypress-cloud/dist/support/index.js (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8554:1)\n at __webpack_require__ (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8727:42)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8787:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "hookId": "h4", - "hookName": "after each", - "id": "r3", - "_events": {}, - "_eventsCount": 1 - }, - "test": { - "title": "\"after each\" hook", - "body": "() => {\n const afterHook = cy.state(\"runnable\");\n if (afterHook.parent) {\n sendSuite(afterHook.parent);\n }\n}", - "async": 0, - "sync": true, - "_timeout": 4000, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "[Circular]", - "ctx": "[Circular]", - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "../../packages/cypress-cloud/dist/support/index.js", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/../../support/index.ts", - "relativeFile": "../support/index.ts", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/support/index.ts", - "line": 25, - "column": 0, - "whitespace": " ", - "stack": "Error\n at ../../packages/cypress-cloud/dist/support/index.js (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8554:1)\n at __webpack_require__ (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8727:42)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8787:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "hookId": "h4", - "hookName": "after each", - "id": "r3", - "_events": {}, - "_eventsCount": 1 - }, - "currentTest": "[Circular]" - }, - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "eval", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/./cypress/support/e2e.ts", - "relativeFile": "cypress/support/e2e.ts", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/support/e2e.ts", - "line": 7, - "column": 0, - "whitespace": " ", - "stack": "Error\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8790:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "hookId": "h1", - "hookName": "before each", - "id": "r3", - "_events": {}, - "_eventsCount": 1, - "timer": null, - "duration": 853, - "_fired": { - "runner:runnable:after:run:async": true - }, - "_error": null - } - ], - "_beforeAll": [], - "_afterEach": [ - { - "title": "\"after each\" hook", - "body": "function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }", - "async": 0, - "sync": true, - "_timeout": 4000, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "[Circular]", - "ctx": { - "_runnable": { - "title": "\"after each\" hook", - "body": "() => {\n const afterHook = cy.state(\"runnable\");\n if (afterHook.parent) {\n sendSuite(afterHook.parent);\n }\n}", - "async": 0, - "sync": true, - "_timeout": 4000, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "[Circular]", - "ctx": "[Circular]", - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "../../packages/cypress-cloud/dist/support/index.js", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/../../support/index.ts", - "relativeFile": "../support/index.ts", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/support/index.ts", - "line": 25, - "column": 0, - "whitespace": " ", - "stack": "Error\n at ../../packages/cypress-cloud/dist/support/index.js (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8554:1)\n at __webpack_require__ (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8727:42)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8787:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "hookId": "h4", - "hookName": "after each", - "id": "r3", - "_events": {}, - "_eventsCount": 1 - }, - "test": { - "title": "\"after each\" hook", - "body": "() => {\n const afterHook = cy.state(\"runnable\");\n if (afterHook.parent) {\n sendSuite(afterHook.parent);\n }\n}", - "async": 0, - "sync": true, - "_timeout": 4000, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "[Circular]", - "ctx": "[Circular]", - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "../../packages/cypress-cloud/dist/support/index.js", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/../../support/index.ts", - "relativeFile": "../support/index.ts", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/support/index.ts", - "line": 25, - "column": 0, - "whitespace": " ", - "stack": "Error\n at ../../packages/cypress-cloud/dist/support/index.js (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8554:1)\n at __webpack_require__ (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8727:42)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8787:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "hookId": "h4", - "hookName": "after each", - "id": "r3", - "_events": {}, - "_eventsCount": 1 - }, - "currentTest": "[Circular]" - }, - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "LogCollectSimpleControl.registerTests", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/../../node_modules/cypress-terminal-report/src/collector/LogCollectSimpleControl.js", - "relativeFile": "../node_modules/cypress-terminal-report/src/collector/LogCollectSimpleControl.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/node_modules/cypress-terminal-report/src/collector/LogCollectSimpleControl.js", - "line": 108, - "column": 0, - "whitespace": " ", - "stack": "Error\n at LogCollectSimpleControl.registerTests (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:1602:5)\n at LogCollectSimpleControl.register (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:1512:10)\n at installLogsCollector (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:1987:62)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8786:150)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "hookId": "h3", - "hookName": "after each", - "id": "r3", - "_events": {}, - "_eventsCount": 1, - "timer": null, - "duration": 21, - "_fired": { - "runner:runnable:after:run:async": true - }, - "_error": null - }, - { - "title": "\"after each\" hook", - "body": "() => {\n const afterHook = cy.state(\"runnable\");\n if (afterHook.parent) {\n sendSuite(afterHook.parent);\n }\n}", - "async": 0, - "sync": true, - "_timeout": 4000, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "[Circular]", - "ctx": "[Circular]", - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "../../packages/cypress-cloud/dist/support/index.js", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/../../support/index.ts", - "relativeFile": "../support/index.ts", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/support/index.ts", - "line": 25, - "column": 0, - "whitespace": " ", - "stack": "Error\n at ../../packages/cypress-cloud/dist/support/index.js (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8554:1)\n at __webpack_require__ (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8727:42)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8787:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "hookId": "h4", - "hookName": "after each", - "id": "r3", - "_events": {}, - "_eventsCount": 1 - } - ], - "_afterAll": [ - { - "title": "\"after all\" hook", - "body": "function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }", - "async": 0, - "sync": true, - "_timeout": 0, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "[Circular]", - "ctx": { - "_runnable": { - "title": "\"after each\" hook", - "body": "() => {\n const afterHook = cy.state(\"runnable\");\n if (afterHook.parent) {\n sendSuite(afterHook.parent);\n }\n}", - "async": 0, - "sync": true, - "_timeout": 4000, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "[Circular]", - "ctx": "[Circular]", - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "../../packages/cypress-cloud/dist/support/index.js", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/../../support/index.ts", - "relativeFile": "../support/index.ts", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/support/index.ts", - "line": 25, - "column": 0, - "whitespace": " ", - "stack": "Error\n at ../../packages/cypress-cloud/dist/support/index.js (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8554:1)\n at __webpack_require__ (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8727:42)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8787:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "hookId": "h4", - "hookName": "after each", - "id": "r3", - "_events": {}, - "_eventsCount": 1 - }, - "test": { - "title": "\"after each\" hook", - "body": "() => {\n const afterHook = cy.state(\"runnable\");\n if (afterHook.parent) {\n sendSuite(afterHook.parent);\n }\n}", - "async": 0, - "sync": true, - "_timeout": 4000, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "[Circular]", - "ctx": "[Circular]", - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "../../packages/cypress-cloud/dist/support/index.js", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/../../support/index.ts", - "relativeFile": "../support/index.ts", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/support/index.ts", - "line": 25, - "column": 0, - "whitespace": " ", - "stack": "Error\n at ../../packages/cypress-cloud/dist/support/index.js (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8554:1)\n at __webpack_require__ (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8727:42)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8787:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "hookId": "h4", - "hookName": "after each", - "id": "r3", - "_events": {}, - "_eventsCount": 1 - }, - "currentTest": "[Circular]" - }, - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "LogCollectSimpleControl.registerLogToFiles", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/../../node_modules/cypress-terminal-report/src/collector/LogCollectSimpleControl.js", - "relativeFile": "../node_modules/cypress-terminal-report/src/collector/LogCollectSimpleControl.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/node_modules/cypress-terminal-report/src/collector/LogCollectSimpleControl.js", - "line": 126, - "column": 0, - "whitespace": " ", - "stack": "Error\n at LogCollectSimpleControl.registerLogToFiles (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:1620:5)\n at LogCollectSimpleControl.register (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:1513:10)\n at installLogsCollector (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:1987:62)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8786:150)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "hookId": "h2", - "hookName": "after all" - } - ], - "root": true, - "_timeout": 0, - "_enableTimeouts": false, - "_slow": 10000, - "_bail": false, - "_retries": -1, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "_events": { - "pre-require": [ - null, - null, - null - ] - }, - "_eventsCount": 2, - "file": "cypress/e2e/xxx.js", - "id": "r1", - "type": "suite", - "_condensedHooks": true, - "hooks": [ - { - "title": "\"before each\" hook", - "hookName": "before each", - "hookId": "h1", - "pending": false, - "body": "function () {\n cy.visit(\"/\");\n}", - "type": "hook", - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "eval", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/./cypress/support/e2e.ts", - "relativeFile": "cypress/support/e2e.ts", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/support/e2e.ts", - "line": 7, - "column": 0, - "whitespace": " ", - "stack": "Error\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8790:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "currentRetry": 0, - "retries": -1, - "_slow": 10000 - }, - { - "title": "\"after all\" hook", - "hookName": "after all", - "hookId": "h2", - "pending": false, - "body": "function () {\n // Need to wait otherwise some last commands get omitted from logs.\n cy.task(CONSTANTS.TASK_NAME_OUTPUT, null, {log: false});\n }", - "type": "hook", - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "LogCollectSimpleControl.registerLogToFiles", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/../../node_modules/cypress-terminal-report/src/collector/LogCollectSimpleControl.js", - "relativeFile": "../node_modules/cypress-terminal-report/src/collector/LogCollectSimpleControl.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/node_modules/cypress-terminal-report/src/collector/LogCollectSimpleControl.js", - "line": 126, - "column": 0, - "whitespace": " ", - "stack": "Error\n at LogCollectSimpleControl.registerLogToFiles (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:1620:5)\n at LogCollectSimpleControl.register (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:1513:10)\n at installLogsCollector (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:1987:62)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8786:150)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "currentRetry": 0, - "retries": -1, - "_slow": 10000 - }, - { - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h3", - "pending": false, - "body": "function () {\n self.sendLogsToPrinter(self.collectorState.getCurrentLogStackIndex(), self.collectorState.getCurrentTest());\n }", - "type": "hook", - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "LogCollectSimpleControl.registerTests", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/../../node_modules/cypress-terminal-report/src/collector/LogCollectSimpleControl.js", - "relativeFile": "../node_modules/cypress-terminal-report/src/collector/LogCollectSimpleControl.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/node_modules/cypress-terminal-report/src/collector/LogCollectSimpleControl.js", - "line": 108, - "column": 0, - "whitespace": " ", - "stack": "Error\n at LogCollectSimpleControl.registerTests (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:1602:5)\n at LogCollectSimpleControl.register (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:1512:10)\n at installLogsCollector (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:1987:62)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8786:150)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "currentRetry": 0, - "retries": -1, - "_slow": 10000 - }, - { - "title": "\"after each\" hook", - "hookName": "after each", - "hookId": "h4", - "pending": false, - "body": "() => {\n const afterHook = cy.state(\"runnable\");\n if (afterHook.parent) {\n sendSuite(afterHook.parent);\n }\n}", - "type": "hook", - "file": "cypress/e2e/xxx.js", - "invocationDetails": { - "function": "../../packages/cypress-cloud/dist/support/index.js", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts", - "originalFile": "webpack://web/../../support/index.ts", - "relativeFile": "../support/index.ts", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/support/index.ts", - "line": 25, - "column": 0, - "whitespace": " ", - "stack": "Error\n at ../../packages/cypress-cloud/dist/support/index.js (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8554:1)\n at __webpack_require__ (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8727:42)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8787:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8794:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/support/e2e.ts:8796:12)\n at eval ()" - }, - "currentRetry": 0, - "retries": -1, - "_slow": 10000 - } - ], - "testsQueue": [] - }, - "invocationDetails": { - "function": "eval", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js", - "originalFile": "webpack://web/./cypress/e2e/xxx.js", - "relativeFile": "cypress/e2e/xxx.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/e2e/xxx.js", - "line": 5, - "column": 0, - "whitespace": " ", - "stack": "Error\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:12:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:37:12)\n at eval ()" - }, - "file": null, - "id": "r2", - "type": "suite", - "_condensedHooks": true, - "hooks": [ - { - "title": "\"before each\" hook", - "hookName": "before each", - "hookId": "h5", - "pending": false, - "body": "function () {\n cy.createDefaultTodos().as(\"todos\");\n }", - "type": "hook", - "file": null, - "invocationDetails": { - "function": "Suite.eval", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js", - "originalFile": "webpack://web/./cypress/e2e/xxx.js", - "relativeFile": "cypress/e2e/xxx.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/e2e/xxx.js", - "line": 6, - "column": 2, - "whitespace": " ", - "stack": "Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:13:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:12:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:37:12)\n at eval ()" - }, - "currentRetry": 0, - "retries": -1, - "_slow": 10000 - } - ], - "testsQueue": [ - { - "title": "should remove completed items when clicked", - "body": "function () {\n cy.get(\"@todos\").eq(1).find(\".toggle\").check();\n cy.get(\".clear-completed\").click();\n cy.get(\"@todos\").should(\"have.length\", 2);\n cy.get(\".todo-list li\").eq(0).should(\"contain\", TODO_ITEM_ONE);\n cy.get(\".todo-list li\").eq(1).should(\"contain\", \"XXXX\");\n }", - "async": 0, - "sync": true, - "_timeout": 0, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "test", - "file": null, - "invocationDetails": { - "function": "Suite.eval", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js", - "originalFile": "webpack://web/./cypress/e2e/xxx.js", - "relativeFile": "cypress/e2e/xxx.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/e2e/xxx.js", - "line": 21, - "column": 2, - "whitespace": " ", - "stack": "Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:22:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:12:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:37:12)\n at eval ()" - }, - "parent": "[Circular]", - "ctx": { - "_runnable": "[Circular]", - "test": "[Circular]", - "todos": { - "0": {}, - "1": {}, - "2": {}, - "length": 3, - "prevObject": { - "0": { - "location": { - "ancestorOrigins": { - "0": "https://todomvc.com" - }, - "href": "https://todomvc.com/examples/vanillajs/", - "origin": "https://todomvc.com", - "protocol": "https:", - "host": "todomvc.com", - "hostname": "todomvc.com", - "port": "", - "pathname": "/examples/vanillajs/", - "search": "", - "hash": "" - }, - "referrer": "" - }, - "length": 1 - }, - "selector": ".todo-list li" - } - }, - "_testConfig": { - "testConfigList": [ - { - "overrideLevel": "test", - "overrides": { - "tags": [ - "@tagB" - ] - }, - "invocationDetails": { - "function": "Suite.eval", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js", - "originalFile": "webpack://web/./cypress/e2e/xxx.js", - "relativeFile": "cypress/e2e/xxx.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/e2e/xxx.js", - "line": 21, - "column": 2, - "whitespace": " ", - "stack": "Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:22:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:12:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:37:12)\n at eval ()" - } - } - ], - "unverifiedTestConfig": { - "tags": [ - "@tagB" - ] - } - }, - "id": "r4", - "_condensedHooks": true, - "hooks": [], - "order": 2 - }, - { - "title": "should be hidden when there are no items that are completed", - "body": "function () {\n cy.get(\"@todos\").eq(1).find(\".toggle\").check();\n cy.get(\".clear-completed\").should(\"be.visible\").click();\n cy.get(\".clear-completed\").should(\"not.be.visible\");\n }", - "async": 0, - "sync": true, - "_timeout": 0, - "_slow": 10000, - "_enableTimeouts": false, - "timedOut": false, - "_retries": -1, - "_currentRetry": 0, - "pending": false, - "type": "test", - "file": null, - "invocationDetails": { - "function": "Suite.eval", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js", - "originalFile": "webpack://web/./cypress/e2e/xxx.js", - "relativeFile": "cypress/e2e/xxx.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/e2e/xxx.js", - "line": 36, - "column": 2, - "whitespace": " ", - "stack": "Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:31:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:12:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:37:12)\n at eval ()" - }, - "parent": "[Circular]", - "ctx": { - "_runnable": "[Circular]", - "test": "[Circular]", - "todos": { - "0": {}, - "1": {}, - "2": {}, - "length": 3, - "prevObject": { - "0": { - "location": { - "ancestorOrigins": { - "0": "https://todomvc.com" - }, - "href": "https://todomvc.com/examples/vanillajs/", - "origin": "https://todomvc.com", - "protocol": "https:", - "host": "todomvc.com", - "hostname": "todomvc.com", - "port": "", - "pathname": "/examples/vanillajs/", - "search": "", - "hash": "" - }, - "referrer": "" - }, - "length": 1 - }, - "selector": ".todo-list li" - } - }, - "id": "r5", - "_condensedHooks": true, - "hooks": [], - "_testConfig": { - "testConfigList": [], - "unverifiedTestConfig": {} - }, - "order": 3 - } - ] - }, - "ctx": { - "_runnable": "[Circular]", - "test": "[Circular]", - "todos": { - "0": {}, - "1": {}, - "2": {}, - "length": 3, - "prevObject": { - "0": { - "location": { - "ancestorOrigins": { - "0": "https://todomvc.com" - }, - "href": "https://todomvc.com/examples/vanillajs/", - "origin": "https://todomvc.com", - "protocol": "https:", - "host": "todomvc.com", - "hostname": "todomvc.com", - "port": "", - "pathname": "/examples/vanillajs/", - "search": "", - "hash": "" - }, - "referrer": "" - }, - "length": 1 - }, - "selector": ".todo-list li" - } - }, - "_testConfig": { - "testConfigList": [ - { - "overrideLevel": "test", - "overrides": { - "tags": [ - "@tagA" - ] - }, - "invocationDetails": { - "function": "Suite.eval", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js", - "originalFile": "webpack://web/./cypress/e2e/xxx.js", - "relativeFile": "cypress/e2e/xxx.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/e2e/xxx.js", - "line": 10, - "column": 2, - "whitespace": " ", - "stack": "Error\n at Suite.eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:16:3)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:12:1)\n at eval (https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js:37:12)\n at eval ()" - } - } - ], - "unverifiedTestConfig": { - "tags": [ - "@tagA" - ] - }, - "applied": "complete" - }, - "id": "r3", - "_condensedHooks": true, - "hooks": [], - "order": 1, - "wallClockStartedAt": "2023-09-03T21:42:31.525Z", - "_fired": { - "runner:test:before:run": true, - "runner:test:before:run:async": true, - "runner:runnable:after:run:async": true - }, - "timings": { - "lifecycle": 15, - "before each": [ - { - "hookId": "h1", - "fnDuration": 838, - "afterFnDuration": 0 - }, - { - "hookId": "h5", - "fnDuration": 838, - "afterFnDuration": 0 - } - ], - "test": { - "fnDuration": 4100, - "afterFnDuration": 305 - }, - "after each": [ - { - "hookId": "h3", - "fnDuration": 21, - "afterFnDuration": 0 - } - ] - }, - "_events": {}, - "_eventsCount": 1, - "timer": null, - "duration": 6099, - "err": { - "message": "Timed out retrying after 4000ms: Expected to find content: 'Clear completed X' within the element: but never did.", - "type": "existence", - "name": "AssertionError", - "stack": "AssertionError: Timed out retrying after 4000ms: Expected to find content: 'Clear completed X' within the element: but never did.\n at Context.eval (webpack://web/./cypress/e2e/xxx.js:17:33)", - "parsedStack": [ - { - "message": "AssertionError: Timed out retrying after 4000ms: Expected to find content: 'Clear completed X' within the element: but never did.", - "whitespace": "" - }, - { - "function": "Context.eval", - "fileUrl": "https://todomvc.com/__cypress/tests?p=cypress/e2e/xxx.js", - "originalFile": "webpack://web/./cypress/e2e/xxx.js", - "relativeFile": "cypress/e2e/xxx.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/e2e/xxx.js", - "line": 17, - "column": 33, - "whitespace": " " - } - ], - "codeFrame": { - "line": 17, - "column": 34, - "originalFile": "cypress/e2e/xxx.js", - "relativeFile": "examples/webapp/cypress/e2e/xxx.js", - "absoluteFile": "/Users/miguelangarano/Documents/GitHub/cypress-cloud-private-fix-cypress-13/examples/webapp/cypress/e2e/xxx.js", - "frame": " 15 | function () {\n 16 | cy.get(\"@todos\").eq(0).find(\".toggle\").check();\n> 17 | cy.get(\".clear-completed\").contains(\"Clear completed X\");\n | ^\n 18 | }\n 19 | );\n 20 | ", - "language": "js" - } - }, - "state": "failed", - "alreadyEmittedMocha": true -} \ No newline at end of file diff --git a/packages/cypress-cloud/plugin/index.ts b/packages/cypress-cloud/plugin/index.ts index a08a7ad..776d0d2 100644 --- a/packages/cypress-cloud/plugin/index.ts +++ b/packages/cypress-cloud/plugin/index.ts @@ -3,6 +3,7 @@ import fs from "fs"; import { format } from "util"; import WebSocket from "ws"; +import { Event } from "../lib/pubsub"; export async function cloudPlugin( on: Cypress.PluginEvents, @@ -16,7 +17,7 @@ export async function cloudPlugin( on("after:screenshot", (details) => { sendToWS({ - type: "after:screenshot", + type: Event.AFTER_SCREENSHOT, payload: details, }); }); @@ -41,14 +42,14 @@ export async function cloudPlugin( on("task", { "currents:test:after:run": (test) => { sendToWS({ - type: "test:after:run", + type: Event.TEST_AFTER_RUN, payload: test, }); return null; }, "currents:test:before:run": (test) => { sendToWS({ - type: "test:before:run", + type: Event.TEST_BEFORE_RUN, payload: test, }); return null; @@ -69,7 +70,7 @@ export async function cloudPlugin( on("after:spec", (spec, results) => { sendToWS({ - type: "after:spec", + type: Event.AFTER_SPEC, payload: { spec, results, diff --git a/turbo.json b/turbo.json index 104c23a..d3aa808 100644 --- a/turbo.json +++ b/turbo.json @@ -8,14 +8,21 @@ "cache": false }, "build": { - "dependsOn": ["^build"], - "outputs": ["dist/**", ".next/**"], + "dependsOn": [ + "^build" + ], + "outputs": [ + "dist/**", + ".next/**" + ], "env": [ "DEBUG", "CURRENTS_ENFORCE_IS_CURRENTS", "CURRENTS_PROJECT_ID", "CURRENTS_API_URL", "CURRENTS_RECORD_KEY", + "CURRENTS_API_KEY", + "CURRENTS_RUN_BASE_URL", "TF_BUILD", "TF_BUILD_BUILDNUMBER", "AZURE_HTTP_USER_AGENT", @@ -43,4 +50,4 @@ "cache": false } } -} +} \ No newline at end of file