From 718d6c32a8e484f99b37425ae50516c476f6ef35 Mon Sep 17 00:00:00 2001 From: shelly-goldblit Date: Sat, 15 Jul 2023 11:52:03 +0300 Subject: [PATCH 01/32] Restore --- .../pokemon-go/pokemon-go.component.driver.ts | 37 ++++++++++++-- .../pokemon-go.component.spec.cy.ts | 50 ++++++++++++++++++- .../integration/pokemon-page.spec.cy.ts | 5 ++ .../pokemon-go/pokemon-go.component.driver.ts | 42 ++++++++++++++-- .../pokemon-go.component.spec.cy.ts | 43 +++++++++++++++- .../integration/pokemon-page.spec.cy.ts | 6 +++ .../pokemon-go/pokemon-go.driver.tsx | 40 +++++++++++++-- .../pokemon-go/pokemon-go.spec.cy.ts | 43 +++++++++++++++- 8 files changed, 252 insertions(+), 14 deletions(-) diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts index cdc091b9..008de33a 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts @@ -1,9 +1,40 @@ +import type { Type } from "@angular/core"; +import { CypressHelper } from "@shellygo/cypress-test-utils"; +import { CypressAngularComponentHelper } from "@shellygo/cypress-test-utils/angular"; +import { MountConfig } from "cypress/angular"; +import { PokemonGoComponent } from "./pokemon-go.component"; + export class PokemonGoComponentDriver { - beforeAndAfter = () => {}; + private helper = new CypressHelper(); + private angularComponentHelper = + new CypressAngularComponentHelper(); + + private componentProperties: Partial = {}; + + beforeAndAfter = () => { + this.helper.beforeAndAfter(); + }; given = {}; - when = {}; + when = { + render: ( + type: Type, + config: MountConfig + ) => { + this.angularComponentHelper.when.mount(type, config, { + ...this.componentProperties + }); + this.helper.when.wait(200); + }, + typePokemonIndex: (value: string) => + this.helper.when.type("pokemon-index", value), + clickGo: () => this.helper.when.click("go") + }; - get = {}; + get = { + selectedPokemon: () => this.helper.get.inputValue("pokemon-index"), + selectedPokemonSpy: () => this.helper.get.spy("selectedPokemon"), + isGoButtonDisabled: () => this.helper.get.isElementDisabled("go") + }; } diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts index e82b9357..90d3238e 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts @@ -1 +1,49 @@ -describe("Angular PokemonGoComponent Tests", () => {}); +import { FormsModule } from "@angular/forms"; +import { PokemonGoComponent } from "./pokemon-go.component"; +import { PokemonGoComponentDriver } from "./pokemon-go.component.driver"; + +describe("Angular PokemonGoComponent Tests", () => { + const testConfig = { + declarations: [PokemonGoComponent], + imports: [FormsModule] + }; + + const { when, get, given, beforeAndAfter } = new PokemonGoComponentDriver(); + beforeAndAfter(); + it("Go button should be disabled", async () => { + when.render(PokemonGoComponent, testConfig); + expect(await get.isGoButtonDisabled()).to.be.true; + }); + + it("when typing index Go button should be enabled", async () => { + when.render(PokemonGoComponent, testConfig); + when.typePokemonIndex("33"); + expect(await get.isGoButtonDisabled()).to.be.false; + }); + + it("When input filled should have input value", async () => { + when.render(PokemonGoComponent, testConfig); + when.typePokemonIndex("42"); + expect(await get.selectedPokemon()).to.eq("42"); + }); + + it("When input and clicked go should fetch pokemon by index", () => { + when.render(PokemonGoComponent, testConfig); + when.typePokemonIndex("12"); + when.clickGo(); + expect(get.selectedPokemonSpy().should("have.been.calledWith", "12")); + }); + + it("should empty input when clicking submit", async () => { + when.render(PokemonGoComponent, testConfig); + when.typePokemonIndex("33"); + when.clickGo(); + expect(await get.selectedPokemon()).to.eq(""); + }); + + it("should not update input value when typing non digits", async () => { + when.render(PokemonGoComponent, testConfig); + when.typePokemonIndex("abcd-"); + expect(await get.selectedPokemon()).to.eq(""); + }); +}); diff --git a/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index ea35d6bb..84d3445d 100644 --- a/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -26,4 +26,9 @@ describe("Lit Pokemon Page integration Tests", () => { it("should disable prev button once showing first pokemon", async () => { expect(await get.pokemon.isPrevButtonDisabled()).to.be.true; }); + it("should fetch pokemon by index", async () => { + when.pokemon.pokemonGo.typePokemonIndex("78"); + when.pokemon.pokemonGo.clickGo(); + expect(await get.pokemon.fetchPokemonOffset()).to.eq("77"); + }); }); diff --git a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts index cdc091b9..44d4bcdb 100644 --- a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts +++ b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts @@ -1,9 +1,43 @@ +import { CypressHelper } from "@shellygo/cypress-test-utils"; +import { CypressLitComponentHelper } from "@shellygo/cypress-test-utils/lit"; +import { html } from "lit"; +import { PokemonGoComponent } from "./pokemon-go.component"; + export class PokemonGoComponentDriver { - beforeAndAfter = () => {}; + private helper = new CypressHelper(); + private litComponentHelper = new CypressLitComponentHelper(); + private props = { + onSubmit: (pokemonIndex: string) => {} + }; + beforeAndAfter = () => { + this.helper.beforeAndAfter(); + }; - given = {}; + given = { + onSubmitSpy: () => { + this.props.onSubmit = this.helper.given.spyOnObject( + this.props, + "onSubmit" + ); + } + }; - when = {}; + when = { + render: (element: PokemonGoComponent) => { + this.litComponentHelper.when.unmount(element); + this.litComponentHelper.when.mount( + element, + html`` + ); + }, + typePokemonIndex: (input: string) => + this.helper.when.type("pokemon-index", input), + clickGo: () => this.helper.when.click("go") + }; - get = {}; + get = { + onSubmitSpy: () => this.helper.get.spy("onSubmit"), + indexValue: () => this.helper.get.inputValue("pokemon-index"), + isGoButtonDisabled: () => this.helper.get.isElementDisabled("go") + }; } diff --git a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts index e894fdb4..04f08fbe 100644 --- a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts +++ b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts @@ -1 +1,42 @@ -describe("Lit PokemonImageComponent", () => {}); +import { PokemonGoComponent } from "./pokemon-go.component"; +import { PokemonGoComponentDriver } from "./pokemon-go.component.driver"; + +describe("Lit PokemonImageComponent", () => { + const { when, given, get, beforeAndAfter } = new PokemonGoComponentDriver(); + beforeAndAfter(); + + it("Go button should be disabled", async () => { + when.render(new PokemonGoComponent()); + expect(await get.isGoButtonDisabled()).to.be.true; + }); + + it("when typing index Go button should be enabled", async () => { + given.onSubmitSpy(); + when.render(new PokemonGoComponent()); + when.typePokemonIndex("33"); + expect(await get.isGoButtonDisabled()).to.be.false; + }); + + it("when typing index and submitting should call onSubmit", () => { + given.onSubmitSpy(); + when.render(new PokemonGoComponent()); + when.typePokemonIndex("33"); + when.clickGo(); + expect(get.onSubmitSpy().should("have.been.calledWith", "33")); + }); + + it("should not update input value when typing non digits", async () => { + given.onSubmitSpy(); + when.render(new PokemonGoComponent()); + when.typePokemonIndex("abcd-"); + expect(await get.indexValue()).to.eq(""); + }); + + it("should empty input when clicking submit", async () => { + given.onSubmitSpy(); + when.render(new PokemonGoComponent()); + when.typePokemonIndex("33"); + when.clickGo(); + expect(await get.indexValue()).to.eq(""); + }); +}); diff --git a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 323f243c..9f0e4f6a 100644 --- a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -26,4 +26,10 @@ describe("React Pokemon Page integration Tests", () => { it("should disable prev button once showing first pokemon", async () => { expect(await get.pokemon.isPrevButtonDisabled()).to.be.true; }); + + it("should fetch pokemon by index", async () => { + when.pokemon.pokemonGo.typePokemonIndex("78"); + when.pokemon.pokemonGo.clickGo(); + expect(await get.pokemon.fetchPokemonOffset()).to.eq("77"); + }); }); diff --git a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx index cdc091b9..d6471624 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx +++ b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx @@ -1,9 +1,41 @@ +import { CypressHelper } from "@shellygo/cypress-test-utils"; +import { CypressReactComponentHelper } from "@shellygo/cypress-test-utils/react"; +import type { Attributes, ReactNode } from "react"; +import { IProps, PokemonGoComponent } from "./pokemon-go"; + export class PokemonGoComponentDriver { - beforeAndAfter = () => {}; + private helper = new CypressHelper(); + private reactComponentHelper = new CypressReactComponentHelper(); + + private props: IProps = { + onSubmit: () => {} + }; + + beforeAndAfter = () => { + this.helper.beforeAndAfter(); + }; - given = {}; + given = { + onSubmitSpy: () => (this.props.onSubmit = this.helper.given.spy("onSubmit")) + }; - when = {}; + when = { + render: ( + type: typeof PokemonGoComponent, + props?: (Attributes & Partial) | null, + ...children: ReactNode[] + ) => { + const mergedProps: Attributes & IProps = { ...this.props, ...props }; + this.reactComponentHelper.when.mount(type, mergedProps, children); + }, + typePokemonIndex: (input: string) => + this.helper.when.type("pokemon-index", input), + clickGo: () => this.helper.when.click("go") + }; - get = {}; + get = { + onSubmitSpy: () => this.helper.get.spy("onSubmit"), + indexValue: () => this.helper.get.inputValue("pokemon-index"), + isGoButtonDisabled: () => this.helper.get.isElementDisabled("go") + }; } diff --git a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts index 9cbf4c7d..ede29373 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts +++ b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts @@ -1 +1,42 @@ -describe("React PokemonImageComponent Tests", () => {}); +import { PokemonGoComponent } from "./pokemon-go"; +import { PokemonGoComponentDriver } from "./pokemon-go.driver"; + +describe("React PokemonImageComponent Tests", () => { + const { when, given, get, beforeAndAfter } = new PokemonGoComponentDriver(); + beforeAndAfter(); + + it("Go button should be disabled", async () => { + when.render(PokemonGoComponent); + expect(await get.isGoButtonDisabled()).to.be.true; + }); + + it("when typing index Go button should be enabled", async () => { + given.onSubmitSpy(); + when.render(PokemonGoComponent); + when.typePokemonIndex("33"); + expect(await get.isGoButtonDisabled()).to.be.false; + }); + + it("when typing index and submiting should call onSubmit", () => { + given.onSubmitSpy(); + when.render(PokemonGoComponent); + when.typePokemonIndex("33"); + when.clickGo(); + expect(get.onSubmitSpy().should("have.been.calledWith", "33")); + }); + + it("should not update input value when typing non digits", async () => { + given.onSubmitSpy(); + when.render(PokemonGoComponent); + when.typePokemonIndex("abcd-"); + expect(await get.indexValue()).to.eq(""); + }); + + it("should empty input when clicking submit", async () => { + given.onSubmitSpy(); + when.render(PokemonGoComponent); + when.typePokemonIndex("33"); + when.clickGo(); + expect(await get.indexValue()).to.eq(""); + }); +}); From 580f944fee2ad533e60d2de4f07b1a0a8df0cd76 Mon Sep 17 00:00:00 2001 From: shelly-goldblit Date: Sat, 15 Jul 2023 12:38:04 +0300 Subject: [PATCH 02/32] fix failing test --- .../cypress/integration/pokemon-page.spec.cy.ts | 1 + .../pokemon-catalog/pokemon-catalog.component.driver.tsx | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 9f0e4f6a..da54cefa 100644 --- a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -29,6 +29,7 @@ describe("React Pokemon Page integration Tests", () => { it("should fetch pokemon by index", async () => { when.pokemon.pokemonGo.typePokemonIndex("78"); + when.pokemon.waitForGoToBeEnabled(); when.pokemon.pokemonGo.clickGo(); expect(await get.pokemon.fetchPokemonOffset()).to.eq("77"); }); diff --git a/examples/react/pokemon-catalog/src/components/pokemon-catalog/pokemon-catalog.component.driver.tsx b/examples/react/pokemon-catalog/src/components/pokemon-catalog/pokemon-catalog.component.driver.tsx index adc7825f..13020c4a 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-catalog/pokemon-catalog.component.driver.tsx +++ b/examples/react/pokemon-catalog/src/components/pokemon-catalog/pokemon-catalog.component.driver.tsx @@ -69,6 +69,10 @@ export class PokemonCatalogComponentDriver { this.helper.when.waitUntil(() => this.helper.get.elementByTestId("prev").should("be.enabled") ), + waitForGoToBeEnabled: () => + this.helper.when.waitUntil(() => + this.helper.get.elementByTestId("go").should("be.enabled") + ), clickNext: () => this.helper.when.click("next"), clickPrev: () => this.helper.when.click("prev") }; From 179941e4c810653b3884f97014d4901b77b06c57 Mon Sep 17 00:00:00 2001 From: shelly-goldblit Date: Sat, 15 Jul 2023 16:49:51 +0300 Subject: [PATCH 03/32] fix integration tests --- .../cypress/integration/pokemon-page.spec.cy.ts | 6 ++++++ .../pokemon-catalog/cypress/drivers/pokemon-page.driver.ts | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index b779dc34..8417a0da 100644 --- a/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -26,4 +26,10 @@ describe("Angular Pokemon Page integration Tests", () => { it("should disable prev button once showing first pokemon", async () => { expect(await get.pokemon.isPrevButtonDisabled()).to.be.true; }); + + it("should fetch pokemon by index", async () => { + when.pokemon.pokemonGo.typePokemonIndex("78"); + when.pokemon.pokemonGo.clickGo(); + expect(await get.pokemon.fetchPokemonOffset()).to.eq("77"); + }); }); diff --git a/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts b/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts index 2e6d91fe..ac8f0507 100644 --- a/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts +++ b/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts @@ -32,6 +32,10 @@ export class PokemonPageDriver { }; get = { - ...this.pokemonDriver.get + ...this.pokemonDriver.get, + fetchPokemonOffset: () => { + this.helper.when.waitForLastCall("pokemon"); + return this.helper.get.requestQueryParam("pokemon", "offset"); + } }; } From 778ebb180858b191bfd2c87883e9197579913d31 Mon Sep 17 00:00:00 2001 From: shelly-goldblit Date: Tue, 18 Jul 2023 08:52:02 +0300 Subject: [PATCH 04/32] fix image fallback defect --- .../components/pokemon-image/pokemon-image.component.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/examples/lit/pokemon-catalog/src/components/pokemon-image/pokemon-image.component.ts b/examples/lit/pokemon-catalog/src/components/pokemon-image/pokemon-image.component.ts index 08054431..244467a1 100644 --- a/examples/lit/pokemon-catalog/src/components/pokemon-image/pokemon-image.component.ts +++ b/examples/lit/pokemon-catalog/src/components/pokemon-image/pokemon-image.component.ts @@ -1,4 +1,4 @@ -import { LitElement, html } from "lit"; +import { LitElement, PropertyValues, html } from "lit"; import { customElement, property, state } from "lit/decorators.js"; import styles from "./pokemon-image.component.scss"; @@ -14,6 +14,12 @@ export class PokemonImageComponent extends LitElement { return styles; } + override willUpdate(changedProperties: PropertyValues) { + if (changedProperties.has("pokemonIndex")) { + this.showFallbackImage = false; + } + } + onImageError = event => { this.showFallbackImage = true; }; From b6b2fdc7094182ab040b739e21665bcdd3b67066 Mon Sep 17 00:00:00 2001 From: shelly-goldblit Date: Wed, 19 Jul 2023 06:24:27 +0300 Subject: [PATCH 05/32] restore react fix --- .../src/components/pokemon-image/pokemon-image.component.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/react/pokemon-catalog/src/components/pokemon-image/pokemon-image.component.tsx b/examples/react/pokemon-catalog/src/components/pokemon-image/pokemon-image.component.tsx index a3c3f0de..9e3a0dd5 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-image/pokemon-image.component.tsx +++ b/examples/react/pokemon-catalog/src/components/pokemon-image/pokemon-image.component.tsx @@ -1,4 +1,4 @@ -import { SyntheticEvent, useState } from "react"; +import { SyntheticEvent, useEffect, useState } from "react"; import "./pokemon-image.scss"; export interface IProps { @@ -8,6 +8,7 @@ export interface IProps { export const PokemonImageComponent = (props: IProps) => { const { pokemonIndex } = props; const [showFallbackImage, setShowFallbackImage] = useState(false); + useEffect(() => setShowFallbackImage(false), [pokemonIndex]); const onImageError = (event: SyntheticEvent) => { setShowFallbackImage(true); From 6c3ea10df11727d7856d68806abe25104cd329f0 Mon Sep 17 00:00:00 2001 From: shelly-goldblit Date: Wed, 19 Jul 2023 08:06:47 +0300 Subject: [PATCH 06/32] add integration test --- .../cypress/integration/pokemon-page.spec.cy.ts | 4 ++++ .../cypress/integration/pokemon-page.spec.cy.ts | 5 +++++ .../cypress/integration/pokemon-page.spec.cy.ts | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 8417a0da..3173db0f 100644 --- a/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -27,6 +27,10 @@ describe("Angular Pokemon Page integration Tests", () => { expect(await get.pokemon.isPrevButtonDisabled()).to.be.true; }); + it("should render correct image", async () => { + expect(await get.pokemon.image.pictureSrc()).to.include("1.gif"); + }); + it("should fetch pokemon by index", async () => { when.pokemon.pokemonGo.typePokemonIndex("78"); when.pokemon.pokemonGo.clickGo(); diff --git a/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 84d3445d..80240e1f 100644 --- a/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -26,6 +26,11 @@ describe("Lit Pokemon Page integration Tests", () => { it("should disable prev button once showing first pokemon", async () => { expect(await get.pokemon.isPrevButtonDisabled()).to.be.true; }); + + it("should render correct image", async () => { + expect(await get.pokemon.image.pictureSrc()).to.include("1.gif"); + }); + it("should fetch pokemon by index", async () => { when.pokemon.pokemonGo.typePokemonIndex("78"); when.pokemon.pokemonGo.clickGo(); diff --git a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index da54cefa..308ba65e 100644 --- a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -27,6 +27,10 @@ describe("React Pokemon Page integration Tests", () => { expect(await get.pokemon.isPrevButtonDisabled()).to.be.true; }); + it("should render correct image", async () => { + expect(await get.pokemon.image.pictureSrc()).to.include("1.gif"); + }); + it("should fetch pokemon by index", async () => { when.pokemon.pokemonGo.typePokemonIndex("78"); when.pokemon.waitForGoToBeEnabled(); From 91f35536ca0fcd49ef1edd186b59f2b36855a977 Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Wed, 26 Jul 2023 19:11:58 +0300 Subject: [PATCH 07/32] add tests and fix image error bug --- .../cypress/e2e/pokemon-page.spec.cy.ts | 15 + .../pokemon-image/pokemon-image.component.ts | 7 +- examples/angular/pokemon-catalog/yarn.lock | 1379 +++++++---------- .../lit/pokemon-catalog/cypress.config.ts | 19 +- .../cypress/e2e/pokemon-page.spec.cy.ts | 15 + examples/lit/pokemon-catalog/package.json | 3 +- examples/lit/pokemon-catalog/tsconfig.json | 2 +- examples/lit/pokemon-catalog/yarn.lock | 64 +- .../cypress/e2e/pokemon-page.spec.cy.ts | 14 + examples/react/pokemon-catalog/package.json | 2 +- .../pokemon-catalog.component.driver.tsx | 5 +- examples/react/pokemon-catalog/yarn.lock | 7 +- 12 files changed, 662 insertions(+), 870 deletions(-) diff --git a/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index 8ac2e63c..999b902d 100644 --- a/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -75,4 +75,19 @@ describe("Angular Pokemon e2e", () => { }); }); }); + + describe("when changing from pokemon without gif to pokemon with gif", () => { + beforeEach(() => {}); + it("should render pokemon gif", async () => { + when.pokemon.pokemonGo.typePokemonIndex("888"); + when.wait(400); + when.pokemon.pokemonGo.clickGo(); + when.pokemon.pokemonGo.typePokemonIndex("33"); + when.wait(400); + + when.pokemon.pokemonGo.clickGo(); + when.wait(400); + expect(await get.pokemon.image.pictureSrc()).to.include("/33.gif"); + }); + }); }); diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-image/pokemon-image.component.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-image/pokemon-image.component.ts index 90afa14c..a3b5b832 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-image/pokemon-image.component.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-image/pokemon-image.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from "@angular/core"; +import { Component, Input, OnChanges } from "@angular/core"; @Component({ selector: "pokemon-image", @@ -25,7 +25,7 @@ import { Component, Input } from "@angular/core"; }) // -export class PokemonImageComponent { +export class PokemonImageComponent implements OnChanges { @Input() pokemonIndex: number = 1; showFallbackImage: boolean = false; @@ -33,6 +33,9 @@ export class PokemonImageComponent { this.showFallbackImage = true; } + ngOnChanges() { + this.showFallbackImage = false; + } getPokemonImage = () => { return `https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/versions/generation-v/black-white/animated/${this.pokemonIndex}.gif`; }; diff --git a/examples/angular/pokemon-catalog/yarn.lock b/examples/angular/pokemon-catalog/yarn.lock index 305ba360..9c6be4f3 100644 --- a/examples/angular/pokemon-catalog/yarn.lock +++ b/examples/angular/pokemon-catalog/yarn.lock @@ -7,7 +7,7 @@ resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz" integrity sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA== -"@ampproject/remapping@^2.1.0", "@ampproject/remapping@2.2.0": +"@ampproject/remapping@2.2.0", "@ampproject/remapping@^2.1.0": version "2.2.0" resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== @@ -28,7 +28,7 @@ tsconfig-paths "^3.9.0" webpack-merge "^5.7.3" -"@angular-devkit/architect@>=0.1400.0 < 0.1500.0", "@angular-devkit/architect@0.1402.12": +"@angular-devkit/architect@0.1402.12", "@angular-devkit/architect@>=0.1400.0 < 0.1500.0": version "0.1402.12" resolved "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.12.tgz" integrity sha512-LuK26pyaqyClEbY0n4/WIh3irUuA8wwmMmEj8uW4boziuJWv7U42lJJRF3VwkchiyOIp8qiKg995K6IoeXkWgA== @@ -114,7 +114,7 @@ "@angular-devkit/architect" "0.1402.12" rxjs "6.6.7" -"@angular-devkit/core@^14.0.0", "@angular-devkit/core@14.2.12": +"@angular-devkit/core@14.2.12", "@angular-devkit/core@^14.0.0": version "14.2.12" resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.12.tgz" integrity sha512-tg1+deEZdm3fgk2BQ6y7tujciL6qhtN5Ums266lX//kAZeZ4nNNXTBT+oY5xgfjvmLbW+xKg0XZrAS0oIRKY5g== @@ -136,14 +136,14 @@ ora "5.4.1" rxjs "6.6.7" -"@angular/animations@^14.2.0", "@angular/animations@14.3.0": +"@angular/animations@^14.2.0": version "14.3.0" resolved "https://registry.npmjs.org/@angular/animations/-/animations-14.3.0.tgz" integrity sha512-QoBcIKy1ZiU+4qJsAh5Ls20BupWiXiZzKb0s6L9/dntPt5Msr4Ao289XR2P6O1L+kTsCprH9Kt41zyGQ/bkRqg== dependencies: tslib "^2.3.0" -"@angular/cli@>=14", "@angular/cli@~14.2.11": +"@angular/cli@~14.2.11": version "14.2.12" resolved "https://registry.npmjs.org/@angular/cli/-/cli-14.2.12.tgz" integrity sha512-G/785b6jIIX7J+zS8RHaCT1OYzqANw5hJlnLf8tLgmaadLMVNQvIrvHTYtmD86pbqCYyVDLoMxefxRIwMHJuqw== @@ -169,14 +169,14 @@ uuid "8.3.2" yargs "17.5.1" -"@angular/common@^14.2.0", "@angular/common@14.3.0": +"@angular/common@^14.2.0": version "14.3.0" resolved "https://registry.npmjs.org/@angular/common/-/common-14.3.0.tgz" integrity sha512-pV9oyG3JhGWeQ+TFB0Qub6a1VZWMNZ6/7zEopvYivdqa5yDLLDSBRWb6P80RuONXyGnM1pa7l5nYopX+r/23GQ== dependencies: tslib "^2.3.0" -"@angular/compiler-cli@^14.0.0", "@angular/compiler-cli@^14.2.0": +"@angular/compiler-cli@^14.2.0": version "14.3.0" resolved "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.3.0.tgz" integrity sha512-eoKpKdQ2X6axMgzcPUMZVYl3bIlTMzMeTo5V29No4BzgiUB+QoOTYGNJZkGRyqTNpwD9uSBJvmT2vG9+eC4ghQ== @@ -192,14 +192,14 @@ tslib "^2.3.0" yargs "^17.2.1" -"@angular/compiler@^14.2.0", "@angular/compiler@14.3.0": +"@angular/compiler@^14.2.0": version "14.3.0" resolved "https://registry.npmjs.org/@angular/compiler/-/compiler-14.3.0.tgz" integrity sha512-E15Rh0t3vA+bctbKnBCaDmLvc3ix+ZBt6yFZmhZalReQ+KpOlvOJv+L9oiFEgg+rYVl2QdvN7US1fvT0PqswLw== dependencies: tslib "^2.3.0" -"@angular/core@^14.2.0", "@angular/core@>=14", "@angular/core@14.3.0": +"@angular/core@^14.2.0": version "14.3.0" resolved "https://registry.npmjs.org/@angular/core/-/core-14.3.0.tgz" integrity sha512-wYiwItc0Uyn4FWZ/OAx/Ubp2/WrD3EgUJ476y1XI7yATGPF8n9Ld5iCXT08HOvc4eBcYlDfh90kTXR6/MfhzdQ== @@ -220,7 +220,7 @@ dependencies: tslib "^2.3.0" -"@angular/platform-browser@^14.2.0", "@angular/platform-browser@14.3.0": +"@angular/platform-browser@^14.2.0": version "14.3.0" resolved "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.3.0.tgz" integrity sha512-w9Y3740UmTz44T0Egvc+4QV9sEbO61L+aRHbpkLTJdlEGzHByZvxJmJyBYmdqeyTPwc/Zpy7c02frlpfAlyB7A== @@ -251,7 +251,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz" integrity sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.1", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.17.2", "@babel/core@^7.4.0-0", "@babel/core@^7.7.5", "@babel/core@7.18.10": +"@babel/core@7.18.10", "@babel/core@^7.12.3", "@babel/core@^7.17.2", "@babel/core@^7.7.5": version "7.18.10" resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz" integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== @@ -272,7 +272,7 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.18.10", "@babel/generator@7.18.12": +"@babel/generator@7.18.12", "@babel/generator@^7.18.10": version "7.18.12" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz" integrity sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg== @@ -291,7 +291,7 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@7.18.6": +"@babel/helper-annotate-as-pure@7.18.6", "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== @@ -526,7 +526,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-transform-optional-chaining" "^7.22.5" -"@babel/plugin-proposal-async-generator-functions@^7.18.10", "@babel/plugin-proposal-async-generator-functions@7.18.10": +"@babel/plugin-proposal-async-generator-functions@7.18.10", "@babel/plugin-proposal-async-generator-functions@^7.18.10": version "7.18.10" resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz" integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== @@ -767,7 +767,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-to-generator@^7.18.6", "@babel/plugin-transform-async-to-generator@7.18.6": +"@babel/plugin-transform-async-to-generator@7.18.6", "@babel/plugin-transform-async-to-generator@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== @@ -1032,7 +1032,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/preset-env@^7.0.0", "@babel/preset-env@7.18.10": +"@babel/preset-env@7.18.10": version "7.18.10" resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz" integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== @@ -1129,14 +1129,14 @@ resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.8.4", "@babel/runtime@7.18.9": +"@babel/runtime@7.18.9", "@babel/runtime@^7.8.4": version "7.18.9" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz" integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.18.10", "@babel/template@7.18.10": +"@babel/template@7.18.10", "@babel/template@^7.18.10": version "7.18.10" resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== @@ -1387,6 +1387,11 @@ resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== +"@esbuild/linux-loong64@0.15.5": + version "0.15.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz#91aef76d332cdc7c8942b600fa2307f3387e6f82" + integrity sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A== + "@gar/promisify@^1.1.3": version "1.1.3" resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" @@ -1435,16 +1440,7 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.3" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== @@ -1453,7 +1449,7 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@3.1.0": +"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": version "3.1.0" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== @@ -1471,23 +1467,15 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.15" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - "@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.18" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz" - integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" @@ -1497,6 +1485,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.18" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + "@jsdevtools/coverage-istanbul-loader@^3.0.5": version "3.0.5" resolved "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz" @@ -1526,7 +1522,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -1935,14 +1931,6 @@ dependencies: "@types/node" "*" -"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" @@ -1951,6 +1939,14 @@ "@webassemblyjs/helper-numbers" "1.11.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.1" +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/floating-point-hex-parser@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz" @@ -2067,20 +2063,6 @@ resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" - "@webassemblyjs/wasm-edit@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" @@ -2095,6 +2077,20 @@ "@webassemblyjs/wasm-parser" "1.11.1" "@webassemblyjs/wast-printer" "1.11.1" +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + "@webassemblyjs/wasm-gen@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" @@ -2137,18 +2133,6 @@ "@webassemblyjs/wasm-gen" "1.11.6" "@webassemblyjs/wasm-parser" "1.11.6" -"@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== - dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - "@webassemblyjs/wasm-parser@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" @@ -2161,6 +2145,18 @@ "@webassemblyjs/leb128" "1.11.1" "@webassemblyjs/utf8" "1.11.1" +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + "@webassemblyjs/wast-printer@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" @@ -2220,7 +2216,7 @@ acorn-walk@^8.1.1: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.2: +acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.2: version "8.9.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz" integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ== @@ -2233,7 +2229,7 @@ adjust-sourcemap-loader@^4.0.0: loader-utils "^2.0.0" regex-parser "^2.2.11" -agent-base@^6.0.2, agent-base@6: +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== @@ -2257,7 +2253,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv-formats@^2.1.1, ajv-formats@2.1.1: +ajv-formats@2.1.1, ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== @@ -2276,17 +2272,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0, ajv@8.11.0: +ajv@8.11.0, ajv@^8.0.0, ajv@^8.9.0: version "8.11.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== @@ -2296,16 +2282,21 @@ ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0, ajv@8.11.0: require-from-string "^2.0.2" uri-js "^4.2.2" -ansi-colors@^4.1.1, ansi-colors@4.1.3: +ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@4.1.3, ansi-colors@^4.1.1: version "4.1.3" resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== -ansi-colors@4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.2" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" @@ -2340,14 +2331,7 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== @@ -2422,16 +2406,16 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" -array-flatten@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== +array-flatten@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + array-union@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" @@ -2455,7 +2439,7 @@ asn1@~0.2.3: dependencies: safer-buffer "~2.1.0" -assert-plus@^1.0.0, assert-plus@1.0.0: +assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== @@ -2507,7 +2491,7 @@ aws4@^1.8.0: resolved "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -"babel-loader@^8.0.2 || ^9", babel-loader@8.2.5: +babel-loader@8.2.5: version "8.2.5" resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz" integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== @@ -2562,7 +2546,7 @@ base64-js@^1.2.0, base64-js@^1.3.1: resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base64id@~2.0.0, base64id@2.0.0: +base64id@2.0.0, base64id@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz" integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== @@ -2603,23 +2587,23 @@ blob-util@^2.0.2: resolved "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== -bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - bluebird@3.7.1: version "3.7.1" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz" integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== -body-parser@^1.19.0: - version "1.20.2" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== +bluebird@^3.7.2: + version "3.7.2" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" - content-type "~1.0.5" + content-type "~1.0.4" debug "2.6.9" depd "2.0.0" destroy "1.2.0" @@ -2627,17 +2611,17 @@ body-parser@^1.19.0: iconv-lite "0.4.24" on-finished "2.4.1" qs "6.11.0" - raw-body "2.5.2" + raw-body "2.5.1" type-is "~1.6.18" unpipe "1.0.0" -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== +body-parser@^1.19.0: + version "1.20.2" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== dependencies: bytes "3.1.2" - content-type "~1.0.4" + content-type "~1.0.5" debug "2.6.9" depd "2.0.0" destroy "1.2.0" @@ -2645,7 +2629,7 @@ body-parser@1.20.1: iconv-lite "0.4.24" on-finished "2.4.1" qs "6.11.0" - raw-body "2.5.1" + raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" @@ -2686,12 +2670,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.5, browserslist@^4.9.1, "browserslist@>= 4.21.0": +browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.5, browserslist@^4.9.1: version "4.21.9" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz" integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== @@ -2741,7 +2720,7 @@ bytes@3.1.2: resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -cacache@^16.0.0, cacache@^16.1.0, cacache@16.1.2: +cacache@16.1.2, cacache@^16.0.0, cacache@^16.1.0: version "16.1.2" resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz" integrity sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA== @@ -2824,11 +2803,6 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001503: version "1.0.30001512" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz" @@ -2844,32 +2818,7 @@ chai-subset@^1.6.0: resolved "https://registry.npmjs.org/chai-subset/-/chai-subset-1.6.0.tgz" integrity sha512-K3d+KmqdS5XKW5DWPd5sgNffL3uxdDe+6GdnJh3AYPhwnBGRY5urfvfcbRtWIvvpz+KxkL9FeBB6MZewLUNwug== -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.1: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.2: +chalk@4.1.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -2877,13 +2826,14 @@ chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" chance@^1.1.11: version "1.1.11" @@ -2905,7 +2855,7 @@ check-more-types@^2.24.0: resolved "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz" integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== -chokidar@^3.0.0, chokidar@^3.5.1, chokidar@^3.5.2, chokidar@^3.5.3, "chokidar@>=3.0.0 <4.0.0", chokidar@3.5.3: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.1, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -3034,16 +2984,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-support@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" @@ -3158,16 +3108,16 @@ cookie-signature@1.0.6: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@~0.4.1: - version "0.4.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - cookie@0.5.0: version "0.5.0" resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +cookie@~0.4.1: + version "0.4.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + copy-anything@^2.0.1: version "2.0.6" resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz" @@ -3194,7 +3144,7 @@ core-js-compat@^3.21.0, core-js-compat@^3.22.1: dependencies: browserslist "^4.21.5" -core-util-is@~1.0.0, core-util-is@1.0.2: +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== @@ -3328,7 +3278,7 @@ cypress-wait-until@^1.7.2: resolved "https://registry.npmjs.org/cypress-wait-until/-/cypress-wait-until-1.7.2.tgz" integrity sha512-uZ+M8/MqRcpf+FII/UZrU7g1qYZ4aVlHcgyVopnladyoBrpoaMJ4PKZDrdOJ05H5RHbr7s9Tid635X3E+ZLU/Q== -cypress@*, cypress@^12.16.0, cypress@^12.5.1, "cypress@^4.x || ^5.x || ^6.x || ^7.x || ^8.x || ^9.x || ^10.x || ^11.x || ^12.x": +cypress@^12.16.0, cypress@^12.5.1: version "12.16.0" resolved "https://registry.npmjs.org/cypress/-/cypress-12.16.0.tgz" integrity sha512-mwv1YNe48hm0LVaPgofEhGCtLwNIQEjmj2dJXnAkY1b4n/NE9OtgPph4TyS+tOtYp5CKtRmDvBzWseUXQTjbTg== @@ -3393,49 +3343,37 @@ dateformat@^4.5.1: resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== -dayjs@^1.10.4, dayjs@1.11.8: +dayjs@1.11.8, dayjs@^1.10.4: version "1.11.8" resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.8.tgz" integrity sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ== -debug@^3.1.0: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^3.2.6: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: - ms "^2.1.1" + ms "2.0.0" -debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2, debug@4, debug@4.3.4: +debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +debug@^3.1.0, debug@^3.2.6: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: - ms "2.0.0" + ms "^2.1.1" decamelize@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" @@ -3480,7 +3418,7 @@ delegates@^1.0.0: resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -depd@^2.0.0, depd@2.0.0: +depd@2.0.0, depd@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== @@ -3515,7 +3453,7 @@ diff@^4.0.1: resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diff@^5.0.0, diff@5.0.0: +diff@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== @@ -3680,7 +3618,7 @@ enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0, enhanced-resolve@^5.15.0: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.6, "enquirer@>= 2.3.0 < 3": +enquirer@^2.3.6: version "2.3.6" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -3799,16 +3737,111 @@ es6-error@^4.0.1: resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== -esbuild-linux-64@0.15.5: +esbuild-android-64@0.15.5: version "0.15.5" - resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz" - integrity sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg== + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz#3c7b2f2a59017dab3f2c0356188a8dd9cbdc91c8" + integrity sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg== + +esbuild-android-arm64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz#e301db818c5a67b786bf3bb7320e414ac0fcf193" + integrity sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg== + +esbuild-darwin-64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz#11726de5d0bf5960b92421ef433e35871c091f8d" + integrity sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ== + +esbuild-darwin-arm64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz#ad89dafebb3613fd374f5a245bb0ce4132413997" + integrity sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg== + +esbuild-freebsd-64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz#6bfb52b4a0d29c965aa833e04126e95173289c8a" + integrity sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA== + +esbuild-freebsd-arm64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz#38a3fed8c6398072f9914856c7c3e3444f9ef4dd" + integrity sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w== + +esbuild-linux-32@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz#942dc70127f0c0a7ea91111baf2806e61fc81b32" + integrity sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ== + +esbuild-linux-64@0.15.5: + version "0.15.5" + resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz" + integrity sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg== + +esbuild-linux-arm64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz#28cd899beb2d2b0a3870fd44f4526835089a318d" + integrity sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA== + +esbuild-linux-arm@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz#6441c256225564d8794fdef5b0a69bc1a43051b5" + integrity sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q== + +esbuild-linux-mips64le@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz#d4927f817290eaffc062446896b2a553f0e11981" + integrity sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ== + +esbuild-linux-ppc64le@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz#b6d660dc6d5295f89ac51c675f1a2f639e2fb474" + integrity sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw== + +esbuild-linux-riscv64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz#2801bf18414dc3d3ad58d1ea83084f00d9d84896" + integrity sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA== + +esbuild-linux-s390x@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz#12a634ae6d3384cacc2b8f4201047deafe596eae" + integrity sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ== + +esbuild-netbsd-64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz#951bbf87600512dfcfbe3b8d9d117d684d26c1b8" + integrity sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w== + +esbuild-openbsd-64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz#26705b61961d525d79a772232e8b8f211fdbb035" + integrity sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA== + +esbuild-sunos-64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz#d794da1ae60e6e2f6194c44d7b3c66bf66c7a141" + integrity sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA== esbuild-wasm@0.15.5: version "0.15.5" resolved "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz" integrity sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A== +esbuild-windows-32@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz#0670326903f421424be86bc03b7f7b3ff86a9db7" + integrity sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg== + +esbuild-windows-64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz#64f32acb7341f3f0a4d10e8ff1998c2d1ebfc0a9" + integrity sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw== + +esbuild-windows-arm64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz#4fe7f333ce22a922906b10233c62171673a3854b" + integrity sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA== + esbuild@0.15.5: version "0.15.5" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz" @@ -3851,11 +3884,6 @@ escape-string-regexp@^1.0.5: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -escape-string-regexp@4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - eslint-scope@5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" @@ -3916,21 +3944,6 @@ events@^3.2.0: resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - execa@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz" @@ -3946,6 +3959,21 @@ execa@4.1.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + executable@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz" @@ -4020,7 +4048,7 @@ extract-zip@2.0.1: optionalDependencies: "@types/yauzl" "^2.9.1" -extsprintf@^1.2.0, extsprintf@1.3.0: +extsprintf@1.3.0, extsprintf@^1.2.0: version "1.3.0" resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== @@ -4116,30 +4144,6 @@ find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - find-up@6.3.0: version "6.3.0" resolved "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz" @@ -4148,10 +4152,13 @@ find-up@6.3.0: locate-path "^7.1.0" path-exists "^5.0.0" -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" flatted@^3.2.7: version "3.2.7" @@ -4220,6 +4227,16 @@ fromentries@^1.2.0: resolved "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz" integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== +fs-extra@9.1.0, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^10.0.0: version "10.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" @@ -4247,16 +4264,6 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.1.0, fs-extra@9.1.0: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" @@ -4281,6 +4288,11 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + fsu@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/fsu/-/fsu-1.1.1.tgz" @@ -4398,6 +4410,17 @@ glob-to-regexp@^0.4.1: resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@8.0.3, glob@^8.0.1: + version "8.0.3" + resolved "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + glob@^10.2.2: version "10.3.1" resolved "https://registry.npmjs.org/glob/-/glob-10.3.1.tgz" @@ -4409,43 +4432,7 @@ glob@^10.2.2: minipass "^5.0.0 || ^6.0.2" path-scurry "^1.10.0" -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.4: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.6: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.7: +glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -4457,29 +4444,6 @@ glob@^7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1, glob@8.0.3: - version "8.0.3" - resolved "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -glob@7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - global-dirs@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" @@ -4499,17 +4463,6 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globby@^13.1.1: - version "13.2.1" - resolved "https://registry.npmjs.org/globby/-/globby-13.2.1.tgz" - integrity sha512-DPCBxctI7dN4EeIqjW2KGqgdcUMbrhJ9AzON+PlxCtvppWhubTLD4+a0GFxiym14ZvacUydTPjLPc2DlKz7EIg== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.2.11" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^4.0.0" - globby@11.0.4: version "11.0.4" resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz" @@ -4522,6 +4475,17 @@ globby@11.0.4: merge2 "^1.3.0" slash "^3.0.0" +globby@^13.1.1: + version "13.2.1" + resolved "https://registry.npmjs.org/globby/-/globby-13.2.1.tgz" + integrity sha512-DPCBxctI7dN4EeIqjW2KGqgdcUMbrhJ9AzON+PlxCtvppWhubTLD4+a0GFxiym14ZvacUydTPjLPc2DlKz7EIg== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.2.11" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^4.0.0" + gopd@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" @@ -4612,7 +4576,7 @@ hdr-histogram-percentiles-obj@^3.0.0: resolved "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz" integrity sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw== -he@^1.2.0, he@1.2.0: +he@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -4716,16 +4680,6 @@ http-deceiver@^1.2.7: resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -4737,6 +4691,16 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-parser-js@>=0.5.1: version "0.5.8" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" @@ -4780,7 +4744,7 @@ http-signature@~1.3.6: jsprim "^2.0.2" sshpk "^1.14.1" -https-proxy-agent@^5.0.0, https-proxy-agent@5.0.1: +https-proxy-agent@5.0.1, https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -4805,21 +4769,14 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -iconv-lite@^0.4.24, iconv-lite@0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -iconv-lite@^0.6.3: +iconv-lite@^0.6.2, iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -4889,7 +4846,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -4944,16 +4901,16 @@ ip@^2.0.0: resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== -ipaddr.js@^2.0.1: - version "2.1.0" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" - integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +ipaddr.js@^2.0.1: + version "2.1.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" + integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" @@ -5083,11 +5040,6 @@ is-path-inside@^3.0.2: resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - is-plain-obj@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" @@ -5209,16 +5161,16 @@ isstream@~0.1.2: resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== - istanbul-lib-coverage@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + istanbul-lib-hook@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz" @@ -5236,7 +5188,7 @@ istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: istanbul-lib-coverage "^3.0.0" semver "^6.3.0" -istanbul-lib-instrument@^5.0.4: +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: version "5.2.1" resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== @@ -5247,21 +5199,10 @@ istanbul-lib-instrument@^5.0.4: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" -istanbul-lib-instrument@^5.1.0: - version "5.2.1" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-processinfo@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz" - integrity sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg== +istanbul-lib-processinfo@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz" + integrity sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg== dependencies: archy "^1.0.0" cross-spawn "^7.0.3" @@ -5305,7 +5246,7 @@ jackspeak@^2.0.3: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -jasmine-core@^4.0.0, jasmine-core@^4.1.0, jasmine-core@~4.3.0: +jasmine-core@^4.1.0, jasmine-core@~4.3.0: version "4.3.0" resolved "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.3.0.tgz" integrity sha512-qybtBUesniQdW6n+QIHMng2vDOHscIC/dEXjW+JzO9+LoAZMb03RCUC5xFOv/btSKPm1xL42fn+RjlU4oB42Lg== @@ -5324,6 +5265,13 @@ jest-worker@^27.4.5: resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" @@ -5332,13 +5280,6 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - jsbn@~0.1.0: version "0.1.1" resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" @@ -5379,14 +5320,7 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -json5@^1.0.2: +json5@^1.0.1, json5@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== @@ -5398,7 +5332,7 @@ json5@^2.1.2, json5@^2.2.1: resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonc-parser@^3.0.0, jsonc-parser@3.1.0: +jsonc-parser@3.1.0, jsonc-parser@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz" integrity sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg== @@ -5458,7 +5392,7 @@ karma-jasmine-html-reporter@~2.0.0: resolved "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz" integrity sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA== -karma-jasmine@^5.0.0, karma-jasmine@~5.1.0: +karma-jasmine@~5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz" integrity sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ== @@ -5472,7 +5406,7 @@ karma-source-map-support@1.4.0: dependencies: source-map-support "^0.5.5" -karma@^6.0.0, karma@^6.3.0, karma@~6.4.0: +karma@~6.4.0: version "6.4.2" resolved "https://registry.npmjs.org/karma/-/karma-6.4.2.tgz" integrity sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ== @@ -5532,7 +5466,7 @@ less-loader@11.0.0: dependencies: klona "^2.0.4" -"less@^3.5.0 || ^4.0.0", less@4.1.3: +less@4.1.3: version "4.1.3" resolved "https://registry.npmjs.org/less/-/less-4.1.3.tgz" integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== @@ -5580,6 +5514,11 @@ loader-runner@^4.2.0: resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== +loader-utils@3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + loader-utils@^1.2.3: version "1.4.2" resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" @@ -5598,11 +5537,6 @@ loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" -loader-utils@3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz" - integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== - local-pkg@0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.1.tgz" @@ -5615,13 +5549,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - locate-path@^7.1.0: version "7.2.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz" @@ -5669,7 +5596,7 @@ lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.0.0, log-symbols@^4.1.0, log-symbols@4.1.0: +log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -5726,17 +5653,7 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.4.4: - version "7.18.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" - integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== - -lru-cache@^7.5.1: - version "7.18.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" - integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== - -lru-cache@^7.7.1: +lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: version "7.18.3" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== @@ -5746,7 +5663,7 @@ lru-cache@^7.7.1: resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz" integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== -magic-string@^0.26.0, magic-string@0.26.2: +magic-string@0.26.2, magic-string@^0.26.0: version "0.26.2" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz" integrity sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A== @@ -5872,7 +5789,7 @@ micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" -"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -5884,7 +5801,7 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, dependencies: mime-db "1.52.0" -mime@^1.4.1: +mime@1.6.0, mime@^1.4.1: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -5894,11 +5811,6 @@ mime@^2.5.2: resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" @@ -5916,6 +5828,13 @@ minimalistic-assert@^1.0.0: resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== +minimatch@5.1.0, minimatch@^5.0.1: + version "5.1.0" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + minimatch@^3.0.4, minimatch@^3.1.1: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" @@ -5923,13 +5842,6 @@ minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1, minimatch@5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== - dependencies: - brace-expansion "^2.0.1" - minimatch@^9.0.1: version "9.0.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz" @@ -5937,13 +5849,6 @@ minimatch@^9.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz" - integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== - dependencies: - brace-expansion "^2.0.1" - minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" @@ -6050,33 +5955,6 @@ mocha-junit-reporter@^2.2.0: strip-ansi "^6.0.1" xml "^1.0.1" -mocha@>=2.2.5, mocha@>=7: - version "10.2.0" - resolved "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz" - integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== - dependencies: - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.4" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "5.0.1" - ms "2.1.3" - nanoid "3.3.3" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - workerpool "6.2.1" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" - mochawesome-merge@^4.3.0: version "4.3.0" resolved "https://registry.npmjs.org/mochawesome-merge/-/mochawesome-merge-4.3.0.tgz" @@ -6120,16 +5998,16 @@ mochawesome@^7.1.3: strip-ansi "^6.0.1" uuid "^8.3.2" -ms@^2.0.0, ms@^2.1.1, ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +ms@2.1.2, ms@^2.0.0, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + ms@2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" @@ -6153,11 +6031,6 @@ nanoid@^3.3.4: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== -nanoid@3.3.3: - version "3.3.3" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz" - integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== - needle@^3.1.0: version "3.2.0" resolved "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz" @@ -6167,7 +6040,7 @@ needle@^3.1.0: iconv-lite "^0.6.3" sax "^1.2.4" -negotiator@^0.6.3, negotiator@0.6.3: +negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== @@ -6295,7 +6168,7 @@ npm-normalize-package-bin@^2.0.0: resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz" integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== -npm-package-arg@^9.0.0, npm-package-arg@^9.0.1, npm-package-arg@9.1.0: +npm-package-arg@9.1.0, npm-package-arg@^9.0.0, npm-package-arg@^9.0.1: version "9.1.0" resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz" integrity sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw== @@ -6315,7 +6188,7 @@ npm-packlist@^5.1.0: npm-bundled "^2.0.0" npm-normalize-package-bin "^2.0.0" -npm-pick-manifest@^7.0.0, npm-pick-manifest@7.0.1: +npm-pick-manifest@7.0.1, npm-pick-manifest@^7.0.0: version "7.0.1" resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz" integrity sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg== @@ -6362,7 +6235,7 @@ nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -nyc@^15.1.0, nyc@>=15, nyc@15.1.0: +nyc@15.1.0, nyc@^15.1.0: version "15.1.0" resolved "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz" integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== @@ -6436,13 +6309,6 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - on-finished@2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" @@ -6450,6 +6316,13 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + on-headers@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" @@ -6469,7 +6342,7 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@^8.0.9, open@8.4.0: +open@8.4.0, open@^8.0.9: version "8.4.0" resolved "https://registry.npmjs.org/open/-/open-8.4.0.tgz" integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== @@ -6483,7 +6356,7 @@ opener@^1.5.2: resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== -ora@^5.4.1, ora@5.4.1: +ora@5.4.1, ora@^5.4.1: version "5.4.1" resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== @@ -6515,13 +6388,6 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - p-limit@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" @@ -6536,13 +6402,6 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - p-locate@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz" @@ -7077,7 +6936,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -"postcss@^7.0.0 || ^8.0.1", postcss@^8, postcss@^8.0.0, postcss@^8.0.3, postcss@^8.1.0, postcss@^8.2, postcss@^8.2.14, postcss@^8.3, postcss@^8.3.7, postcss@^8.4, postcss@^8.4.6, postcss@^8.4.7, postcss@8.4.16: +postcss@8.4.16, postcss@^8.2.14, postcss@^8.3.7, postcss@^8.4.7: version "8.4.16" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz" integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== @@ -7187,13 +7046,6 @@ qjobs@^1.2.0: resolved "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz" integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== -qs@~6.10.3: - version "6.10.5" - resolved "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz" - integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== - dependencies: - side-channel "^1.0.4" - qs@6.11.0: version "6.11.0" resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" @@ -7201,6 +7053,13 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +qs@~6.10.3: + version "6.10.5" + resolved "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz" + integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== + dependencies: + side-channel "^1.0.4" + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" @@ -7314,7 +7173,7 @@ regenerate@^1.4.2: resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.4, regenerator-runtime@0.13.9: +regenerator-runtime@0.13.9, regenerator-runtime@^0.13.4: version "0.13.9" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== @@ -7441,7 +7300,7 @@ resolve-url-loader@5.0.0: postcss "^8.2.14" source-map "0.6.1" -resolve@^1.1.7, resolve@^1.14.2, resolve@1.22.1: +resolve@1.22.1, resolve@^1.1.7, resolve@^1.14.2: version "1.22.1" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -7497,26 +7356,19 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -"rxjs@^6.5.3 || ^7.4.0", rxjs@^7.5.1, rxjs@^7.5.5, rxjs@~7.5.0: - version "7.5.7" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz" - integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== - dependencies: - tslib "^2.1.0" - -rxjs@~6.6.0: +rxjs@6.6.7, rxjs@~6.6.0: version "6.6.7" resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" -rxjs@6.6.7: - version "6.6.7" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== +rxjs@^7.5.1, rxjs@^7.5.5, rxjs@~7.5.0: + version "7.5.7" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz" + integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== dependencies: - tslib "^1.9.0" + tslib "^2.1.0" safe-array-concat@^1.0.0: version "1.0.0" @@ -7528,20 +7380,15 @@ safe-array-concat@^1.0.0: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex-test@^1.0.0: version "1.0.0" @@ -7552,7 +7399,7 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -safer-buffer@^2.0.2, safer-buffer@^2.1.0, "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -7565,7 +7412,7 @@ sass-loader@13.0.2: klona "^2.0.4" neo-async "^2.6.2" -sass@^1.3.0, sass@1.54.4: +sass@1.54.4: version "1.54.4" resolved "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz" integrity sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA== @@ -7588,25 +7435,7 @@ schema-utils@^2.6.5, schema-utils@^2.7.0: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.1.0: - version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^3.1.1: - version "3.3.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^3.2.0: +schema-utils@^3.1.0, schema-utils@^3.1.1, schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -7637,38 +7466,23 @@ selfsigned@^2.0.1, selfsigned@^2.1.1: dependencies: node-forge "^1" +semver@7.5.3, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: + version "7.5.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz" + integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== + dependencies: + lru-cache "^6.0.0" + semver@^5.6.0: version "5.7.1" resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0: +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^6.1.1: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^6.1.2: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@7.5.3: - version "7.5.3" - resolved "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz" - integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== - dependencies: - lru-cache "^6.0.0" - send@0.18.0: version "0.18.0" resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" @@ -7695,13 +7509,6 @@ serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: dependencies: randombytes "^2.1.0" -serialize-javascript@6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - serve-index@^1.9.1: version "1.9.1" resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" @@ -7870,7 +7677,7 @@ socks@^2.6.2: ip "^2.0.0" smart-buffer "^4.2.0" -source-map-js@^1.0.2, "source-map-js@>=0.6.2 <2.0.0": +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== @@ -7884,7 +7691,7 @@ source-map-loader@4.0.0: iconv-lite "^0.6.3" source-map-js "^1.0.2" -source-map-support@^0.5.5, source-map-support@~0.5.12, source-map-support@~0.5.20, source-map-support@0.5.21: +source-map-support@0.5.21, source-map-support@^0.5.5, source-map-support@~0.5.12, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -7892,36 +7699,16 @@ source-map-support@^0.5.5, source-map-support@~0.5.12, source-map-support@~0.5.2 buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.6.0: +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3, source-map@0.7.4: +source-map@0.7.4, source-map@^0.7.3: version "0.7.4" resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== -source-map@~0.6.0: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" @@ -8029,16 +7816,16 @@ ssri@^9.0.0: dependencies: minipass "^3.1.1" -"statuses@>= 1.4.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - statuses@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +"statuses@>= 1.4.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + streamroller@^3.1.5: version "3.1.5" resolved "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz" @@ -8048,30 +7835,7 @@ streamroller@^3.1.5: debug "^4.3.4" fs-extra "^8.1.0" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -8116,7 +7880,21 @@ string.prototype.trimstart@^1.0.6: define-properties "^1.1.4" es-abstract "^1.20.4" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -8130,13 +7908,6 @@ strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" @@ -8159,11 +7930,6 @@ strip-final-newline@^2.0.0: resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - stylus-loader@7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.0.0.tgz" @@ -8173,7 +7939,7 @@ stylus-loader@7.0.0: klona "^2.0.5" normalize-path "^3.0.0" -stylus@>=0.52.4, stylus@0.59.0: +stylus@0.59.0: version "0.59.0" resolved "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz" integrity sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg== @@ -8198,21 +7964,7 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.1.1: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-color@8.1.1: +supports-color@^8.0.0, supports-color@^8.1.1: version "8.1.1" resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -8234,17 +7986,7 @@ tapable@^1.1.3: resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tapable@^2.0.0: - version "2.2.1" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tapable@^2.1.1: - version "2.2.1" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tapable@^2.2.0: +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== @@ -8284,16 +8026,7 @@ terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.7: serialize-javascript "^6.0.1" terser "^5.16.8" -terser@^4.6.3: - version "4.8.1" - resolved "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz" - integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -terser@^5.10.0, terser@5.14.2: +terser@5.14.2, terser@^5.10.0: version "5.14.2" resolved "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz" integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== @@ -8303,6 +8036,15 @@ terser@^5.10.0, terser@5.14.2: commander "^2.20.0" source-map-support "~0.5.20" +terser@^4.6.3: + version "4.8.1" + resolved "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz" + integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + terser@^5.16.8: version "5.18.2" resolved "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz" @@ -8425,6 +8167,11 @@ tsconfig-paths@^3.9.0: minimist "^1.2.6" strip-bom "^3.0.0" +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tslib@^1.9.0: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" @@ -8435,11 +8182,6 @@ tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1: resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz" integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== -tslib@2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" @@ -8491,7 +8233,7 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@*, typescript@>=2.7, "typescript@>=4.6.2 <4.9", typescript@~4.7.2: +typescript@~4.7.2: version "4.7.4" resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== @@ -8572,7 +8314,7 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unpipe@~1.0.0, unpipe@1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -8620,7 +8362,7 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^8.3.2, uuid@8.3.2: +uuid@8.3.2, uuid@^8.3.2: version "8.3.2" resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -8691,7 +8433,7 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -webpack-dev-middleware@^5.3.1, webpack-dev-middleware@5.3.3: +webpack-dev-middleware@5.3.3, webpack-dev-middleware@^5.3.1: version "5.3.3" resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== @@ -8702,10 +8444,10 @@ webpack-dev-middleware@^5.3.1, webpack-dev-middleware@5.3.3: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.0.0, webpack-dev-server@^4.15.0, webpack-dev-server@^4.7.4: - version "4.15.1" - resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz" - integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== +webpack-dev-server@4.11.0: + version "4.11.0" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz" + integrity sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" @@ -8713,7 +8455,7 @@ webpack-dev-server@^4.0.0, webpack-dev-server@^4.15.0, webpack-dev-server@^4.7.4 "@types/serve-index" "^1.9.1" "@types/serve-static" "^1.13.10" "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.5" + "@types/ws" "^8.5.1" ansi-html-community "^0.0.8" bonjour-service "^1.0.11" chokidar "^3.5.3" @@ -8726,22 +8468,21 @@ webpack-dev-server@^4.0.0, webpack-dev-server@^4.15.0, webpack-dev-server@^4.7.4 html-entities "^2.3.2" http-proxy-middleware "^2.0.3" ipaddr.js "^2.0.1" - launch-editor "^2.6.0" open "^8.0.9" p-retry "^4.5.0" rimraf "^3.0.2" schema-utils "^4.0.0" - selfsigned "^2.1.1" + selfsigned "^2.0.1" serve-index "^1.9.1" sockjs "^0.3.24" spdy "^4.0.2" webpack-dev-middleware "^5.3.1" - ws "^8.13.0" + ws "^8.4.2" -webpack-dev-server@4.11.0: - version "4.11.0" - resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz" - integrity sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw== +webpack-dev-server@^4.15.0, webpack-dev-server@^4.7.4: + version "4.15.1" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz" + integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" @@ -8749,7 +8490,7 @@ webpack-dev-server@4.11.0: "@types/serve-index" "^1.9.1" "@types/serve-static" "^1.13.10" "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.1" + "@types/ws" "^8.5.5" ansi-html-community "^0.0.8" bonjour-service "^1.0.11" chokidar "^3.5.3" @@ -8762,24 +8503,17 @@ webpack-dev-server@4.11.0: html-entities "^2.3.2" http-proxy-middleware "^2.0.3" ipaddr.js "^2.0.1" + launch-editor "^2.6.0" open "^8.0.9" p-retry "^4.5.0" rimraf "^3.0.2" schema-utils "^4.0.0" - selfsigned "^2.0.1" + selfsigned "^2.1.1" serve-index "^1.9.1" sockjs "^0.3.24" spdy "^4.0.2" webpack-dev-middleware "^5.3.1" - ws "^8.4.2" - -webpack-merge@^5.4.0, webpack-merge@^5.7.3: - version "5.9.0" - resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz" - integrity sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg== - dependencies: - clone-deep "^4.0.1" - wildcard "^2.0.0" + ws "^8.13.0" webpack-merge@5.8.0: version "5.8.0" @@ -8789,6 +8523,14 @@ webpack-merge@5.8.0: clone-deep "^4.0.1" wildcard "^2.0.0" +webpack-merge@^5.4.0, webpack-merge@^5.7.3: + version "5.9.0" + resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz" + integrity sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + webpack-sources@^3.0.0, webpack-sources@^3.2.3: version "3.2.3" resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" @@ -8801,22 +8543,22 @@ webpack-subresource-integrity@5.1.0: dependencies: typed-assert "^1.0.8" -"webpack@^1 || ^2 || ^3 || ^4 || ^5", "webpack@^4 || ^5", "webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.12.0, webpack@^5.20.0, webpack@^5.30.0, webpack@^5.54.0, webpack@^5.72.1, webpack@^5.84.1, webpack@>=2: - version "5.88.1" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz" - integrity sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ== +webpack@5.76.1: + version "5.76.1" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz" + integrity sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ== dependencies: "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" + "@types/estree" "^0.0.51" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" acorn "^8.7.1" - acorn-import-assertions "^1.9.0" + acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.15.0" - es-module-lexer "^1.2.1" + enhanced-resolve "^5.10.0" + es-module-lexer "^0.9.0" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" @@ -8825,28 +8567,28 @@ webpack-subresource-integrity@5.1.0: loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^3.2.0" + schema-utils "^3.1.0" tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" + terser-webpack-plugin "^5.1.3" watchpack "^2.4.0" webpack-sources "^3.2.3" -webpack@5.76.1: - version "5.76.1" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz" - integrity sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ== +webpack@^5.84.1: + version "5.88.1" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz" + integrity sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ== dependencies: "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" + "@types/estree" "^1.0.0" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" acorn "^8.7.1" - acorn-import-assertions "^1.7.6" + acorn-import-assertions "^1.9.0" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.10.0" - es-module-lexer "^0.9.0" + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" @@ -8855,13 +8597,13 @@ webpack@5.76.1: loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^3.1.0" + schema-utils "^3.2.0" tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" + terser-webpack-plugin "^5.3.7" watchpack "^2.4.0" webpack-sources "^3.2.3" -websocket-driver@^0.7.4, websocket-driver@>=0.5.1: +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -8929,12 +8671,7 @@ wildcard@^2.0.0: resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== -workerpool@6.2.1: - version "6.2.1" - resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz" - integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -8952,15 +8689,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" @@ -9033,7 +8761,7 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.2, yargs-parser@20.2.4: +yargs-parser@^20.2.2: version "20.2.4" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== @@ -9043,34 +8771,20 @@ yargs-parser@^21.0.0: resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-unparser@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - -yargs@^15.0.2: - version "15.4.1" - resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== +yargs@17.5.1, yargs@^17.2.1: + version "17.5.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" -yargs@^15.3.1: +yargs@^15.0.2, yargs@^15.3.1: version "15.4.1" resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== @@ -9100,32 +8814,6 @@ yargs@^16.1.1: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.2.1, yargs@17.5.1: - version "17.5.1" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz" - integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.0.0" - -yargs@16.2.0: - version "16.2.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - yauzl@^2.10.0: version "2.10.0" resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" @@ -9139,17 +8827,12 @@ yn@3.1.1: resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - yocto-queue@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz" integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== -zone.js@~0.11.4, "zone.js@~0.11.4 || ~0.12.0": +zone.js@~0.11.4: version "0.11.8" resolved "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz" integrity sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA== diff --git a/examples/lit/pokemon-catalog/cypress.config.ts b/examples/lit/pokemon-catalog/cypress.config.ts index 82d9e28c..5cf57278 100644 --- a/examples/lit/pokemon-catalog/cypress.config.ts +++ b/examples/lit/pokemon-catalog/cypress.config.ts @@ -2,16 +2,15 @@ import { defineConfig } from "cypress"; export default defineConfig({ reporter: "mochawesome", - reporterOptions: - { - "reportDir": "cypress/results/json", - "overwrite": false, - "html": false, - "json": true, - suiteTitleSeparatedBy: " > ", - testCaseSwitchClassnameAndName: false, - rootSuiteTitle: "Lit Tests", - toConsole: true, + reporterOptions: { + reportDir: "cypress/results/json", + overwrite: false, + html: false, + json: true, + suiteTitleSeparatedBy: " > ", + testCaseSwitchClassnameAndName: false, + rootSuiteTitle: "Lit Tests", + toConsole: true }, includeShadowDom: true, diff --git a/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index fe360086..7df6f8f3 100644 --- a/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -74,4 +74,19 @@ describe("Lit Pokemon e2e", () => { }); }); }); + + describe("when changing from pokemon without gif to pokemon with gif", () => { + beforeEach(() => {}); + it("should render pokemon gif", async () => { + when.pokemon.pokemonGo.typePokemonIndex("888"); + when.wait(400); + when.pokemon.pokemonGo.clickGo(); + when.pokemon.pokemonGo.typePokemonIndex("33"); + when.wait(400); + + when.pokemon.pokemonGo.clickGo(); + when.wait(400); + expect(await get.pokemon.image.pictureSrc()).to.include("/33.gif"); + }); + }); }); diff --git a/examples/lit/pokemon-catalog/package.json b/examples/lit/pokemon-catalog/package.json index a3178694..78e7363b 100644 --- a/examples/lit/pokemon-catalog/package.json +++ b/examples/lit/pokemon-catalog/package.json @@ -26,12 +26,13 @@ "@babel/core": "7.22.5", "@babel/preset-env": "7.22.5", "@shellygo/cypress-test-utils": "^1.0.8", + "@types/node": "^20.4.5", "babel-loader": "9.1.2", "builder-pattern": "^2.2.0", "chance": "^1.1.11", "clean-webpack-plugin": "4.0.0", "css-loader": "6.8.1", - "cypress": "^12.14.0", + "cypress": "12.17.2", "esbuild-loader": "^3.0.1", "html-webpack-plugin": "5.5.3", "lit-scss-loader": "^2.0.1", diff --git a/examples/lit/pokemon-catalog/tsconfig.json b/examples/lit/pokemon-catalog/tsconfig.json index a663e654..3fcd3e50 100644 --- a/examples/lit/pokemon-catalog/tsconfig.json +++ b/examples/lit/pokemon-catalog/tsconfig.json @@ -27,7 +27,7 @@ "importHelpers": true, "isolatedModules": true, "jsx": "react", - "types": ["node"], + "types": ["node", "cypress"], "plugins": [ { "name": "ts-lit-plugin", diff --git a/examples/lit/pokemon-catalog/yarn.lock b/examples/lit/pokemon-catalog/yarn.lock index 99a0667a..042a716c 100644 --- a/examples/lit/pokemon-catalog/yarn.lock +++ b/examples/lit/pokemon-catalog/yarn.lock @@ -962,7 +962,7 @@ resolved "https://registry.yarnpkg.com/@cypress/mount-utils/-/mount-utils-4.0.0.tgz#647c24158caddc656741648291c77dfa1b6b1621" integrity sha512-4w8WZpOALz5+vhJmPfh2HkT4NMsRP2DgVqSXxXu46GR5yUGfqJ0+WgUrmVuujtKKY6n1mDiO1L4AfZ+4bsEYGQ== -"@cypress/request@^2.88.10": +"@cypress/request@^2.88.10", "@cypress/request@^2.88.11": version "2.88.11" resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.11.tgz#5a4c7399bc2d7e7ed56e92ce5acb620c8b187047" integrity sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w== @@ -1391,6 +1391,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.53.tgz#42855629b8773535ab868238718745bf56c56219" integrity sha512-soGmOpVBUq+gaBMwom1M+krC/NNbWlosh4AtGA03SyWNDiqSKtwp7OulO1M6+mg8YkHMvJ/y0AkCeO8d1hNb7A== +"@types/node@^20.4.5": + version "20.4.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.5.tgz#9dc0a5cb1ccce4f7a731660935ab70b9c00a5d69" + integrity sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg== + "@types/qs@*": version "6.9.7" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" @@ -2486,7 +2491,55 @@ cypress-wait-until@^1.7.2: resolved "https://registry.yarnpkg.com/cypress-wait-until/-/cypress-wait-until-1.7.2.tgz#7f534dd5a11c89b65359e7a0210f20d3dfc22107" integrity sha512-uZ+M8/MqRcpf+FII/UZrU7g1qYZ4aVlHcgyVopnladyoBrpoaMJ4PKZDrdOJ05H5RHbr7s9Tid635X3E+ZLU/Q== -cypress@^12.14.0, cypress@^12.5.1: +cypress@12.17.2: + version "12.17.2" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-12.17.2.tgz#040ac55de1e811f6e037d231a2869d5ab8c29c85" + integrity sha512-hxWAaWbqQBzzMuadSGSuQg5PDvIGOovm6xm0hIfpCVcORsCAj/gF2p0EvfnJ4f+jK2PCiDgP6D2eeE9/FK4Mjg== + dependencies: + "@cypress/request" "^2.88.11" + "@cypress/xvfb" "^1.2.4" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "8.1.1" + "@types/sizzle" "^2.3.2" + arch "^2.2.0" + blob-util "^2.0.2" + bluebird "^3.7.2" + buffer "^5.6.0" + cachedir "^2.3.0" + chalk "^4.1.0" + check-more-types "^2.24.0" + cli-cursor "^3.1.0" + cli-table3 "~0.6.1" + commander "^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" + 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.5.1: version "12.16.0" resolved "https://registry.yarnpkg.com/cypress/-/cypress-12.16.0.tgz#d0dcd0725a96497f4c60cf54742242259847924c" integrity sha512-mwv1YNe48hm0LVaPgofEhGCtLwNIQEjmj2dJXnAkY1b4n/NE9OtgPph4TyS+tOtYp5CKtRmDvBzWseUXQTjbTg== @@ -5259,6 +5312,13 @@ semver@^7.3.2, semver@^7.3.8: dependencies: lru-cache "^6.0.0" +semver@^7.5.3: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" diff --git a/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index e6507548..6c4fa0e9 100644 --- a/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -74,4 +74,18 @@ describe("React Pokemon e2e", () => { }); }); }); + + describe("when changing from pokemon without gif to pokemon with gif", () => { + beforeEach(() => {}); + it("should render pokemon gif", async () => { + when.pokemon.pokemonGo.typePokemonIndex("888"); + when.wait(400); + when.pokemon.pokemonGo.clickGo(); + when.pokemon.pokemonGo.typePokemonIndex("33"); + when.wait(400); + + when.pokemon.pokemonGo.clickGo(); + expect(await get.pokemon.image.pictureSrc()).to.include("/33.gif"); + }); + }); }); diff --git a/examples/react/pokemon-catalog/package.json b/examples/react/pokemon-catalog/package.json index 63998a6b..86a2d820 100644 --- a/examples/react/pokemon-catalog/package.json +++ b/examples/react/pokemon-catalog/package.json @@ -4,7 +4,7 @@ "private": true, "homepage": ".", "dependencies": { - "@types/node": "^16.18.34", + "@types/node": "^20.4.5", "@types/react": "^18.2.7", "@types/react-dom": "^18.2.4", "react": "^18.2.0", diff --git a/examples/react/pokemon-catalog/src/components/pokemon-catalog/pokemon-catalog.component.driver.tsx b/examples/react/pokemon-catalog/src/components/pokemon-catalog/pokemon-catalog.component.driver.tsx index 13020c4a..62fda377 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-catalog/pokemon-catalog.component.driver.tsx +++ b/examples/react/pokemon-catalog/src/components/pokemon-catalog/pokemon-catalog.component.driver.tsx @@ -69,10 +69,6 @@ export class PokemonCatalogComponentDriver { this.helper.when.waitUntil(() => this.helper.get.elementByTestId("prev").should("be.enabled") ), - waitForGoToBeEnabled: () => - this.helper.when.waitUntil(() => - this.helper.get.elementByTestId("go").should("be.enabled") - ), clickNext: () => this.helper.when.click("next"), clickPrev: () => this.helper.when.click("prev") }; @@ -85,6 +81,7 @@ export class PokemonCatalogComponentDriver { countText: () => this.helper.get.elementsText("count"), nameText: () => this.helper.get.elementsText("pokemon-name"), isNextButtonDisabled: () => this.helper.get.isElementDisabled("next"), + isGoButtonDisabled: () => this.helper.get.isElementDisabled("go"), isPrevButtonDisabled: () => this.helper.get.isElementDisabled("prev"), getPokemonSpy: () => this.getPokemonStub, pokemonServiceMock: () => this.props.service diff --git a/examples/react/pokemon-catalog/yarn.lock b/examples/react/pokemon-catalog/yarn.lock index 8e992e0a..45896ce7 100644 --- a/examples/react/pokemon-catalog/yarn.lock +++ b/examples/react/pokemon-catalog/yarn.lock @@ -1947,7 +1947,7 @@ resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== -"@types/node@*", "@types/node@^16.18.34": +"@types/node@*": version "16.18.37" resolved "https://registry.npmjs.org/@types/node/-/node-16.18.37.tgz" integrity sha512-ql+4dw4PlPFBP495k8JzUX/oMNRI2Ei4PrMHgj8oT4VhGlYUzF4EYr0qk2fW+XBVGIrq8Zzk13m4cvyXZuv4pA== @@ -1957,6 +1957,11 @@ resolved "https://registry.npmjs.org/@types/node/-/node-14.18.52.tgz" integrity sha512-DGhiXKOHSFVVm+PJD+9Y0ObxXLeG6qwc0HoOn+ooQKeNNu+T2mEJCM5UBDUREKAggl9MHYjb5E71PAmx6MbzIg== +"@types/node@^20.4.5": + version "20.4.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.5.tgz#9dc0a5cb1ccce4f7a731660935ab70b9c00a5d69" + integrity sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg== + "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" From 13e643cc389344b46705e7f6a2d9fea4e1b4ebcf Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Wed, 26 Jul 2023 19:26:47 +0300 Subject: [PATCH 08/32] fix failing tests --- .../pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts | 8 +++----- .../pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts | 7 ++----- .../pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts | 6 ++---- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index 999b902d..5b2a772a 100644 --- a/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -77,16 +77,14 @@ describe("Angular Pokemon e2e", () => { }); describe("when changing from pokemon without gif to pokemon with gif", () => { - beforeEach(() => {}); it("should render pokemon gif", async () => { when.pokemon.pokemonGo.typePokemonIndex("888"); - when.wait(400); when.pokemon.pokemonGo.clickGo(); + when.waitUntil(() => get.elementByText("zacian")); when.pokemon.pokemonGo.typePokemonIndex("33"); - when.wait(400); - when.pokemon.pokemonGo.clickGo(); - when.wait(400); + when.waitUntil(() => get.elementByText("nidorino")); + when.wait(500); expect(await get.pokemon.image.pictureSrc()).to.include("/33.gif"); }); }); diff --git a/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index 7df6f8f3..c105953d 100644 --- a/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -76,16 +76,13 @@ describe("Lit Pokemon e2e", () => { }); describe("when changing from pokemon without gif to pokemon with gif", () => { - beforeEach(() => {}); it("should render pokemon gif", async () => { when.pokemon.pokemonGo.typePokemonIndex("888"); - when.wait(400); when.pokemon.pokemonGo.clickGo(); + when.waitUntil(() => get.elementByText("zacian")); when.pokemon.pokemonGo.typePokemonIndex("33"); - when.wait(400); - when.pokemon.pokemonGo.clickGo(); - when.wait(400); + when.waitUntil(() => get.elementByText("nidorino")); expect(await get.pokemon.image.pictureSrc()).to.include("/33.gif"); }); }); diff --git a/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index 6c4fa0e9..d26f8de7 100644 --- a/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -76,15 +76,13 @@ describe("React Pokemon e2e", () => { }); describe("when changing from pokemon without gif to pokemon with gif", () => { - beforeEach(() => {}); it("should render pokemon gif", async () => { when.pokemon.pokemonGo.typePokemonIndex("888"); - when.wait(400); when.pokemon.pokemonGo.clickGo(); + when.waitUntil(() => get.elementByText("zacian")); when.pokemon.pokemonGo.typePokemonIndex("33"); - when.wait(400); - when.pokemon.pokemonGo.clickGo(); + when.waitUntil(() => get.elementByText("nidorino")); expect(await get.pokemon.image.pictureSrc()).to.include("/33.gif"); }); }); From 4c10e78e8c608aab38422629a2ad9a39cc4ace3e Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Wed, 26 Jul 2023 19:37:07 +0300 Subject: [PATCH 09/32] fix failing tests --- .../pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 308ba65e..9bced662 100644 --- a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -33,7 +33,6 @@ describe("React Pokemon Page integration Tests", () => { it("should fetch pokemon by index", async () => { when.pokemon.pokemonGo.typePokemonIndex("78"); - when.pokemon.waitForGoToBeEnabled(); when.pokemon.pokemonGo.clickGo(); expect(await get.pokemon.fetchPokemonOffset()).to.eq("77"); }); From e33d64ecea9cac48897f3dcb0bcd041f9d410acb Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Wed, 2 Aug 2023 06:51:21 +0300 Subject: [PATCH 10/32] max chars -> 120 --- .../pokemon-go/pokemon-go.component.driver.ts | 11 +++-------- .../pokemon-go/pokemon-go.component.driver.ts | 13 +++---------- .../src/components/pokemon-go/pokemon-go.driver.tsx | 3 +-- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts index 008de33a..0ed82031 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts @@ -6,8 +6,7 @@ import { PokemonGoComponent } from "./pokemon-go.component"; export class PokemonGoComponentDriver { private helper = new CypressHelper(); - private angularComponentHelper = - new CypressAngularComponentHelper(); + private angularComponentHelper = new CypressAngularComponentHelper(); private componentProperties: Partial = {}; @@ -18,17 +17,13 @@ export class PokemonGoComponentDriver { given = {}; when = { - render: ( - type: Type, - config: MountConfig - ) => { + render: (type: Type, config: MountConfig) => { this.angularComponentHelper.when.mount(type, config, { ...this.componentProperties }); this.helper.when.wait(200); }, - typePokemonIndex: (value: string) => - this.helper.when.type("pokemon-index", value), + typePokemonIndex: (value: string) => this.helper.when.type("pokemon-index", value), clickGo: () => this.helper.when.click("go") }; diff --git a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts index 44d4bcdb..16c7453f 100644 --- a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts +++ b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts @@ -15,23 +15,16 @@ export class PokemonGoComponentDriver { given = { onSubmitSpy: () => { - this.props.onSubmit = this.helper.given.spyOnObject( - this.props, - "onSubmit" - ); + this.props.onSubmit = this.helper.given.spyOnObject(this.props, "onSubmit"); } }; when = { render: (element: PokemonGoComponent) => { this.litComponentHelper.when.unmount(element); - this.litComponentHelper.when.mount( - element, - html`` - ); + this.litComponentHelper.when.mount(element, html``); }, - typePokemonIndex: (input: string) => - this.helper.when.type("pokemon-index", input), + typePokemonIndex: (input: string) => this.helper.when.type("pokemon-index", input), clickGo: () => this.helper.when.click("go") }; diff --git a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx index d6471624..469bc1dd 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx +++ b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx @@ -28,8 +28,7 @@ export class PokemonGoComponentDriver { const mergedProps: Attributes & IProps = { ...this.props, ...props }; this.reactComponentHelper.when.mount(type, mergedProps, children); }, - typePokemonIndex: (input: string) => - this.helper.when.type("pokemon-index", input), + typePokemonIndex: (input: string) => this.helper.when.type("pokemon-index", input), clickGo: () => this.helper.when.click("go") }; From c5e7a76bc04aed69abfa9f215567be66b070b098 Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Sat, 5 Aug 2023 06:50:58 +0300 Subject: [PATCH 11/32] update test name --- .../angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts | 2 +- .../lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts | 2 +- .../react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index 5b2a772a..93dc7142 100644 --- a/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -76,7 +76,7 @@ describe("Angular Pokemon e2e", () => { }); }); - describe("when changing from pokemon without gif to pokemon with gif", () => { + describe("when changing from pokemon without gif to pokemon with gif, should show gif", () => { it("should render pokemon gif", async () => { when.pokemon.pokemonGo.typePokemonIndex("888"); when.pokemon.pokemonGo.clickGo(); diff --git a/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index c105953d..28e95010 100644 --- a/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -75,7 +75,7 @@ describe("Lit Pokemon e2e", () => { }); }); - describe("when changing from pokemon without gif to pokemon with gif", () => { + describe("when changing from pokemon without gif to pokemon with gif, should show gif", () => { it("should render pokemon gif", async () => { when.pokemon.pokemonGo.typePokemonIndex("888"); when.pokemon.pokemonGo.clickGo(); diff --git a/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index d26f8de7..b0fee56b 100644 --- a/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -75,7 +75,7 @@ describe("React Pokemon e2e", () => { }); }); - describe("when changing from pokemon without gif to pokemon with gif", () => { + describe("when changing from pokemon without gif to pokemon with gif, should show gif", () => { it("should render pokemon gif", async () => { when.pokemon.pokemonGo.typePokemonIndex("888"); when.pokemon.pokemonGo.clickGo(); From 42eca6edfaadd9dee75057b22369848c343dd22a Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Sun, 6 Aug 2023 13:20:05 +0300 Subject: [PATCH 12/32] remove wait from rendering go component driver --- .../pokemon-go/pokemon-go.component.driver.ts | 1 - .../pokemon-go/pokemon-go.component.spec.cy.ts | 12 +++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts index 0ed82031..66dc761e 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts @@ -21,7 +21,6 @@ export class PokemonGoComponentDriver { this.angularComponentHelper.when.mount(type, config, { ...this.componentProperties }); - this.helper.when.wait(200); }, typePokemonIndex: (value: string) => this.helper.when.type("pokemon-index", value), clickGo: () => this.helper.when.click("go") diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts index 90d3238e..5fc2169e 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts @@ -10,39 +10,37 @@ describe("Angular PokemonGoComponent Tests", () => { const { when, get, given, beforeAndAfter } = new PokemonGoComponentDriver(); beforeAndAfter(); - it("Go button should be disabled", async () => { + + beforeEach(() => { when.render(PokemonGoComponent, testConfig); + }); + it("Go button should be disabled", async () => { expect(await get.isGoButtonDisabled()).to.be.true; }); it("when typing index Go button should be enabled", async () => { - when.render(PokemonGoComponent, testConfig); when.typePokemonIndex("33"); expect(await get.isGoButtonDisabled()).to.be.false; }); it("When input filled should have input value", async () => { - when.render(PokemonGoComponent, testConfig); when.typePokemonIndex("42"); expect(await get.selectedPokemon()).to.eq("42"); }); it("When input and clicked go should fetch pokemon by index", () => { - when.render(PokemonGoComponent, testConfig); when.typePokemonIndex("12"); when.clickGo(); expect(get.selectedPokemonSpy().should("have.been.calledWith", "12")); }); - it("should empty input when clicking submit", async () => { - when.render(PokemonGoComponent, testConfig); + it("should clear input when clicking submit", async () => { when.typePokemonIndex("33"); when.clickGo(); expect(await get.selectedPokemon()).to.eq(""); }); it("should not update input value when typing non digits", async () => { - when.render(PokemonGoComponent, testConfig); when.typePokemonIndex("abcd-"); expect(await get.selectedPokemon()).to.eq(""); }); From 106ab8837b2c5549fff26415ee7a78078911b5fe Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Tue, 8 Aug 2023 21:06:47 +0300 Subject: [PATCH 13/32] updates due to breaking changes in cypress helper --- .../cypress/e2e/pokemon-page.spec.cy.ts | 5 ++- .../integration/pokemon-page.spec.cy.ts | 4 +-- .../pokemon-go/pokemon-go.component.driver.ts | 2 +- .../pokemon-go.component.spec.cy.ts | 20 +++++------ .../cypress/e2e/pokemon-page.spec.cy.ts | 4 +-- .../integration/pokemon-page.spec.cy.ts | 4 +-- .../pokemon-go/pokemon-go.component.driver.ts | 2 +- .../pokemon-go.component.spec.cy.ts | 36 ++++++++++--------- .../cypress/e2e/pokemon-page.spec.cy.ts | 4 +-- .../integration/pokemon-page.spec.cy.ts | 4 +-- .../pokemon-go/pokemon-go.driver.tsx | 2 +- .../pokemon-go/pokemon-go.spec.cy.ts | 27 ++++++-------- 12 files changed, 55 insertions(+), 59 deletions(-) diff --git a/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index f6e9fe93..edc2e0ff 100644 --- a/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -76,15 +76,14 @@ describe("Angular Pokemon e2e", () => { }); describe("when changing from pokemon without gif to pokemon with gif, should show gif", () => { - it("should render pokemon gif", async () => { + it("should render pokemon gif", () => { when.pokemon.pokemonGo.typePokemonIndex("888"); when.pokemon.pokemonGo.clickGo(); when.waitUntil(() => get.elementByText("zacian")); when.pokemon.pokemonGo.typePokemonIndex("33"); when.pokemon.pokemonGo.clickGo(); when.waitUntil(() => get.elementByText("nidorino")); - when.wait(500); - expect(await get.pokemon.image.pictureSrc()).to.include("/33.gif"); + expect(get.pokemon.image.pictureSrc().should("include", "/33.gif")); }); }); }); diff --git a/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 503c1bf5..333a1de8 100644 --- a/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -27,8 +27,8 @@ describe("Angular Pokemon Page integration Tests", () => { expect(get.pokemon.isPrevButtonDisabled().should("eq", "disabled")); }); - it("should render correct image", async () => { - expect(await get.pokemon.image.pictureSrc()).to.include("1.gif"); + it("should render correct image", () => { + expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); }); it("should fetch pokemon by index", async () => { diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts index 66dc761e..f526eb50 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts @@ -27,7 +27,7 @@ export class PokemonGoComponentDriver { }; get = { - selectedPokemon: () => this.helper.get.inputValue("pokemon-index"), + pokemonIndexInputValue: () => this.helper.get.inputValue("pokemon-index"), selectedPokemonSpy: () => this.helper.get.spy("selectedPokemon"), isGoButtonDisabled: () => this.helper.get.isElementDisabled("go") }; diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts index 5fc2169e..613c9cbc 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts @@ -14,18 +14,18 @@ describe("Angular PokemonGoComponent Tests", () => { beforeEach(() => { when.render(PokemonGoComponent, testConfig); }); - it("Go button should be disabled", async () => { - expect(await get.isGoButtonDisabled()).to.be.true; + it("Go button should be disabled", () => { + expect(get.isGoButtonDisabled().should("eq", "disabled")); }); - it("when typing index Go button should be enabled", async () => { + it("when typing index Go button should be enabled", () => { when.typePokemonIndex("33"); - expect(await get.isGoButtonDisabled()).to.be.false; + expect(get.isGoButtonDisabled().should("eq", undefined)); }); - it("When input filled should have input value", async () => { + it("When input filled should have input value", () => { when.typePokemonIndex("42"); - expect(await get.selectedPokemon()).to.eq("42"); + expect(get.pokemonIndexInputValue().should("eq", "42")); }); it("When input and clicked go should fetch pokemon by index", () => { @@ -34,14 +34,14 @@ describe("Angular PokemonGoComponent Tests", () => { expect(get.selectedPokemonSpy().should("have.been.calledWith", "12")); }); - it("should clear input when clicking submit", async () => { + it("should clear input when clicking submit", () => { when.typePokemonIndex("33"); when.clickGo(); - expect(await get.selectedPokemon()).to.eq(""); + expect(get.pokemonIndexInputValue().should("eq", "")); }); - it("should not update input value when typing non digits", async () => { + it("should not update input value when typing non digits", () => { when.typePokemonIndex("abcd-"); - expect(await get.selectedPokemon()).to.eq(""); + expect(get.pokemonIndexInputValue().should("eq", "")); }); }); diff --git a/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index bc0ab41a..37f88325 100644 --- a/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -76,14 +76,14 @@ describe("Lit Pokemon e2e", () => { }); describe("when changing from pokemon without gif to pokemon with gif, should show gif", () => { - it("should render pokemon gif", async () => { + it("should render pokemon gif", () => { when.pokemon.pokemonGo.typePokemonIndex("888"); when.pokemon.pokemonGo.clickGo(); when.waitUntil(() => get.elementByText("zacian")); when.pokemon.pokemonGo.typePokemonIndex("33"); when.pokemon.pokemonGo.clickGo(); when.waitUntil(() => get.elementByText("nidorino")); - expect(await get.pokemon.image.pictureSrc()).to.include("/33.gif"); + expect(get.pokemon.image.pictureSrc().should("include", "/33.gif")); }); }); }); diff --git a/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 0502743b..0c6c10e0 100644 --- a/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -27,8 +27,8 @@ describe("Lit Pokemon Page integration Tests", () => { expect(get.pokemon.isPrevButtonDisabled().should("eq", "disabled")); }); - it("should render correct image", async () => { - expect(await get.pokemon.image.pictureSrc()).to.include("1.gif"); + it("should render correct image", () => { + expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); }); it("should fetch pokemon by index", async () => { diff --git a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts index 16c7453f..82b26eb5 100644 --- a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts +++ b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts @@ -30,7 +30,7 @@ export class PokemonGoComponentDriver { get = { onSubmitSpy: () => this.helper.get.spy("onSubmit"), - indexValue: () => this.helper.get.inputValue("pokemon-index"), + pokemonIndexInputValue: () => this.helper.get.inputValue("pokemon-index"), isGoButtonDisabled: () => this.helper.get.isElementDisabled("go") }; } diff --git a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts index 04f08fbe..f5c174b7 100644 --- a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts +++ b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts @@ -5,16 +5,22 @@ describe("Lit PokemonImageComponent", () => { const { when, given, get, beforeAndAfter } = new PokemonGoComponentDriver(); beforeAndAfter(); - it("Go button should be disabled", async () => { + beforeEach(() => { + given.onSubmitSpy(); when.render(new PokemonGoComponent()); - expect(await get.isGoButtonDisabled()).to.be.true; + }); + it("Go button should be disabled", () => { + expect(get.isGoButtonDisabled().should("eq", "disabled")); }); - it("when typing index Go button should be enabled", async () => { - given.onSubmitSpy(); - when.render(new PokemonGoComponent()); + it("when typing index Go button should be enabled", () => { when.typePokemonIndex("33"); - expect(await get.isGoButtonDisabled()).to.be.false; + expect(get.isGoButtonDisabled().should("eq", undefined)); + }); + + it("When input filled should have input value", () => { + when.typePokemonIndex("42"); + expect(get.pokemonIndexInputValue().should("eq", "42")); }); it("when typing index and submitting should call onSubmit", () => { @@ -25,18 +31,14 @@ describe("Lit PokemonImageComponent", () => { expect(get.onSubmitSpy().should("have.been.calledWith", "33")); }); - it("should not update input value when typing non digits", async () => { - given.onSubmitSpy(); - when.render(new PokemonGoComponent()); - when.typePokemonIndex("abcd-"); - expect(await get.indexValue()).to.eq(""); - }); - - it("should empty input when clicking submit", async () => { - given.onSubmitSpy(); - when.render(new PokemonGoComponent()); + it("should clear input when clicking submit", () => { when.typePokemonIndex("33"); when.clickGo(); - expect(await get.indexValue()).to.eq(""); + expect(get.pokemonIndexInputValue().should("eq", "")); + }); + + it("should not update input value when typing non digits", () => { + when.typePokemonIndex("abcd-"); + expect(get.pokemonIndexInputValue().should("eq", "")); }); }); diff --git a/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index 439c90a7..b2d1beaa 100644 --- a/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -76,14 +76,14 @@ describe("React Pokemon e2e", () => { }); describe("when changing from pokemon without gif to pokemon with gif, should show gif", () => { - it("should render pokemon gif", async () => { + it("should render pokemon gif", () => { when.pokemon.pokemonGo.typePokemonIndex("888"); when.pokemon.pokemonGo.clickGo(); when.waitUntil(() => get.elementByText("zacian")); when.pokemon.pokemonGo.typePokemonIndex("33"); when.pokemon.pokemonGo.clickGo(); when.waitUntil(() => get.elementByText("nidorino")); - expect(await get.pokemon.image.pictureSrc()).to.include("/33.gif"); + expect(get.pokemon.image.pictureSrc().should("include", "/33.gif")); }); }); }); diff --git a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index d728590b..70597937 100644 --- a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -27,8 +27,8 @@ describe("React Pokemon Page integration Tests", () => { expect(get.pokemon.isPrevButtonDisabled().should("eq", "disabled")); }); - it("should render correct image", async () => { - expect(await get.pokemon.image.pictureSrc()).to.include("1.gif"); + it("should render correct image", () => { + expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); }); it("should fetch pokemon by index", async () => { diff --git a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx index 469bc1dd..cad05b60 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx +++ b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx @@ -34,7 +34,7 @@ export class PokemonGoComponentDriver { get = { onSubmitSpy: () => this.helper.get.spy("onSubmit"), - indexValue: () => this.helper.get.inputValue("pokemon-index"), + pokemonIndexInputValue: () => this.helper.get.inputValue("pokemon-index"), isGoButtonDisabled: () => this.helper.get.isElementDisabled("go") }; } diff --git a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts index ede29373..7b9760ed 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts +++ b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts @@ -5,38 +5,33 @@ describe("React PokemonImageComponent Tests", () => { const { when, given, get, beforeAndAfter } = new PokemonGoComponentDriver(); beforeAndAfter(); - it("Go button should be disabled", async () => { + beforeEach(() => { + given.onSubmitSpy(); when.render(PokemonGoComponent); - expect(await get.isGoButtonDisabled()).to.be.true; + }); + it("Go button should be disabled", () => { + expect(get.isGoButtonDisabled().should("eq", "disabled")); }); - it("when typing index Go button should be enabled", async () => { - given.onSubmitSpy(); - when.render(PokemonGoComponent); + it("when typing index Go button should be enabled", () => { when.typePokemonIndex("33"); - expect(await get.isGoButtonDisabled()).to.be.false; + expect(get.isGoButtonDisabled().should("eq", undefined)); }); it("when typing index and submiting should call onSubmit", () => { - given.onSubmitSpy(); - when.render(PokemonGoComponent); when.typePokemonIndex("33"); when.clickGo(); expect(get.onSubmitSpy().should("have.been.calledWith", "33")); }); - it("should not update input value when typing non digits", async () => { - given.onSubmitSpy(); - when.render(PokemonGoComponent); + it("should not update input value when typing non digits", () => { when.typePokemonIndex("abcd-"); - expect(await get.indexValue()).to.eq(""); + expect(get.pokemonIndexInputValue().should("eq", "")); }); - it("should empty input when clicking submit", async () => { - given.onSubmitSpy(); - when.render(PokemonGoComponent); + it("should clear input when clicking submit", () => { when.typePokemonIndex("33"); when.clickGo(); - expect(await get.indexValue()).to.eq(""); + expect(get.pokemonIndexInputValue().should("eq", "")); }); }); From dc42215f41225aa7fcab634ffd7bca44e6fda3b3 Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Tue, 8 Aug 2023 21:52:23 +0300 Subject: [PATCH 14/32] fix failing tests --- .../pokemon-catalog/cypress/drivers/pokemon-page.driver.ts | 2 +- .../lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts | 2 +- .../pokemon-catalog/cypress/drivers/pokemon-page.driver.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts b/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts index 44ff11a7..7fd3a319 100644 --- a/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts +++ b/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts @@ -33,7 +33,7 @@ export class PokemonPageDriver { get = { ...this.pokemonDriver.get, fetchPokemonOffset: () => { - this.helper.when.waitForLastCall("pokemon"); + this.helper.when.waitForResponse("pokemon"); return this.helper.get.requestQueryParam("pokemon", "offset"); } }; diff --git a/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts b/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts index 2042307d..3b666402 100644 --- a/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts +++ b/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts @@ -33,7 +33,7 @@ export class PokemonPageDriver { get = { ...this.pokemonDriver.get, fetchPokemonOffset: () => { - this.helper.when.waitForLastCall("pokemon"); + this.helper.when.waitForResponse("pokemon"); return this.helper.get.requestQueryParam("pokemon", "offset"); } }; diff --git a/examples/react/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts b/examples/react/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts index 1d9b7f95..18781712 100644 --- a/examples/react/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts +++ b/examples/react/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts @@ -33,7 +33,7 @@ export class PokemonPageDriver { get = { ...this.pokemonDriver.get, fetchPokemonOffset: () => { - this.helper.when.waitForLastCall("pokemon"); + this.helper.when.waitForResponse("pokemon"); return this.helper.get.requestQueryParam("pokemon", "offset"); } }; From a9724fea98bac0fca09d5f45f5524d83c0aa4e7f Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Wed, 9 Aug 2023 06:01:13 +0300 Subject: [PATCH 15/32] update lock file --- .../pokemon-catalog/cypress/drivers/pokemon-page.driver.ts | 1 + examples/react/pokemon-catalog/yarn.lock | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts b/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts index 7fd3a319..8e5bd1c1 100644 --- a/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts +++ b/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts @@ -10,6 +10,7 @@ export class PokemonPageDriver { this.helper.beforeAndAfter(); this.pokemonDriver.beforeAndAfter(); }; + given = { fetchPokemonResponse: (response: PokemonList) => this.helper.given.interceptAndMockResponse({ diff --git a/examples/react/pokemon-catalog/yarn.lock b/examples/react/pokemon-catalog/yarn.lock index fe44e628..dd9ce9bd 100644 --- a/examples/react/pokemon-catalog/yarn.lock +++ b/examples/react/pokemon-catalog/yarn.lock @@ -1986,6 +1986,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.39.tgz#aa39a1a87a40ef6098ee69689a1acb0c1b034832" integrity sha512-8q9ZexmdYYyc5/cfujaXb4YOucpQxAV4RMG0himLyDUOEr8Mr79VrqsFI+cQ2M2h89YIuy95lbxuYjxT4Hk4kQ== +"@types/node@^20.4.5": + version "20.4.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.9.tgz#c7164e0f8d3f12dfae336af0b1f7fdec8c6b204f" + integrity sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ== + "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" From 76d1e37566faf7b1074803e8d3515df9275ad8b1 Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Wed, 9 Aug 2023 06:02:06 +0300 Subject: [PATCH 16/32] update lockfile --- examples/lit/pokemon-catalog/yarn.lock | 48 +++++--------------------- 1 file changed, 8 insertions(+), 40 deletions(-) diff --git a/examples/lit/pokemon-catalog/yarn.lock b/examples/lit/pokemon-catalog/yarn.lock index abf023c3..c74031cb 100644 --- a/examples/lit/pokemon-catalog/yarn.lock +++ b/examples/lit/pokemon-catalog/yarn.lock @@ -962,30 +962,6 @@ resolved "https://registry.yarnpkg.com/@cypress/mount-utils/-/mount-utils-4.0.0.tgz#647c24158caddc656741648291c77dfa1b6b1621" integrity sha512-4w8WZpOALz5+vhJmPfh2HkT4NMsRP2DgVqSXxXu46GR5yUGfqJ0+WgUrmVuujtKKY6n1mDiO1L4AfZ+4bsEYGQ== -"@cypress/request@^2.88.10", "@cypress/request@^2.88.11": - version "2.88.11" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.11.tgz#5a4c7399bc2d7e7ed56e92ce5acb620c8b187047" - integrity sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w== - 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 "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^8.3.2" - "@cypress/request@^2.88.11": version "2.88.12" resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.12.tgz#ba4911431738494a85e93fb04498cb38bc55d590" @@ -2515,12 +2491,12 @@ cypress-wait-until@^1.7.2: resolved "https://registry.yarnpkg.com/cypress-wait-until/-/cypress-wait-until-1.7.2.tgz#7f534dd5a11c89b65359e7a0210f20d3dfc22107" integrity sha512-uZ+M8/MqRcpf+FII/UZrU7g1qYZ4aVlHcgyVopnladyoBrpoaMJ4PKZDrdOJ05H5RHbr7s9Tid635X3E+ZLU/Q== -cypress@^12.14.0: - version "12.16.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-12.16.0.tgz#d0dcd0725a96497f4c60cf54742242259847924c" - integrity sha512-mwv1YNe48hm0LVaPgofEhGCtLwNIQEjmj2dJXnAkY1b4n/NE9OtgPph4TyS+tOtYp5CKtRmDvBzWseUXQTjbTg== +cypress@12.17.2: + version "12.17.2" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-12.17.2.tgz#040ac55de1e811f6e037d231a2869d5ab8c29c85" + integrity sha512-hxWAaWbqQBzzMuadSGSuQg5PDvIGOovm6xm0hIfpCVcORsCAj/gF2p0EvfnJ4f+jK2PCiDgP6D2eeE9/FK4Mjg== dependencies: - "@cypress/request" "^2.88.10" + "@cypress/request" "^2.88.11" "@cypress/xvfb" "^1.2.4" "@types/node" "^14.14.31" "@types/sinonjs__fake-timers" "8.1.1" @@ -2557,7 +2533,7 @@ cypress@^12.14.0: pretty-bytes "^5.6.0" proxy-from-env "1.0.0" request-progress "^3.0.0" - semver "^7.3.2" + semver "^7.5.3" supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" @@ -4957,7 +4933,7 @@ ps-tree@1.2.0: dependencies: event-stream "=3.3.4" -psl@^1.1.28, psl@^1.1.33: +psl@^1.1.33: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== @@ -5334,7 +5310,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2, semver@^7.3.8: +semver@^7.3.8: version "7.5.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== @@ -5787,14 +5763,6 @@ tough-cookie@^4.1.3: universalify "^0.2.0" url-parse "^1.5.3" -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - transform-ast@^2.4.4: version "2.4.4" resolved "https://registry.yarnpkg.com/transform-ast/-/transform-ast-2.4.4.tgz#bebf494e2e73f024746f76348bc86a5992851d00" From a7a06ce8183e3834b94394c2f0ce438caae45928 Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Wed, 9 Aug 2023 07:03:53 +0300 Subject: [PATCH 17/32] fix failing tests --- .../cypress/drivers/pokemon-page.driver.ts | 8 +++----- .../cypress/integration/pokemon-page.spec.cy.ts | 1 + .../cypress/drivers/pokemon-page.driver.ts | 10 +++++----- .../cypress/integration/pokemon-page.spec.cy.ts | 1 + .../cypress/drivers/pokemon-page.driver.ts | 8 +++----- .../cypress/integration/pokemon-page.spec.cy.ts | 1 + 6 files changed, 14 insertions(+), 15 deletions(-) diff --git a/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts b/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts index 8e5bd1c1..3d0c88f2 100644 --- a/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts +++ b/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts @@ -28,14 +28,12 @@ export class PokemonPageDriver { }; when = { - ...this.pokemonDriver.when + ...this.pokemonDriver.when, + waitForPokemonLastCall: () => this.helper.when.waitForLastCall("pokemon") }; get = { ...this.pokemonDriver.get, - fetchPokemonOffset: () => { - this.helper.when.waitForResponse("pokemon"); - return this.helper.get.requestQueryParam("pokemon", "offset"); - } + fetchPokemonOffset: () => this.helper.get.requestQueryParam("pokemon", "offset") }; } diff --git a/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 333a1de8..7fec3b5f 100644 --- a/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -17,6 +17,7 @@ describe("Angular Pokemon Page integration Tests", () => { given.pokemon.fetchPokemonResponse(pokemonList); given.pokemon.fetchImageResponse("default.png"); when.visit("/"); + when.pokemon.waitForPokemonLastCall(); }); it("should disable next button once showing last pokemon", () => { diff --git a/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts b/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts index 3b666402..da091e5c 100644 --- a/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts +++ b/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts @@ -10,7 +10,9 @@ export class PokemonPageDriver { this.helper.beforeAndAfter(); this.pokemonDriver.beforeAndAfter(); }; + given = { + ...this.pokemonDriver.given, fetchPokemonResponse: (response: PokemonList) => this.helper.given.interceptAndMockResponse({ url: "https://pokeapi.co/api/v2/pokemon**", @@ -27,14 +29,12 @@ export class PokemonPageDriver { }; when = { - ...this.pokemonDriver.when + ...this.pokemonDriver.when, + waitForPokemonLastCall: () => this.helper.when.waitForLastCall("pokemon") }; get = { ...this.pokemonDriver.get, - fetchPokemonOffset: () => { - this.helper.when.waitForResponse("pokemon"); - return this.helper.get.requestQueryParam("pokemon", "offset"); - } + fetchPokemonOffset: () => this.helper.get.requestQueryParam("pokemon", "offset") }; } diff --git a/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 0c6c10e0..70e8152d 100644 --- a/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -17,6 +17,7 @@ describe("Lit Pokemon Page integration Tests", () => { given.pokemon.fetchPokemonResponse(pokemonList); given.pokemon.fetchImageResponse("default.png"); when.visit("/"); + when.pokemon.waitForPokemonLastCall(); }); it("should disable next button once showing last pokemon", () => { diff --git a/examples/react/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts b/examples/react/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts index 18781712..067779ce 100644 --- a/examples/react/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts +++ b/examples/react/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts @@ -27,14 +27,12 @@ export class PokemonPageDriver { }; when = { - ...this.pokemonDriver.when + ...this.pokemonDriver.when, + waitForPokemonLastCall: () => this.helper.when.waitForLastCall("pokemon") }; get = { ...this.pokemonDriver.get, - fetchPokemonOffset: () => { - this.helper.when.waitForResponse("pokemon"); - return this.helper.get.requestQueryParam("pokemon", "offset"); - } + fetchPokemonOffset: () => this.helper.get.requestQueryParam("pokemon", "offset") }; } diff --git a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 70597937..5eeb2a9c 100644 --- a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -17,6 +17,7 @@ describe("React Pokemon Page integration Tests", () => { given.pokemon.fetchPokemonResponse(pokemonList); given.pokemon.fetchImageResponse("default.png"); when.visit("/"); + when.pokemon.waitForPokemonLastCall(); }); it("should disable next button once showing last pokemon", () => { From 7942976b151ba47c1e8fdb40af5eabdbb0c3323c Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Wed, 9 Aug 2023 07:23:39 +0300 Subject: [PATCH 18/32] fix failing test --- .../src/components/pokemon-go/pokemon-go.component.spec.cy.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts index f5c174b7..1b4e6443 100644 --- a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts +++ b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts @@ -24,8 +24,6 @@ describe("Lit PokemonImageComponent", () => { }); it("when typing index and submitting should call onSubmit", () => { - given.onSubmitSpy(); - when.render(new PokemonGoComponent()); when.typePokemonIndex("33"); when.clickGo(); expect(get.onSubmitSpy().should("have.been.calledWith", "33")); From eb6e96f5edafcdc77149b816d24d47a9531ba3ee Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Thu, 10 Aug 2023 07:20:47 +0300 Subject: [PATCH 19/32] add types --- .../lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts b/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts index da091e5c..65e870ab 100644 --- a/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts +++ b/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts @@ -1,6 +1,7 @@ import { PokemonCatalogComponentDriver } from "@components/pokemon-catalog/pokemon-catalog.component.driver"; import { PokemonList } from "@services/pokemon.service"; import { CypressHelper } from "@shellygo/cypress-test-utils"; +import { Interception } from "cypress/types/net-stubbing"; export class PokemonPageDriver { private helper: CypressHelper = new CypressHelper(); @@ -30,7 +31,7 @@ export class PokemonPageDriver { when = { ...this.pokemonDriver.when, - waitForPokemonLastCall: () => this.helper.when.waitForLastCall("pokemon") + waitForPokemonLastCall: (): Cypress.Chainable => this.helper.when.waitForLastCall("pokemon") }; get = { From 26cfa5e7cd9259a15e0c93bc3d705975387ef6f3 Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Thu, 10 Aug 2023 08:19:18 +0300 Subject: [PATCH 20/32] improve tests readability --- .../pokemon-catalog/pokemon-catalog.component.driver.tsx | 2 -- .../src/components/pokemon-go/pokemon-go.driver.tsx | 2 +- .../src/components/pokemon-go/pokemon-go.spec.cy.ts | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/examples/react/pokemon-catalog/src/components/pokemon-catalog/pokemon-catalog.component.driver.tsx b/examples/react/pokemon-catalog/src/components/pokemon-catalog/pokemon-catalog.component.driver.tsx index afb54409..c4376d85 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-catalog/pokemon-catalog.component.driver.tsx +++ b/examples/react/pokemon-catalog/src/components/pokemon-catalog/pokemon-catalog.component.driver.tsx @@ -72,8 +72,6 @@ export class PokemonCatalogComponentDriver { nameText: () => this.helper.get.elementsText("pokemon-name"), nextButton: () => this.helper.get.elementByTestId("next"), prevButton: () => this.helper.get.elementByTestId("prev"), - isGoButtonDisabled: () => this.helper.get.isElementDisabled("go"), - getPokemonSpy: () => this.helper.get.spyFromFunction(this.pokemonServiceMock.getPokemon!), getPokemonByOffsetSpy: () => this.helper.get.spyFromFunction(this.pokemonServiceMock.getPokemonByOffset!), pokemonServiceMock: () => this.props.service diff --git a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx index cad05b60..03438088 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx +++ b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx @@ -35,6 +35,6 @@ export class PokemonGoComponentDriver { get = { onSubmitSpy: () => this.helper.get.spy("onSubmit"), pokemonIndexInputValue: () => this.helper.get.inputValue("pokemon-index"), - isGoButtonDisabled: () => this.helper.get.isElementDisabled("go") + goButton: () => this.helper.get.isElementDisabled("go") }; } diff --git a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts index 7b9760ed..ebb3b540 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts +++ b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts @@ -10,12 +10,12 @@ describe("React PokemonImageComponent Tests", () => { when.render(PokemonGoComponent); }); it("Go button should be disabled", () => { - expect(get.isGoButtonDisabled().should("eq", "disabled")); + expect(get.goButton().should("be.disabled")); }); it("when typing index Go button should be enabled", () => { when.typePokemonIndex("33"); - expect(get.isGoButtonDisabled().should("eq", undefined)); + expect(get.goButton().should("be.enabled")); }); it("when typing index and submiting should call onSubmit", () => { From d7ed5dedb523dbd54d8d85a003ace973b98e72d2 Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Thu, 10 Aug 2023 08:30:57 +0300 Subject: [PATCH 21/32] fix failing tests --- .../src/components/pokemon-go/pokemon-go.driver.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx index 03438088..d6ccdd92 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx +++ b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx @@ -35,6 +35,6 @@ export class PokemonGoComponentDriver { get = { onSubmitSpy: () => this.helper.get.spy("onSubmit"), pokemonIndexInputValue: () => this.helper.get.inputValue("pokemon-index"), - goButton: () => this.helper.get.isElementDisabled("go") + goButton: () => this.helper.get.elementByTestId("go") }; } From dd79b35c467c086c2675fe2acafd90601d1460ff Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Thu, 10 Aug 2023 09:43:33 +0300 Subject: [PATCH 22/32] update angular and lit as well --- .../app/components/pokemon-go/pokemon-go.component.driver.ts | 2 +- .../app/components/pokemon-go/pokemon-go.component.spec.cy.ts | 4 ++-- .../src/components/pokemon-go/pokemon-go.component.driver.ts | 2 +- .../src/components/pokemon-go/pokemon-go.component.spec.cy.ts | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts index f526eb50..e37e4b62 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts @@ -29,6 +29,6 @@ export class PokemonGoComponentDriver { get = { pokemonIndexInputValue: () => this.helper.get.inputValue("pokemon-index"), selectedPokemonSpy: () => this.helper.get.spy("selectedPokemon"), - isGoButtonDisabled: () => this.helper.get.isElementDisabled("go") + goButton: () => this.helper.get.elementByTestId("go") }; } diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts index 613c9cbc..3b75bc25 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts @@ -15,12 +15,12 @@ describe("Angular PokemonGoComponent Tests", () => { when.render(PokemonGoComponent, testConfig); }); it("Go button should be disabled", () => { - expect(get.isGoButtonDisabled().should("eq", "disabled")); + expect(get.goButton().should("be.disabled")); }); it("when typing index Go button should be enabled", () => { when.typePokemonIndex("33"); - expect(get.isGoButtonDisabled().should("eq", undefined)); + expect(get.goButton().should("be.enabled")); }); it("When input filled should have input value", () => { diff --git a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts index 82b26eb5..3f97ffa0 100644 --- a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts +++ b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts @@ -31,6 +31,6 @@ export class PokemonGoComponentDriver { get = { onSubmitSpy: () => this.helper.get.spy("onSubmit"), pokemonIndexInputValue: () => this.helper.get.inputValue("pokemon-index"), - isGoButtonDisabled: () => this.helper.get.isElementDisabled("go") + goButton: () => this.helper.get.elementByTestId("go") }; } diff --git a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts index 1b4e6443..bc4fb373 100644 --- a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts +++ b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts @@ -10,12 +10,12 @@ describe("Lit PokemonImageComponent", () => { when.render(new PokemonGoComponent()); }); it("Go button should be disabled", () => { - expect(get.isGoButtonDisabled().should("eq", "disabled")); + expect(get.goButton().should("be.disabled")); }); it("when typing index Go button should be enabled", () => { when.typePokemonIndex("33"); - expect(get.isGoButtonDisabled().should("eq", undefined)); + expect(get.goButton().should("be.enabled")); }); it("When input filled should have input value", () => { From 897e37f187923994b712dde00f893328d132bfcb Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Tue, 15 Aug 2023 08:19:29 +0300 Subject: [PATCH 23/32] remove all async await from tests --- .../cypress/drivers/pokemon-page.driver.ts | 2 +- .../integration/pokemon-page.spec.cy.ts | 4 +-- examples/angular/pokemon-catalog/package.json | 2 +- examples/angular/pokemon-catalog/yarn.lock | 25 +++---------------- .../cypress/drivers/pokemon-page.driver.ts | 2 +- .../integration/pokemon-page.spec.cy.ts | 4 +-- examples/lit/pokemon-catalog/package.json | 2 +- examples/lit/pokemon-catalog/yarn.lock | 8 +++--- .../cypress/drivers/pokemon-page.driver.ts | 2 +- .../integration/pokemon-page.spec.cy.ts | 4 +-- examples/react/pokemon-catalog/package.json | 2 +- examples/react/pokemon-catalog/yarn.lock | 8 +++--- 12 files changed, 24 insertions(+), 41 deletions(-) diff --git a/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts b/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts index 3d0c88f2..03d8fc35 100644 --- a/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts +++ b/examples/angular/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts @@ -34,6 +34,6 @@ export class PokemonPageDriver { get = { ...this.pokemonDriver.get, - fetchPokemonOffset: () => this.helper.get.requestQueryParam("pokemon", "offset") + fetchPokemonQueryParams: () => this.helper.get.requestQueryParams("pokemon") }; } diff --git a/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 60a4f75a..02a2d106 100644 --- a/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -32,9 +32,9 @@ describe("Angular Pokemon Page integration Tests", () => { expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); }); - it("should fetch pokemon by index", async () => { + it("should fetch pokemon by index", () => { when.pokemon.pokemonGo.typePokemonIndex("78"); when.pokemon.pokemonGo.clickGo(); - expect(await get.pokemon.fetchPokemonOffset()).to.eq("77"); + expect(get.pokemon.fetchPokemonQueryParams().should("include", { offset: "77" })); }); }); diff --git a/examples/angular/pokemon-catalog/package.json b/examples/angular/pokemon-catalog/package.json index 5a950a04..2a83e841 100644 --- a/examples/angular/pokemon-catalog/package.json +++ b/examples/angular/pokemon-catalog/package.json @@ -43,7 +43,7 @@ "@cypress/webpack-dev-server": "^3.4.1", "@istanbuljs/nyc-config-typescript": "^1.0.2", "@jsdevtools/coverage-istanbul-loader": "^3.0.5", - "@shellygo/cypress-test-utils": "^1.0.26", + "@shellygo/cypress-test-utils": "^1.0.31", "@types/chance": "^1.1.3", "@types/jasmine": "~4.0.0", "builder-pattern": "^2.2.0", diff --git a/examples/angular/pokemon-catalog/yarn.lock b/examples/angular/pokemon-catalog/yarn.lock index abd0aa9f..d91aba60 100644 --- a/examples/angular/pokemon-catalog/yarn.lock +++ b/examples/angular/pokemon-catalog/yarn.lock @@ -1642,10 +1642,10 @@ "@angular-devkit/schematics" "14.2.12" jsonc-parser "3.1.0" -"@shellygo/cypress-test-utils@^1.0.26": - version "1.0.26" - resolved "https://registry.yarnpkg.com/@shellygo/cypress-test-utils/-/cypress-test-utils-1.0.26.tgz#4f5250dcfd8031db26416e42b5a6161f98ebeb53" - integrity sha512-6NM7H57d0z/dp529WJU9i7p9eVRZVhKaIuVBv9kdy/fIHglRh8Qmu9b5iQ20Yb91N73VwARQD1zv5GfX/fYhuA== +"@shellygo/cypress-test-utils@^1.0.31": + version "1.0.31" + resolved "https://registry.yarnpkg.com/@shellygo/cypress-test-utils/-/cypress-test-utils-1.0.31.tgz#8b3f61048e991922f98e6ac3a3b3dc0bd6037e5b" + integrity sha512-iJ3Cto9le9DWPnWL+yiHOsJCJzAajUmXZmqxcHjpuvdNuf0l99+x3Srg6OsaR6ixtjnr1vOYbUkNTFsGlG4nCg== dependencies: "@cypress/mount-utils" "^4.0.0" "@types/chai-subset" "^1.3.3" @@ -7142,13 +7142,6 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== -qs@~6.10.3: - version "6.10.5" - resolved "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz" - integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== - dependencies: - side-channel "^1.0.4" - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" @@ -7579,16 +7572,6 @@ semver@^7.5.3: dependencies: lru-cache "^6.0.0" -semver@^5.6.0: - version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - send@0.18.0: version "0.18.0" resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" diff --git a/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts b/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts index 65e870ab..8e8ed12f 100644 --- a/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts +++ b/examples/lit/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts @@ -36,6 +36,6 @@ export class PokemonPageDriver { get = { ...this.pokemonDriver.get, - fetchPokemonOffset: () => this.helper.get.requestQueryParam("pokemon", "offset") + fetchPokemonQueryParams: () => this.helper.get.requestQueryParams("pokemon") }; } diff --git a/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index c7ea1971..06db0c67 100644 --- a/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -32,9 +32,9 @@ describe("Lit Pokemon Page integration Tests", () => { expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); }); - it("should fetch pokemon by index", async () => { + it("should fetch pokemon by index", () => { when.pokemon.pokemonGo.typePokemonIndex("78"); when.pokemon.pokemonGo.clickGo(); - expect(await get.pokemon.fetchPokemonOffset()).to.eq("77"); + expect(get.pokemon.fetchPokemonQueryParams().should("include", { offset: "77" })); }); }); diff --git a/examples/lit/pokemon-catalog/package.json b/examples/lit/pokemon-catalog/package.json index 88dc0e05..e92de827 100644 --- a/examples/lit/pokemon-catalog/package.json +++ b/examples/lit/pokemon-catalog/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@babel/core": "7.22.5", "@babel/preset-env": "7.22.5", - "@shellygo/cypress-test-utils": "^1.0.26", + "@shellygo/cypress-test-utils": "^1.0.31", "babel-loader": "9.1.2", "builder-pattern": "^2.2.0", "chance": "^1.1.11", diff --git a/examples/lit/pokemon-catalog/yarn.lock b/examples/lit/pokemon-catalog/yarn.lock index c74031cb..30871372 100644 --- a/examples/lit/pokemon-catalog/yarn.lock +++ b/examples/lit/pokemon-catalog/yarn.lock @@ -1218,10 +1218,10 @@ estree-walker "^2.0.2" picomatch "^2.3.1" -"@shellygo/cypress-test-utils@^1.0.26": - version "1.0.26" - resolved "https://registry.yarnpkg.com/@shellygo/cypress-test-utils/-/cypress-test-utils-1.0.26.tgz#4f5250dcfd8031db26416e42b5a6161f98ebeb53" - integrity sha512-6NM7H57d0z/dp529WJU9i7p9eVRZVhKaIuVBv9kdy/fIHglRh8Qmu9b5iQ20Yb91N73VwARQD1zv5GfX/fYhuA== +"@shellygo/cypress-test-utils@^1.0.31": + version "1.0.31" + resolved "https://registry.yarnpkg.com/@shellygo/cypress-test-utils/-/cypress-test-utils-1.0.31.tgz#8b3f61048e991922f98e6ac3a3b3dc0bd6037e5b" + integrity sha512-iJ3Cto9le9DWPnWL+yiHOsJCJzAajUmXZmqxcHjpuvdNuf0l99+x3Srg6OsaR6ixtjnr1vOYbUkNTFsGlG4nCg== dependencies: "@cypress/mount-utils" "^4.0.0" "@types/chai-subset" "^1.3.3" diff --git a/examples/react/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts b/examples/react/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts index 067779ce..1f88377d 100644 --- a/examples/react/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts +++ b/examples/react/pokemon-catalog/cypress/drivers/pokemon-page.driver.ts @@ -33,6 +33,6 @@ export class PokemonPageDriver { get = { ...this.pokemonDriver.get, - fetchPokemonOffset: () => this.helper.get.requestQueryParam("pokemon", "offset") + fetchPokemonQueryParams: () => this.helper.get.requestQueryParams("pokemon") }; } diff --git a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index fccfc237..2346005a 100644 --- a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -32,9 +32,9 @@ describe("React Pokemon Page integration Tests", () => { expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); }); - it("should fetch pokemon by index", async () => { + it("should fetch pokemon by index", () => { when.pokemon.pokemonGo.typePokemonIndex("78"); when.pokemon.pokemonGo.clickGo(); - expect(await get.pokemon.fetchPokemonOffset()).to.eq("77"); + expect(get.pokemon.fetchPokemonQueryParams().should("include", { offset: "77" })); }); }); diff --git a/examples/react/pokemon-catalog/package.json b/examples/react/pokemon-catalog/package.json index f51111cb..76c33831 100644 --- a/examples/react/pokemon-catalog/package.json +++ b/examples/react/pokemon-catalog/package.json @@ -51,7 +51,7 @@ "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@cypress/code-coverage": "^3.10.7", "@cypress/instrument-cra": "^1.4.0", - "@shellygo/cypress-test-utils": "^1.0.26", + "@shellygo/cypress-test-utils": "^1.0.31", "@types/chance": "^1.1.3", "builder-pattern": "^2.2.0", "chance": "^1.1.11", diff --git a/examples/react/pokemon-catalog/yarn.lock b/examples/react/pokemon-catalog/yarn.lock index dd9ce9bd..798e5e55 100644 --- a/examples/react/pokemon-catalog/yarn.lock +++ b/examples/react/pokemon-catalog/yarn.lock @@ -1689,10 +1689,10 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@shellygo/cypress-test-utils@^1.0.26": - version "1.0.26" - resolved "https://registry.yarnpkg.com/@shellygo/cypress-test-utils/-/cypress-test-utils-1.0.26.tgz#4f5250dcfd8031db26416e42b5a6161f98ebeb53" - integrity sha512-6NM7H57d0z/dp529WJU9i7p9eVRZVhKaIuVBv9kdy/fIHglRh8Qmu9b5iQ20Yb91N73VwARQD1zv5GfX/fYhuA== +"@shellygo/cypress-test-utils@^1.0.31": + version "1.0.31" + resolved "https://registry.yarnpkg.com/@shellygo/cypress-test-utils/-/cypress-test-utils-1.0.31.tgz#8b3f61048e991922f98e6ac3a3b3dc0bd6037e5b" + integrity sha512-iJ3Cto9le9DWPnWL+yiHOsJCJzAajUmXZmqxcHjpuvdNuf0l99+x3Srg6OsaR6ixtjnr1vOYbUkNTFsGlG4nCg== dependencies: "@cypress/mount-utils" "^4.0.0" "@types/chai-subset" "^1.3.3" From 538db0c3f3c769532ed8ae0c910c6585abfc46ce Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Mon, 28 Aug 2023 07:06:49 +0300 Subject: [PATCH 24/32] add e2e tests fro pokemon go --- .../cypress/e2e/pokemon-page.spec.cy.ts | 24 +++++++++++++++++++ .../cypress/e2e/pokemon-page.spec.cy.ts | 24 +++++++++++++++++++ .../cypress/e2e/pokemon-page.spec.cy.ts | 24 +++++++++++++++++++ 3 files changed, 72 insertions(+) diff --git a/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index 9e5ff69a..74592266 100644 --- a/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -75,6 +75,30 @@ describe("Angular Pokemon e2e", () => { }); }); + describe("when typing pokemon index and clicking Go", () => { + beforeEach(() => { + when.pokemon.pokemonGo.typePokemonIndex("25"); + when.pokemon.pokemonGo.clickGo(); + when.waitUntil(() => get.elementByText("pikachu")); + }); + + it("should update index", () => { + expect(get.pokemon.countText().should("include", "25 of")); + }); + + it("should update pokemon image", () => { + expect(get.pokemon.image.pictureSrc().should("include", "25.gif")); + }); + + it("prev button should be enabled", () => { + expect(get.pokemon.prevButton().should("be.enabled")); + }); + + it("should render pokemon name", () => { + expect(get.elementByText("pikachu")).to.exist; + }); + }); + describe("when changing from pokemon without gif to pokemon with gif, should show gif", () => { it("should render pokemon gif", () => { when.pokemon.pokemonGo.typePokemonIndex("888"); diff --git a/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index 3c5628dc..a367d8cf 100644 --- a/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -75,6 +75,30 @@ describe("Lit Pokemon e2e", () => { }); }); + describe("when typing pokemon index and clicking Go", () => { + beforeEach(() => { + when.pokemon.pokemonGo.typePokemonIndex("25"); + when.pokemon.pokemonGo.clickGo(); + when.waitUntil(() => get.elementByText("pikachu")); + }); + + it("should update index", () => { + expect(get.pokemon.countText().should("include", "25 of")); + }); + + it("should update pokemon image", () => { + expect(get.pokemon.image.pictureSrc().should("include", "25.gif")); + }); + + it("prev button should be enabled", () => { + expect(get.pokemon.prevButton().should("be.enabled")); + }); + + it("should render pokemon name", () => { + expect(get.elementByText("pikachu")).to.exist; + }); + }); + describe("when changing from pokemon without gif to pokemon with gif, should show gif", () => { it("should render pokemon gif", () => { when.pokemon.pokemonGo.typePokemonIndex("888"); diff --git a/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index 3bc945f7..907dc373 100644 --- a/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -75,6 +75,30 @@ describe("React Pokemon e2e", () => { }); }); + describe("when typing pokemon index and clicking Go", () => { + beforeEach(() => { + when.pokemon.pokemonGo.typePokemonIndex("25"); + when.pokemon.pokemonGo.clickGo(); + when.waitUntil(() => get.elementByText("pikachu")); + }); + + it("should update index", () => { + expect(get.pokemon.countText().should("include", "25 of")); + }); + + it("should update pokemon image", () => { + expect(get.pokemon.image.pictureSrc().should("include", "25.gif")); + }); + + it("prev button should be enabled", () => { + expect(get.pokemon.prevButton().should("be.enabled")); + }); + + it("should render pokemon name", () => { + expect(get.elementByText("pikachu")).to.exist; + }); + }); + describe("when changing from pokemon without gif to pokemon with gif, should show gif", () => { it("should render pokemon gif", () => { when.pokemon.pokemonGo.typePokemonIndex("888"); From 5b6983cb22e2f088fc2e5b4616b22e4d1a8037ef Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Tue, 29 Aug 2023 07:42:51 +0300 Subject: [PATCH 25/32] data-cy => data-hook --- .../app/components/pokemon-go/pokemon-go.component.driver.ts | 2 +- .../src/components/pokemon-go/pokemon-go.component.driver.ts | 2 +- .../src/components/pokemon-go/pokemon-go.driver.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts index e37e4b62..5cfb5224 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts @@ -5,7 +5,7 @@ import { MountConfig } from "cypress/angular"; import { PokemonGoComponent } from "./pokemon-go.component"; export class PokemonGoComponentDriver { - private helper = new CypressHelper(); + private helper = new CypressHelper("data-hook"); private angularComponentHelper = new CypressAngularComponentHelper(); private componentProperties: Partial = {}; diff --git a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts index 3f97ffa0..2e4b5e82 100644 --- a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts +++ b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts @@ -4,7 +4,7 @@ import { html } from "lit"; import { PokemonGoComponent } from "./pokemon-go.component"; export class PokemonGoComponentDriver { - private helper = new CypressHelper(); + private helper = new CypressHelper("data-hook"); private litComponentHelper = new CypressLitComponentHelper(); private props = { onSubmit: (pokemonIndex: string) => {} diff --git a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx index d6ccdd92..955ed42f 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx +++ b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx @@ -4,7 +4,7 @@ import type { Attributes, ReactNode } from "react"; import { IProps, PokemonGoComponent } from "./pokemon-go"; export class PokemonGoComponentDriver { - private helper = new CypressHelper(); + private helper = new CypressHelper("data-hook"); private reactComponentHelper = new CypressReactComponentHelper(); private props: IProps = { From 41657ab73c4b02d72b65b14147987fbd59028c4b Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Tue, 5 Sep 2023 21:36:09 +0300 Subject: [PATCH 26/32] fix typo in test name --- .../src/components/pokemon-go/pokemon-go.spec.cy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts index 65b71cc6..5467a2eb 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts +++ b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts @@ -18,7 +18,7 @@ describe("PokemonGo Component Tests", () => { expect(get.goButton().should("be.enabled")); }); - it("when typing index and submiting should call onSubmit", () => { + it("when typing index and submitting should call onSubmit", () => { when.typePokemonIndex("33"); when.clickGo(); expect(get.onSubmitSpy().should("have.been.calledWith", "33")); From 87803fd72ff7bf64202736e1ad78460ab26e9865 Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Fri, 8 Sep 2023 06:27:14 +0300 Subject: [PATCH 27/32] fix failing integration tests --- .../cypress/integration/pokemon-page.spec.cy.ts | 16 ++++++++-------- .../cypress/integration/pokemon-page.spec.cy.ts | 16 ++++++++-------- .../cypress/integration/pokemon-page.spec.cy.ts | 16 ++++++++-------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 3f22bcd2..71e13535 100644 --- a/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -28,15 +28,15 @@ describe("Pokemon Page integration Tests", () => { it("should disable prev button once showing first pokemon", () => { expect(get.pokemon.prevButton().should("be.disabled")); }); - }); - it("should render correct image", () => { - expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); - }); + it("should render correct image", () => { + expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); + }); - it("should fetch pokemon by index", () => { - when.pokemon.pokemonGo.typePokemonIndex("78"); - when.pokemon.pokemonGo.clickGo(); - expect(get.pokemon.fetchPokemonQueryParams().should("include", { offset: "77" })); + it("should fetch pokemon by index", () => { + when.pokemon.pokemonGo.typePokemonIndex("78"); + when.pokemon.pokemonGo.clickGo(); + expect(get.pokemon.fetchPokemonQueryParams().should("include", { offset: "77" })); + }); }); }); diff --git a/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 3f22bcd2..71e13535 100644 --- a/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -28,15 +28,15 @@ describe("Pokemon Page integration Tests", () => { it("should disable prev button once showing first pokemon", () => { expect(get.pokemon.prevButton().should("be.disabled")); }); - }); - it("should render correct image", () => { - expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); - }); + it("should render correct image", () => { + expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); + }); - it("should fetch pokemon by index", () => { - when.pokemon.pokemonGo.typePokemonIndex("78"); - when.pokemon.pokemonGo.clickGo(); - expect(get.pokemon.fetchPokemonQueryParams().should("include", { offset: "77" })); + it("should fetch pokemon by index", () => { + when.pokemon.pokemonGo.typePokemonIndex("78"); + when.pokemon.pokemonGo.clickGo(); + expect(get.pokemon.fetchPokemonQueryParams().should("include", { offset: "77" })); + }); }); }); diff --git a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 3f22bcd2..71e13535 100644 --- a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -28,15 +28,15 @@ describe("Pokemon Page integration Tests", () => { it("should disable prev button once showing first pokemon", () => { expect(get.pokemon.prevButton().should("be.disabled")); }); - }); - it("should render correct image", () => { - expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); - }); + it("should render correct image", () => { + expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); + }); - it("should fetch pokemon by index", () => { - when.pokemon.pokemonGo.typePokemonIndex("78"); - when.pokemon.pokemonGo.clickGo(); - expect(get.pokemon.fetchPokemonQueryParams().should("include", { offset: "77" })); + it("should fetch pokemon by index", () => { + when.pokemon.pokemonGo.typePokemonIndex("78"); + when.pokemon.pokemonGo.clickGo(); + expect(get.pokemon.fetchPokemonQueryParams().should("include", { offset: "77" })); + }); }); }); From 9f320b960837ea6aebf24729ddb613986b2f0731 Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Fri, 6 Oct 2023 06:59:23 +0300 Subject: [PATCH 28/32] upgrade to new helper --- .../app/components/pokemon-go/pokemon-go.component.driver.ts | 2 +- .../src/components/pokemon-go/pokemon-go.component.driver.ts | 2 +- .../src/components/pokemon-go/pokemon-go.driver.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts index 5cfb5224..0eed78ef 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.driver.ts @@ -5,7 +5,7 @@ import { MountConfig } from "cypress/angular"; import { PokemonGoComponent } from "./pokemon-go.component"; export class PokemonGoComponentDriver { - private helper = new CypressHelper("data-hook"); + private helper = new CypressHelper({ defaultDataAttribute: "data-hook" }); private angularComponentHelper = new CypressAngularComponentHelper(); private componentProperties: Partial = {}; diff --git a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts index 2e4b5e82..d4164b6c 100644 --- a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts +++ b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.driver.ts @@ -4,7 +4,7 @@ import { html } from "lit"; import { PokemonGoComponent } from "./pokemon-go.component"; export class PokemonGoComponentDriver { - private helper = new CypressHelper("data-hook"); + private helper = new CypressHelper({ defaultDataAttribute: "data-hook" }); private litComponentHelper = new CypressLitComponentHelper(); private props = { onSubmit: (pokemonIndex: string) => {} diff --git a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx index 955ed42f..4181f837 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx +++ b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.driver.tsx @@ -4,7 +4,7 @@ import type { Attributes, ReactNode } from "react"; import { IProps, PokemonGoComponent } from "./pokemon-go"; export class PokemonGoComponentDriver { - private helper = new CypressHelper("data-hook"); + private helper = new CypressHelper({ defaultDataAttribute: "data-hook" }); private reactComponentHelper = new CypressReactComponentHelper(); private props: IProps = { From 1ec7f20fa0c1e6bed16c76840009edec79310df9 Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Fri, 12 Jan 2024 18:21:47 +0200 Subject: [PATCH 29/32] use asseratble --- .../cypress/e2e/pokemon-page.spec.cy.ts | 10 ++++---- .../integration/pokemon-page.spec.cy.ts | 4 ++-- .../pokemon-go.component.spec.cy.ts | 23 ++++++------------- .../cypress/e2e/pokemon-page.spec.cy.ts | 10 ++++---- .../integration/pokemon-page.spec.cy.ts | 4 ++-- .../pokemon-go.component.spec.cy.ts | 21 +++++------------ .../cypress/e2e/pokemon-page.spec.cy.ts | 10 ++++---- .../integration/pokemon-page.spec.cy.ts | 4 ++-- .../pokemon-go/pokemon-go.spec.cy.ts | 12 ++++++---- 9 files changed, 41 insertions(+), 57 deletions(-) diff --git a/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index 8600ff31..1daf22e2 100644 --- a/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/angular/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -84,19 +84,19 @@ describe("Pokemon e2e", () => { }); it("should update index", () => { - expect(get.pokemon.countText().should("include", "25 of")); + then(get.pokemon.countText()).shouldStartWith("25 of"); }); it("should update pokemon image", () => { - expect(get.pokemon.image.pictureSrc().should("include", "25.gif")); + then(get.pokemon.image.pictureSrc()).shouldEndWith("/25.gif"); }); it("prev button should be enabled", () => { - expect(get.pokemon.prevButton().should("be.enabled")); + then(get.pokemon.prevButton()).shouldBeEnabled(); }); it("should render pokemon name", () => { - expect(get.elementByText("pikachu")).to.exist; + then(get.elementByText("pikachu")).shouldExist(); }); }); @@ -108,7 +108,7 @@ describe("Pokemon e2e", () => { when.pokemon.pokemonGo.typePokemonIndex("33"); when.pokemon.pokemonGo.clickGo(); when.waitUntil(() => get.elementByText("nidorino")); - expect(get.pokemon.image.pictureSrc().should("include", "/33.gif")); + then(get.pokemon.image.pictureSrc()).shouldEndWith("/33.gif"); }); }); }); diff --git a/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 0883cad7..dbec12cc 100644 --- a/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/angular/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -31,13 +31,13 @@ describe("Pokemon Page integration Tests", () => { }); it("should render correct image", () => { - expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); + then(get.pokemon.image.pictureSrc()).shouldEndWith("/1.gif"); }); it("should fetch pokemon by index", () => { when.pokemon.pokemonGo.typePokemonIndex("78"); when.pokemon.pokemonGo.clickGo(); - expect(get.pokemon.fetchPokemonQueryParams().should("include", { offset: "77" })); + then(get.pokemon.fetchPokemonQueryParams()).shouldInclude({ offset: "77" }); }); }); }); diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts index e3e187ca..7234461d 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts @@ -1,4 +1,5 @@ import { FormsModule } from "@angular/forms"; +import { then } from "@shellygo/cypress-test-utils/assertable"; import { PokemonGoComponent } from "./pokemon-go.component"; import { PokemonGoComponentDriver } from "./pokemon-go.component.driver"; @@ -14,34 +15,24 @@ describe("PokemonGo Component Tests", () => { beforeEach(() => { when.render(PokemonGoComponent, testConfig); }); + it("Go button should be disabled", () => { - expect(get.goButton().should("be.disabled")); + then(get.goButton()).shouldBeDisabled(); }); it("when typing index Go button should be enabled", () => { when.typePokemonIndex("33"); - expect(get.goButton().should("be.enabled")); - }); - - it("When input filled should have input value", () => { - when.typePokemonIndex("42"); - expect(get.pokemonIndexInputValue().should("eq", "42")); - }); - - it("When input and clicked go should fetch pokemon by index", () => { - when.typePokemonIndex("12"); - when.clickGo(); - expect(get.selectedPokemonSpy().should("have.been.calledWith", "12")); + then(get.goButton()).shouldBeEnabled(); }); - it("should clear input when clicking submit", () => { + it("when typing index and submitting should call onSubmit", () => { when.typePokemonIndex("33"); when.clickGo(); - expect(get.pokemonIndexInputValue().should("eq", "")); + then(get.onSubmitSpy()).shouldHaveBeenCalledWith("33"); }); it("should not update input value when typing non digits", () => { when.typePokemonIndex("abcd-"); - expect(get.pokemonIndexInputValue().should("eq", "")); + then(get.pokemonIndexInputValue()).shouldEqual(""); }); }); diff --git a/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index 8600ff31..1daf22e2 100644 --- a/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/lit/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -84,19 +84,19 @@ describe("Pokemon e2e", () => { }); it("should update index", () => { - expect(get.pokemon.countText().should("include", "25 of")); + then(get.pokemon.countText()).shouldStartWith("25 of"); }); it("should update pokemon image", () => { - expect(get.pokemon.image.pictureSrc().should("include", "25.gif")); + then(get.pokemon.image.pictureSrc()).shouldEndWith("/25.gif"); }); it("prev button should be enabled", () => { - expect(get.pokemon.prevButton().should("be.enabled")); + then(get.pokemon.prevButton()).shouldBeEnabled(); }); it("should render pokemon name", () => { - expect(get.elementByText("pikachu")).to.exist; + then(get.elementByText("pikachu")).shouldExist(); }); }); @@ -108,7 +108,7 @@ describe("Pokemon e2e", () => { when.pokemon.pokemonGo.typePokemonIndex("33"); when.pokemon.pokemonGo.clickGo(); when.waitUntil(() => get.elementByText("nidorino")); - expect(get.pokemon.image.pictureSrc().should("include", "/33.gif")); + then(get.pokemon.image.pictureSrc()).shouldEndWith("/33.gif"); }); }); }); diff --git a/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 0883cad7..dbec12cc 100644 --- a/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/lit/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -31,13 +31,13 @@ describe("Pokemon Page integration Tests", () => { }); it("should render correct image", () => { - expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); + then(get.pokemon.image.pictureSrc()).shouldEndWith("/1.gif"); }); it("should fetch pokemon by index", () => { when.pokemon.pokemonGo.typePokemonIndex("78"); when.pokemon.pokemonGo.clickGo(); - expect(get.pokemon.fetchPokemonQueryParams().should("include", { offset: "77" })); + then(get.pokemon.fetchPokemonQueryParams()).shouldInclude({ offset: "77" }); }); }); }); diff --git a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts index ca793cae..8b756110 100644 --- a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts +++ b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts @@ -1,3 +1,4 @@ +import { then } from "@shellygo/cypress-test-utils/assertable"; import { PokemonGoComponent } from "./pokemon-go.component"; import { PokemonGoComponentDriver } from "./pokemon-go.component.driver"; @@ -9,34 +10,24 @@ describe("PokemonGo Component Tests", () => { given.onSubmitSpy(); when.render(new PokemonGoComponent()); }); + it("Go button should be disabled", () => { - expect(get.goButton().should("be.disabled")); + then(get.goButton()).shouldBeDisabled(); }); it("when typing index Go button should be enabled", () => { when.typePokemonIndex("33"); - expect(get.goButton().should("be.enabled")); - }); - - it("When input filled should have input value", () => { - when.typePokemonIndex("42"); - expect(get.pokemonIndexInputValue().should("eq", "42")); + then(get.goButton()).shouldBeEnabled(); }); it("when typing index and submitting should call onSubmit", () => { when.typePokemonIndex("33"); when.clickGo(); - expect(get.onSubmitSpy().should("have.been.calledWith", "33")); - }); - - it("should clear input when clicking submit", () => { - when.typePokemonIndex("33"); - when.clickGo(); - expect(get.pokemonIndexInputValue().should("eq", "")); + then(get.onSubmitSpy()).shouldHaveBeenCalledWith("33"); }); it("should not update input value when typing non digits", () => { when.typePokemonIndex("abcd-"); - expect(get.pokemonIndexInputValue().should("eq", "")); + then(get.pokemonIndexInputValue()).shouldEqual(""); }); }); diff --git a/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts index 8600ff31..1daf22e2 100644 --- a/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/e2e/pokemon-page.spec.cy.ts @@ -84,19 +84,19 @@ describe("Pokemon e2e", () => { }); it("should update index", () => { - expect(get.pokemon.countText().should("include", "25 of")); + then(get.pokemon.countText()).shouldStartWith("25 of"); }); it("should update pokemon image", () => { - expect(get.pokemon.image.pictureSrc().should("include", "25.gif")); + then(get.pokemon.image.pictureSrc()).shouldEndWith("/25.gif"); }); it("prev button should be enabled", () => { - expect(get.pokemon.prevButton().should("be.enabled")); + then(get.pokemon.prevButton()).shouldBeEnabled(); }); it("should render pokemon name", () => { - expect(get.elementByText("pikachu")).to.exist; + then(get.elementByText("pikachu")).shouldExist(); }); }); @@ -108,7 +108,7 @@ describe("Pokemon e2e", () => { when.pokemon.pokemonGo.typePokemonIndex("33"); when.pokemon.pokemonGo.clickGo(); when.waitUntil(() => get.elementByText("nidorino")); - expect(get.pokemon.image.pictureSrc().should("include", "/33.gif")); + then(get.pokemon.image.pictureSrc()).shouldEndWith("/33.gif"); }); }); }); diff --git a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts index 0883cad7..dbec12cc 100644 --- a/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts +++ b/examples/react/pokemon-catalog/cypress/integration/pokemon-page.spec.cy.ts @@ -31,13 +31,13 @@ describe("Pokemon Page integration Tests", () => { }); it("should render correct image", () => { - expect(get.pokemon.image.pictureSrc().should("include", "1.gif")); + then(get.pokemon.image.pictureSrc()).shouldEndWith("/1.gif"); }); it("should fetch pokemon by index", () => { when.pokemon.pokemonGo.typePokemonIndex("78"); when.pokemon.pokemonGo.clickGo(); - expect(get.pokemon.fetchPokemonQueryParams().should("include", { offset: "77" })); + then(get.pokemon.fetchPokemonQueryParams()).shouldInclude({ offset: "77" }); }); }); }); diff --git a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts index 5467a2eb..6954c8b6 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts +++ b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts @@ -1,3 +1,4 @@ +import { then } from "@shellygo/cypress-test-utils/assertable"; import { PokemonGoComponent } from "./pokemon-go"; import { PokemonGoComponentDriver } from "./pokemon-go.driver"; @@ -9,29 +10,30 @@ describe("PokemonGo Component Tests", () => { given.onSubmitSpy(); when.render(PokemonGoComponent); }); + it("Go button should be disabled", () => { - expect(get.goButton().should("be.disabled")); + then(get.goButton()).shouldBeDisabled(); }); it("when typing index Go button should be enabled", () => { when.typePokemonIndex("33"); - expect(get.goButton().should("be.enabled")); + then(get.goButton()).shouldBeEnabled(); }); it("when typing index and submitting should call onSubmit", () => { when.typePokemonIndex("33"); when.clickGo(); - expect(get.onSubmitSpy().should("have.been.calledWith", "33")); + then(get.onSubmitSpy()).shouldHaveBeenCalledWith("33"); }); it("should not update input value when typing non digits", () => { when.typePokemonIndex("abcd-"); - expect(get.pokemonIndexInputValue().should("eq", "")); + then(get.pokemonIndexInputValue()).shouldEqual(""); }); it("should clear input when clicking submit", () => { when.typePokemonIndex("33"); when.clickGo(); - expect(get.pokemonIndexInputValue().should("eq", "")); + then(get.pokemonIndexInputValue()).shouldEqual(""); }); }); From b48b3bde6e95897d7c1fe44b1059bcad514eba0e Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Fri, 12 Jan 2024 19:01:19 +0200 Subject: [PATCH 30/32] restore tests --- .../pokemon-go/pokemon-go.component.spec.cy.ts | 16 +++++++++++++--- .../pokemon-go/pokemon-go.component.spec.cy.ts | 11 +++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts index 7234461d..ef644be7 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts @@ -15,7 +15,6 @@ describe("PokemonGo Component Tests", () => { beforeEach(() => { when.render(PokemonGoComponent, testConfig); }); - it("Go button should be disabled", () => { then(get.goButton()).shouldBeDisabled(); }); @@ -25,10 +24,21 @@ describe("PokemonGo Component Tests", () => { then(get.goButton()).shouldBeEnabled(); }); - it("when typing index and submitting should call onSubmit", () => { + it("When input filled should have input value", () => { + when.typePokemonIndex("42"); + then(get.pokemonIndexInputValue()).shouldEqual("42"); + }); + + it("When input and clicked go should fetch pokemon by index", () => { + when.typePokemonIndex("12"); + when.clickGo(); + then(get.selectedPokemonSpy()).shouldHaveBeenCalledWith("12"); + }); + + it("should clear input when clicking submit", () => { when.typePokemonIndex("33"); when.clickGo(); - then(get.onSubmitSpy()).shouldHaveBeenCalledWith("33"); + then(get.pokemonIndexInputValue()).shouldEqual(""); }); it("should not update input value when typing non digits", () => { diff --git a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts index 8b756110..7ab5d6d9 100644 --- a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts +++ b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts @@ -20,12 +20,23 @@ describe("PokemonGo Component Tests", () => { then(get.goButton()).shouldBeEnabled(); }); + it("When input filled should have input value", () => { + when.typePokemonIndex("42"); + then(get.pokemonIndexInputValue()).shouldEqual("42"); + }); + it("when typing index and submitting should call onSubmit", () => { when.typePokemonIndex("33"); when.clickGo(); then(get.onSubmitSpy()).shouldHaveBeenCalledWith("33"); }); + it("should clear input when clicking submit", () => { + when.typePokemonIndex("33"); + when.clickGo(); + then(get.pokemonIndexInputValue()).shouldEqual(""); + }); + it("should not update input value when typing non digits", () => { when.typePokemonIndex("abcd-"); then(get.pokemonIndexInputValue()).shouldEqual(""); From 7d4b06b2ebe92461fbc6d095dc2f0946cd6ff199 Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Mon, 29 Jan 2024 06:30:15 +0200 Subject: [PATCH 31/32] update assertable import path --- .../app/components/pokemon-go/pokemon-go.component.spec.cy.ts | 2 +- .../src/components/pokemon-go/pokemon-go.component.spec.cy.ts | 2 +- .../src/components/pokemon-go/pokemon-go.spec.cy.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts index ef644be7..b79b0303 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-go/pokemon-go.component.spec.cy.ts @@ -1,5 +1,5 @@ import { FormsModule } from "@angular/forms"; -import { then } from "@shellygo/cypress-test-utils/assertable"; +import { then } from "@shellygo/cypress-test-utils"; import { PokemonGoComponent } from "./pokemon-go.component"; import { PokemonGoComponentDriver } from "./pokemon-go.component.driver"; diff --git a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts index 7ab5d6d9..118d5c69 100644 --- a/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts +++ b/examples/lit/pokemon-catalog/src/components/pokemon-go/pokemon-go.component.spec.cy.ts @@ -1,4 +1,4 @@ -import { then } from "@shellygo/cypress-test-utils/assertable"; +import { then } from "@shellygo/cypress-test-utils"; import { PokemonGoComponent } from "./pokemon-go.component"; import { PokemonGoComponentDriver } from "./pokemon-go.component.driver"; diff --git a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts index 6954c8b6..bff4f179 100644 --- a/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts +++ b/examples/react/pokemon-catalog/src/components/pokemon-go/pokemon-go.spec.cy.ts @@ -1,4 +1,4 @@ -import { then } from "@shellygo/cypress-test-utils/assertable"; +import { then } from "@shellygo/cypress-test-utils"; import { PokemonGoComponent } from "./pokemon-go"; import { PokemonGoComponentDriver } from "./pokemon-go.driver"; From 5c7017195c81268a75fa0f8bfc5ef113cea3e57f Mon Sep 17 00:00:00 2001 From: shelly_goldblit Date: Thu, 15 Feb 2024 07:48:58 +0200 Subject: [PATCH 32/32] add missing declaration --- .../pokemon-catalog/pokemon-catalog.component.spec.cy.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/angular/pokemon-catalog/src/app/components/pokemon-catalog/pokemon-catalog.component.spec.cy.ts b/examples/angular/pokemon-catalog/src/app/components/pokemon-catalog/pokemon-catalog.component.spec.cy.ts index 82d6264f..0b334d5b 100644 --- a/examples/angular/pokemon-catalog/src/app/components/pokemon-catalog/pokemon-catalog.component.spec.cy.ts +++ b/examples/angular/pokemon-catalog/src/app/components/pokemon-catalog/pokemon-catalog.component.spec.cy.ts @@ -1,3 +1,4 @@ +import { PokemonGoComponent } from "@components/pokemon-go/pokemon-go.component"; import { PokemonList, PokemonService } from "@services/pokemon.service"; import { then } from "@shellygo/cypress-test-utils"; import { Builder } from "builder-pattern"; @@ -11,7 +12,7 @@ describe("PokemonCatalogComponent Tests", () => { const { when, given, get, beforeAndAfter } = new PokemonCatalogComponentDriver(); const testConfig = { - declarations: [PokemonCatalog, PokemonImageComponent], + declarations: [PokemonCatalog, PokemonImageComponent, PokemonGoComponent], providers: [ { provide: PokemonService,