From 750a6fbfa3bf7a67cad85a2c3100187a3bcd7289 Mon Sep 17 00:00:00 2001 From: Satyajit Sahoo Date: Sat, 9 Mar 2024 16:18:02 +0100 Subject: [PATCH] chore: use dev server when running playwright tests locally (#11879) --- .github/workflows/ci.yml | 4 +- CONTRIBUTING.md | 18 +- example/.gitignore | 6 +- example/e2e/config/setup-server.ts | 18 -- example/e2e/config/teardown-server.ts | 6 - example/e2e/playwright.config.ts | 39 ++++- example/e2e/tests/Link.test.ts | 2 +- example/e2e/tests/index.test.ts | 2 +- example/package.json | 8 +- yarn.lock | 240 +------------------------- 10 files changed, 59 insertions(+), 284 deletions(-) delete mode 100644 example/e2e/config/setup-server.ts delete mode 100644 example/e2e/config/teardown-server.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e4fd7cc63..4d513c2c4d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -78,10 +78,10 @@ jobs: - name: Build example for web run: | npm install -g sharp-cli@^2.1.0 - yarn example web:export + yarn example expo export:web - name: Run integration tests - run: yarn example test:e2e + run: yarn example test build: runs-on: ubuntu-latest diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9461c86ee4..89b0484d9d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -45,22 +45,28 @@ Remember to add tests for your change if possible. Run the unit tests by: yarn test ``` -Running the e2e tests with Playwright requires building the [example app](/example/) for web: +Before running tests configure Playwright with: ```sh -yarn example expo export:web +npx playwright install ``` -Before running tests configure Playwright with: +Run the e2e tests by: ```sh -npx playwright install +yarn example test --ui ``` -Run the e2e tests by: +By default, this will use the local dev server for the app. If you want to test a production build, first build the [example app](/example/) for web: + +```sh +yarn example expo export:web +``` + +Then run the tests with the `CI` environment variable: ```sh -yarn example test:e2e +CI=1 yarn example test ``` ### Commit message convention diff --git a/example/.gitignore b/example/.gitignore index 8c93df4cc0..a655e34e19 100644 --- a/example/.gitignore +++ b/example/.gitignore @@ -5,6 +5,10 @@ ios/Pods ios android +# Playwright +playwright-report/ +test-results/ + # @generated expo-cli sync-e7dcf75f4e856f7b6f3239b3f3a7dd614ee755a8 # The following patterns were generated by expo-cli @@ -64,4 +68,4 @@ buck-out/ web-build/ dist/ -# @end expo-cli \ No newline at end of file +# @end expo-cli diff --git a/example/e2e/config/setup-server.ts b/example/e2e/config/setup-server.ts deleted file mode 100644 index 87108931ae..0000000000 --- a/example/e2e/config/setup-server.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { setup } from 'jest-dev-server'; - -export default async function () { - // @ts-expect-error this is specific to jest-dev-server - globalThis.servers = await setup([ - { - command: - 'yarn serve --no-port-switching --single --listen 3579 web-build', - launchTimeout: 50000, - port: 3579, - }, - { - command: 'yarn server', - launchTimeout: 50000, - port: 3275, - }, - ]); -} diff --git a/example/e2e/config/teardown-server.ts b/example/e2e/config/teardown-server.ts deleted file mode 100644 index 6b006f775e..0000000000 --- a/example/e2e/config/teardown-server.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { teardown } from 'jest-dev-server'; - -export default async function () { - // @ts-expect-error this is specific to jest-dev-server - await teardown(globalThis.servers); -} diff --git a/example/e2e/playwright.config.ts b/example/e2e/playwright.config.ts index 3592355dd8..f8a251df19 100644 --- a/example/e2e/playwright.config.ts +++ b/example/e2e/playwright.config.ts @@ -1,12 +1,14 @@ -import type { PlaywrightTestConfig } from '@playwright/test'; +import { defineConfig } from '@playwright/test'; import path from 'path'; -const config: PlaywrightTestConfig = { +const PORT = process.env.CI ? 3579 : 19006; + +export default defineConfig({ testDir: path.join(__dirname, 'tests'), - globalSetup: require.resolve('./config/setup-server.ts'), - globalTeardown: require.resolve('./config/teardown-server.ts'), - workers: 1, - reporter: 'list', + fullyParallel: true, + forbidOnly: !!process.env.CI, + retries: process.env.CI ? 2 : 0, + workers: process.env.CI ? 1 : undefined, projects: [ { name: 'Chromium', @@ -17,6 +19,25 @@ const config: PlaywrightTestConfig = { use: { browserName: 'firefox' }, }, ], -}; - -export default config; + use: { + baseURL: `http://127.0.0.1:${PORT}`, + trace: 'on-first-retry', + }, + webServer: [ + { + cwd: path.join(__dirname, '..'), + command: process.env.CI + ? `yarn serve --no-port-switching --single --listen ${PORT} web-build` + : `yarn start --web --port 19000`, + url: `http://127.0.0.1:${PORT}`, + timeout: 120 * 1000, + reuseExistingServer: !process.env.CI, + }, + { + command: 'yarn server', + url: 'http://127.0.0.1:3275', + timeout: 120 * 1000, + reuseExistingServer: !process.env.CI, + }, + ], +}); diff --git a/example/e2e/tests/Link.test.ts b/example/e2e/tests/Link.test.ts index 42efcb06e8..4f216ed1ce 100644 --- a/example/e2e/tests/Link.test.ts +++ b/example/e2e/tests/Link.test.ts @@ -1,7 +1,7 @@ import { expect, test } from '@playwright/test'; test.beforeEach(async ({ page }) => { - await page.goto('http://localhost:3579'); + await page.goto('/'); await page.getByText('').click(); }); diff --git a/example/e2e/tests/index.test.ts b/example/e2e/tests/index.test.ts index 3f44971c8a..9cb1522174 100644 --- a/example/e2e/tests/index.test.ts +++ b/example/e2e/tests/index.test.ts @@ -1,7 +1,7 @@ import { expect, test } from '@playwright/test'; test.beforeEach(async ({ page }) => { - await page.goto('http://localhost:3579'); + await page.goto('/'); }); test('loads the example app', async ({ page }) => { diff --git a/example/package.json b/example/package.json index 44c57fef3d..56d529562c 100644 --- a/example/package.json +++ b/example/package.json @@ -5,12 +5,8 @@ "private": true, "scripts": { "start": "expo start", - "web": "expo start --web", - "web:export": "expo export:web", - "android": "expo run:android", - "ios": "expo run:ios", "server": "nodemon -e '.js,.ts,.tsx' --exec \"babel-node -i '/node_modules[/\\](?react-native)/' -x '.web.tsx,.web.ts,.web.js,.tsx,.ts,.js' --config-file ./server/babel.config.js server\"", - "test:e2e": "npx playwright test --config=e2e/playwright.config.ts" + "test": "npx playwright test --config=e2e/playwright.config.ts" }, "dependencies": { "@expo/react-native-action-sheet": "^4.0.1", @@ -44,7 +40,6 @@ "@expo/webpack-config": "~19.0.1", "@playwright/test": "^1.41.1", "@types/cheerio": "^0.22.35", - "@types/jest-dev-server": "^5.0.3", "@types/koa": "^2.14.0", "@types/mock-require": "^2.0.3", "@types/react": "~18.2.45", @@ -54,7 +49,6 @@ "babel-preset-expo": "^10.0.1", "cheerio": "^1.0.0-rc.12", "expect-type": "^0.17.3", - "jest-dev-server": "^9.0.2", "mock-require": "^3.0.3", "mock-require-assets": "^0.0.3", "nodemon": "^3.0.3", diff --git a/yarn.lock b/yarn.lock index f5b81c8c0f..e13cd943c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2682,14 +2682,14 @@ __metadata: languageName: node linkType: hard -"@hapi/hoek@npm:^9.0.0, @hapi/hoek@npm:^9.3.0": +"@hapi/hoek@npm:^9.0.0": version: 9.3.0 resolution: "@hapi/hoek@npm:9.3.0" checksum: ad83a223787749f3873bce42bd32a9a19673765bf3edece0a427e138859ff729469e68d5fdf9ff6bbee6fb0c8e21bab61415afa4584f527cfc40b59ea1957e70 languageName: node linkType: hard -"@hapi/topo@npm:^5.0.0, @hapi/topo@npm:^5.1.0": +"@hapi/topo@npm:^5.0.0": version: 5.1.0 resolution: "@hapi/topo@npm:5.1.0" dependencies: @@ -4210,7 +4210,6 @@ __metadata: "@react-native-async-storage/async-storage": "npm:1.21.0" "@react-native-masked-view/masked-view": "npm:0.3.0" "@types/cheerio": "npm:^0.22.35" - "@types/jest-dev-server": "npm:^5.0.3" "@types/koa": "npm:^2.14.0" "@types/mock-require": "npm:^2.0.3" "@types/react": "npm:~18.2.45" @@ -4228,7 +4227,6 @@ __metadata: expo-splash-screen: "npm:~0.26.3" expo-status-bar: "npm:~1.11.1" expo-updates: "npm:~0.24.8" - jest-dev-server: "npm:^9.0.2" koa: "npm:^2.15.0" mock-require: "npm:^3.0.3" mock-require-assets: "npm:^0.0.3" @@ -4370,7 +4368,7 @@ __metadata: languageName: node linkType: hard -"@sideway/address@npm:^4.1.3, @sideway/address@npm:^4.1.4": +"@sideway/address@npm:^4.1.3": version: 4.1.4 resolution: "@sideway/address@npm:4.1.4" dependencies: @@ -4851,16 +4849,6 @@ __metadata: languageName: node linkType: hard -"@types/jest-dev-server@npm:^5.0.3": - version: 5.0.3 - resolution: "@types/jest-dev-server@npm:5.0.3" - dependencies: - "@types/node": "npm:*" - "@types/wait-on": "npm:*" - checksum: 53092c037a854fd6683feb80709fbb687cc2ce811f50476ebccc69789831b92217c863168d9beb575a4643e98ff855dab5fc06b7d94c7bc70b79f4b022dc104e - languageName: node - linkType: hard - "@types/jest@npm:^29.5.11": version: 29.5.11 resolution: "@types/jest@npm:29.5.11" @@ -5137,15 +5125,6 @@ __metadata: languageName: node linkType: hard -"@types/wait-on@npm:*": - version: 5.3.3 - resolution: "@types/wait-on@npm:5.3.3" - dependencies: - "@types/node": "npm:*" - checksum: e2f15dfc43145bf1b61f83b27edbffe2c1e8c4fd3ac6f4fc2b813b4824c25892707673fb8e35de659e422ab58eed79c4bc11e48f98e0101126ef521f220eeeaf - languageName: node - linkType: hard - "@types/ws@npm:^8.5.5": version: 8.5.8 resolution: "@types/ws@npm:8.5.8" @@ -6221,17 +6200,6 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.6.1": - version: 1.6.5 - resolution: "axios@npm:1.6.5" - dependencies: - follow-redirects: "npm:^1.15.4" - form-data: "npm:^4.0.0" - proxy-from-env: "npm:^1.1.0" - checksum: 465489d9bf8f039b9adbc8103b6299d6a5e26de77b27f0e4173d814d39bca8f4b4659d94e09ee40461aedccd8c2452f1e2b3edace1c9f81220060d2974ff9dc7 - languageName: node - linkType: hard - "babel-core@npm:^7.0.0-bridge.0": version: 7.0.0-bridge.0 resolution: "babel-core@npm:7.0.0-bridge.0" @@ -7494,13 +7462,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^5.1.0": - version: 5.1.0 - resolution: "commander@npm:5.1.0" - checksum: 3e2ef5c003c5179250161e42ce6d48e0e69a54af970c65b7f985c70095240c260fd647453efd4c2c5a31b30ce468f373dc70f769c2f54a2c014abc4792aaca28 - languageName: node - linkType: hard - "commander@npm:^7.2.0": version: 7.2.0 resolution: "commander@npm:7.2.0" @@ -8161,16 +8122,6 @@ __metadata: languageName: node linkType: hard -"cwd@npm:^0.10.0": - version: 0.10.0 - resolution: "cwd@npm:0.10.0" - dependencies: - find-pkg: "npm:^0.1.2" - fs-exists-sync: "npm:^0.1.0" - checksum: fdb2d1e8e1317e488bf0b7e569a17f929a45c4f2e706820c843a6be460cf8b334c43ac22c22c58c4f6258e501904ec1d1558d67c345002268fb40e3419f909da - languageName: node - linkType: hard - "dag-map@npm:~1.0.0": version: 1.0.2 resolution: "dag-map@npm:1.0.2" @@ -9603,15 +9554,6 @@ __metadata: languageName: node linkType: hard -"expand-tilde@npm:^1.2.2": - version: 1.2.2 - resolution: "expand-tilde@npm:1.2.2" - dependencies: - os-homedir: "npm:^1.0.1" - checksum: 18051cd104977bc06e2bb1347db9959b90504437beea0de6fd287a3c8c58b41e2330337bd189cfca2ee4be6bda9bf045f8c07daf23e622f85eb6ee1c420619a0 - languageName: node - linkType: hard - "expect-type@npm:^0.17.3": version: 0.17.3 resolution: "expect-type@npm:0.17.3" @@ -10185,38 +10127,6 @@ __metadata: languageName: node linkType: hard -"find-file-up@npm:^0.1.2": - version: 0.1.3 - resolution: "find-file-up@npm:0.1.3" - dependencies: - fs-exists-sync: "npm:^0.1.0" - resolve-dir: "npm:^0.1.0" - checksum: 95475fee7b727266ec65312527c580eb4f01884592620296cf7859e72cce7f4f6a667c964ad6feeec53fb72a7c3991805532ed7a53d8224e9a1ccd88479cabce - languageName: node - linkType: hard - -"find-pkg@npm:^0.1.2": - version: 0.1.2 - resolution: "find-pkg@npm:0.1.2" - dependencies: - find-file-up: "npm:^0.1.2" - checksum: cd797bfa7dd419849559312cdd3aec767c39939e552daa92e53ff6b61108f331eb2c800d20a5973631eb894ea36c13dded01a868b10f457a685e0ae87a1746e1 - languageName: node - linkType: hard - -"find-process@npm:^1.4.7": - version: 1.4.7 - resolution: "find-process@npm:1.4.7" - dependencies: - chalk: "npm:^4.0.0" - commander: "npm:^5.1.0" - debug: "npm:^4.1.1" - bin: - find-process: bin/find-process.js - checksum: 406d70f279e6b2140628d443c43cd8fbbfc32a6abfbb832bce23b3b85ba229ecefaaf1944687f3b559845cf21352197b1121e0646729f4ff70fa8374063cef34 - languageName: node - linkType: hard - "find-up@npm:^3.0.0": version: 3.0.0 resolution: "find-up@npm:3.0.0" @@ -10321,16 +10231,6 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.15.4": - version: 1.15.5 - resolution: "follow-redirects@npm:1.15.5" - peerDependenciesMeta: - debug: - optional: true - checksum: d467f13c1c6aa734599b8b369cd7a625b20081af358f6204ff515f6f4116eb440de9c4e0c49f10798eeb0df26c95dd05d5e0d9ddc5786ab1a8a8abefe92929b4 - languageName: node - linkType: hard - "fontfaceobserver@npm:^2.1.0": version: 2.3.0 resolution: "fontfaceobserver@npm:2.3.0" @@ -10368,17 +10268,6 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^4.0.0": - version: 4.0.0 - resolution: "form-data@npm:4.0.0" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.8" - mime-types: "npm:^2.1.12" - checksum: 7264aa760a8cf09482816d8300f1b6e2423de1b02bba612a136857413fdc96d7178298ced106817655facc6b89036c6e12ae31c9eb5bdc16aabf502ae8a5d805 - languageName: node - linkType: hard - "formdata-polyfill@npm:^4.0.10": version: 4.0.10 resolution: "formdata-polyfill@npm:4.0.10" @@ -10409,13 +10298,6 @@ __metadata: languageName: node linkType: hard -"fs-exists-sync@npm:^0.1.0": - version: 0.1.0 - resolution: "fs-exists-sync@npm:0.1.0" - checksum: 850a0d6e4c03a7bd2fd25043f77cd9d6be9c3b48bb99308bcfe9c94f3f92f65f2cd3fa036e13a1b0ba7a46d2e58792f53e578f01d75fbdcd56baeb9eed63b705 - languageName: node - linkType: hard - "fs-extra@npm:9.0.0": version: 9.0.0 resolution: "fs-extra@npm:9.0.0" @@ -10859,28 +10741,6 @@ __metadata: languageName: node linkType: hard -"global-modules@npm:^0.2.3": - version: 0.2.3 - resolution: "global-modules@npm:0.2.3" - dependencies: - global-prefix: "npm:^0.1.4" - is-windows: "npm:^0.2.0" - checksum: 3801788df54897d994c9c8f3d09f253d1379cd879ae61fcddbcc3ecdfdf6fe23a1edb983e8d4dd24cebf7e49823752e1cd29a2d33bdb4de587de8b4a85b17e24 - languageName: node - linkType: hard - -"global-prefix@npm:^0.1.4": - version: 0.1.5 - resolution: "global-prefix@npm:0.1.5" - dependencies: - homedir-polyfill: "npm:^1.0.0" - ini: "npm:^1.3.4" - is-windows: "npm:^0.2.0" - which: "npm:^1.2.12" - checksum: ea1b818a1851655ebb2341cdd5446da81c25f31ca6f0ac358a234cbed5442edc1bfa5628771466988d67d9fcc6ad09ca0e68a8d3d7e3d92f7de3aec87020e183 - languageName: node - linkType: hard - "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" @@ -11175,7 +11035,7 @@ __metadata: languageName: node linkType: hard -"homedir-polyfill@npm:^1.0.0, homedir-polyfill@npm:^1.0.1": +"homedir-polyfill@npm:^1.0.1": version: 1.0.3 resolution: "homedir-polyfill@npm:1.0.3" dependencies: @@ -12331,13 +12191,6 @@ __metadata: languageName: node linkType: hard -"is-windows@npm:^0.2.0": - version: 0.2.0 - resolution: "is-windows@npm:0.2.0" - checksum: 3df25afda2fd9f3926b08cebacf1fc0a1fe7805a2cb73ef0f1b911c949e4e7648c4623979d74b4502bdd9af69471101eb6051b751595f7f88569148186cf7a7a - languageName: node - linkType: hard - "is-windows@npm:^1.0.1": version: 1.0.2 resolution: "is-windows@npm:1.0.2" @@ -12597,21 +12450,6 @@ __metadata: languageName: node linkType: hard -"jest-dev-server@npm:^9.0.2": - version: 9.0.2 - resolution: "jest-dev-server@npm:9.0.2" - dependencies: - chalk: "npm:^4.1.2" - cwd: "npm:^0.10.0" - find-process: "npm:^1.4.7" - prompts: "npm:^2.4.2" - spawnd: "npm:^9.0.2" - tree-kill: "npm:^1.2.2" - wait-on: "npm:^7.2.0" - checksum: 27e4efa7fb13809f7734848b7007795d2ce1a0b3e6152bc3c1d892af9eae5831eecfcd0aa4700ad5299b2d4eed2e9fabc24f51c2a2a7e00e441508332375b159 - languageName: node - linkType: hard - "jest-diff@npm:^29.7.0": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -12975,19 +12813,6 @@ __metadata: languageName: node linkType: hard -"joi@npm:^17.11.0": - version: 17.12.0 - resolution: "joi@npm:17.12.0" - dependencies: - "@hapi/hoek": "npm:^9.3.0" - "@hapi/topo": "npm:^5.1.0" - "@sideway/address": "npm:^4.1.4" - "@sideway/formula": "npm:^3.0.1" - "@sideway/pinpoint": "npm:^2.0.0" - checksum: bedb7bcadd7c6d9d4852f5f37e5951f2453830420bcf77ec62f4a2d61af335254aa327888fd08f572cb2675ad3598cf87d57927334b7c7dcd48b9e60839524ae - languageName: node - linkType: hard - "joi@npm:^17.2.1": version: 17.11.0 resolution: "joi@npm:17.11.0" @@ -14467,7 +14292,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8": +"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 908491b6cc15a6c440ba5b22780a0ba89b9810e1aea684e253e43c4e3b8d56ec1dcdd7ea96dde119c29df59c936cde16062159eae4225c691e19c70b432b6e6f @@ -15484,7 +15309,7 @@ __metadata: languageName: node linkType: hard -"os-homedir@npm:^1.0.0, os-homedir@npm:^1.0.1": +"os-homedir@npm:^1.0.0": version: 1.0.2 resolution: "os-homedir@npm:1.0.2" checksum: af609f5a7ab72de2f6ca9be6d6b91a599777afc122ac5cad47e126c1f67c176fe9b52516b9eeca1ff6ca0ab8587fe66208bc85e40a3940125f03cdb91408e9d2 @@ -16696,13 +16521,6 @@ __metadata: languageName: node linkType: hard -"proxy-from-env@npm:^1.1.0": - version: 1.1.0 - resolution: "proxy-from-env@npm:1.1.0" - checksum: f0bb4a87cfd18f77bc2fba23ae49c3b378fb35143af16cc478171c623eebe181678f09439707ad80081d340d1593cd54a33a0113f3ccb3f4bc9451488780ee23 - languageName: node - linkType: hard - "pstree.remy@npm:^1.1.8": version: 1.1.8 resolution: "pstree.remy@npm:1.1.8" @@ -17560,16 +17378,6 @@ __metadata: languageName: node linkType: hard -"resolve-dir@npm:^0.1.0": - version: 0.1.1 - resolution: "resolve-dir@npm:0.1.1" - dependencies: - expand-tilde: "npm:^1.2.2" - global-modules: "npm:^0.2.3" - checksum: cc3e1885938f8fe9656a6faa651e21730d369260e907b8dd7c847a4aa18db348ac08ee0dbf2d6f87e2ba08715fb109432ec773bbb31698381bd2a48c0ea66072 - languageName: node - linkType: hard - "resolve-from@npm:5.0.0, resolve-from@npm:^5.0.0": version: 5.0.0 resolution: "resolve-from@npm:5.0.0" @@ -18469,16 +18277,6 @@ __metadata: languageName: node linkType: hard -"spawnd@npm:^9.0.2": - version: 9.0.2 - resolution: "spawnd@npm:9.0.2" - dependencies: - signal-exit: "npm:^4.1.0" - tree-kill: "npm:^1.2.2" - checksum: 0791a39533d33ed5f8d43ea04918d9120581c5243b0acf29c6911f02f5094e7db5fe9bb53493cd5059c8cc6a91d0d887cf22a2f5843ea2f9aef9b4422aa8ad99 - languageName: node - linkType: hard - "spdx-correct@npm:^3.0.0": version: 3.2.0 resolution: "spdx-correct@npm:3.2.0" @@ -19324,15 +19122,6 @@ __metadata: languageName: node linkType: hard -"tree-kill@npm:^1.2.2": - version: 1.2.2 - resolution: "tree-kill@npm:1.2.2" - bin: - tree-kill: cli.js - checksum: 49117f5f410d19c84b0464d29afb9642c863bc5ba40fcb9a245d474c6d5cc64d1b177a6e6713129eb346b40aebb9d4631d967517f9fbe8251c35b21b13cd96c7 - languageName: node - linkType: hard - "treeverse@npm:^3.0.0": version: 3.0.0 resolution: "treeverse@npm:3.0.0" @@ -20002,21 +19791,6 @@ __metadata: languageName: node linkType: hard -"wait-on@npm:^7.2.0": - version: 7.2.0 - resolution: "wait-on@npm:7.2.0" - dependencies: - axios: "npm:^1.6.1" - joi: "npm:^17.11.0" - lodash: "npm:^4.17.21" - minimist: "npm:^1.2.8" - rxjs: "npm:^7.8.1" - bin: - wait-on: bin/wait-on - checksum: 00299e3b651c70d7082d02b93d9d4784cbe851914f1674d795d578d4826876193fdc7bee7e9491264b7c2d242ac9fe6e1fd09e1143409f730f13a7ee2da67fff - languageName: node - linkType: hard - "walk-up-path@npm:^3.0.1": version: 3.0.1 resolution: "walk-up-path@npm:3.0.1" @@ -20328,7 +20102,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^1.2.12, which@npm:^1.2.9": +"which@npm:^1.2.9": version: 1.3.1 resolution: "which@npm:1.3.1" dependencies: