diff --git a/.eslintrc-ts.js b/.eslintrc-ts.js index a8798c8..1f41f9c 100644 --- a/.eslintrc-ts.js +++ b/.eslintrc-ts.js @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC module.exports = { extends: [ diff --git a/.eslintrc.js b/.eslintrc.js index 689ec41..fde84cc 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC module.exports = { env: { diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a7fbc3f..840be35 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -8,8 +8,8 @@ on: # Run the pipeline daily so that we get continuous dogfooding. schedule: - # Run at 6pm UTC/10am Pacific - - cron: 0 18 * * * + # Run at 8am UTC/midnight Pacific + - cron: 0 8 * * * # Allows you to run this workflow manually from the Actions tab workflow_dispatch: {} @@ -110,6 +110,7 @@ jobs: if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || needs.check.outputs.affects_cypress == 'true' strategy: fail-fast: false + max-parallel: 16 matrix: node: - 16 @@ -129,6 +130,14 @@ jobs: - "12.17" - "13.0" - "13.1" + - "13.2" + # 13.3.2 introduced a regression that made that version (and 13.3.3) too flaky to test. + # See: + # - https://github.com/cypress-io/cypress/issues/28141 + # - https://github.com/cypress-io/cypress/issues/28148 + #- "13.3" + - "13.4" + - "13.5" steps: - uses: actions/checkout@v4 @@ -167,6 +176,9 @@ jobs: mv package-new.json package.json yarn install --no-immutable + - name: Build test dependencies + run: yarn build:plugins-common && yarn build:test-common && yarn build:cypress-tests + - name: Set Cypress version env: CYPRESS_INSTALL_BINARY: "0" @@ -177,9 +189,6 @@ jobs: - name: Install Cypress binary run: yarn workspace cypress-integration exec cypress install - - name: Build test dependencies - run: yarn build:plugins-common && yarn build:test-common && yarn build:cypress-tests - - name: Test env: # Enable debug logs within the Jest tests that run Cypress. WARNING: these are very @@ -210,13 +219,14 @@ jobs: name: "Cypress ${{ matrix.cypress }} Windows Node ${{ matrix.node }} Integration Tests" runs-on: windows-2019 # Cypress on Windows is slowwww... - timeout-minutes: 90 + timeout-minutes: 180 needs: # Don't incur the cost of the test matrix if the basic build fails. - check if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || needs.check.outputs.affects_cypress == 'true' strategy: fail-fast: false + max-parallel: 16 matrix: node: - 16 @@ -236,6 +246,10 @@ jobs: - "12.17" - "13.0" - "13.1" + - "13.2" + #- "13.3" + - "13.4" + - "13.5" steps: - uses: actions/checkout@v4 @@ -278,6 +292,9 @@ jobs: mv package-new.json package.json yarn install --no-immutable + - name: Build test dependencies + run: yarn build:plugins-common && yarn build:test-common && yarn build:cypress-tests + - name: Set Cypress version env: CYPRESS_INSTALL_BINARY: "0" @@ -288,9 +305,6 @@ jobs: - name: Install Cypress binary run: yarn workspace cypress-integration exec cypress install - - name: Build test dependencies - run: yarn build:plugins-common && yarn build:test-common && yarn build:cypress-tests - - name: Test env: # Enable debug logs within the Jest tests that run Cypress. WARNING: these are very @@ -324,12 +338,14 @@ jobs: if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || needs.check.outputs.affects_jest == 'true' strategy: fail-fast: false + max-parallel: 12 matrix: node: - 16 - 18 - 20 jest: + - "29.7" - "29.6" - "29.5" - "29.4" @@ -440,12 +456,14 @@ jobs: if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || needs.check.outputs.affects_jest == 'true' strategy: fail-fast: false + max-parallel: 12 matrix: node: - 16 - 18 - 20 jest: + - "29.7" - "29.6" - "29.5" - "29.4" diff --git a/.github/workflows/cypress-realworld-app.yaml b/.github/workflows/cypress-realworld-app.yaml index eab82bc..63c169c 100644 --- a/.github/workflows/cypress-realworld-app.yaml +++ b/.github/workflows/cypress-realworld-app.yaml @@ -16,7 +16,7 @@ jobs: timeout-minutes: 15 runs-on: ubuntu-latest container: - image: cypress/browsers:node16.16.0-chrome105-ff104-edge + image: cypress/browsers:node-18.16.0-chrome-114.0.5735.133-1-ff-114.0.2-edge-114.0.1823.51-1 options: --user 1001 steps: - name: Check out latest cypress-io/cypress-realworld-app @@ -62,7 +62,7 @@ jobs: # tarballs. Otherwise, Yarn may install the previously cached version from an earlier build # with the same package version number. run: | - curl -Lo jq https://github.com/jqlang/jq/releases/download/jq-1.6/jq-linux64 + wget -O jq https://github.com/jqlang/jq/releases/download/jq-1.6/jq-linux64 chmod +x jq yarn cache clean @unflakable/js-api diff --git a/LICENSE b/LICENSE index 53bf01b..fc24ed8 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022-2023 Developer Innovations, LLC +Copyright (c) 2022-2024 Developer Innovations, LLC Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/cypress-plugin/cypress-on-fix.d.ts b/packages/cypress-plugin/cypress-on-fix.d.ts new file mode 100644 index 0000000..7d24e1b --- /dev/null +++ b/packages/cypress-plugin/cypress-on-fix.d.ts @@ -0,0 +1,8 @@ +// Copyright (c) 2023-2024 Developer Innovations, LLC + +declare module "cypress-on-fix" { + import * as Cypress from "cypress"; + export default function onProxy( + on: Cypress.PluginEvents + ): Cypress.PluginEvents; +} diff --git a/packages/cypress-plugin/jest.config.js b/packages/cypress-plugin/jest.config.js index d2d9b3c..5ed0700 100644 --- a/packages/cypress-plugin/jest.config.js +++ b/packages/cypress-plugin/jest.config.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC /** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { diff --git a/packages/cypress-plugin/mocha.d.ts b/packages/cypress-plugin/mocha.d.ts index 428fca1..937533b 100644 --- a/packages/cypress-plugin/mocha.d.ts +++ b/packages/cypress-plugin/mocha.d.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC type GlobalError = Error; diff --git a/packages/cypress-plugin/package.json b/packages/cypress-plugin/package.json index 604db86..0cd0dc7 100644 --- a/packages/cypress-plugin/package.json +++ b/packages/cypress-plugin/package.json @@ -52,6 +52,7 @@ "cli-table3": "0.5.1", "cosmiconfig": "^7.0.1", "cypress-multi-reporters": "^1.6.3", + "cypress-on-fix": "^1.0.2", "dayjs": "^1.10.4", "debug": "^4.3.3", "deep-equal": "^2.0.5", diff --git a/packages/cypress-plugin/rollup.config.mjs b/packages/cypress-plugin/rollup.config.mjs index f7b899a..3b6678e 100644 --- a/packages/cypress-plugin/rollup.config.mjs +++ b/packages/cypress-plugin/rollup.config.mjs @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import pluginCommonJs from "@rollup/plugin-commonjs"; import pluginDts from "rollup-plugin-dts"; diff --git a/packages/cypress-plugin/src/.eslintrc.js b/packages/cypress-plugin/src/.eslintrc.js index 62e8179..4070ee2 100644 --- a/packages/cypress-plugin/src/.eslintrc.js +++ b/packages/cypress-plugin/src/.eslintrc.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { extends: ["../../../.eslintrc-ts.js"], diff --git a/packages/cypress-plugin/src/config-env-vars.ts b/packages/cypress-plugin/src/config-env-vars.ts index d9623b1..721480f 100644 --- a/packages/cypress-plugin/src/config-env-vars.ts +++ b/packages/cypress-plugin/src/config-env-vars.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { EnvVar } from "@unflakable/plugins-common"; diff --git a/packages/cypress-plugin/src/config-wrapper-sync.ts b/packages/cypress-plugin/src/config-wrapper-sync.ts index 3b4e983..96b672f 100644 --- a/packages/cypress-plugin/src/config-wrapper-sync.ts +++ b/packages/cypress-plugin/src/config-wrapper-sync.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { wrapCypressConfig } from "./index"; import _debug from "debug"; diff --git a/packages/cypress-plugin/src/config-wrapper.ts b/packages/cypress-plugin/src/config-wrapper.ts index 507c638..8b01fca 100644 --- a/packages/cypress-plugin/src/config-wrapper.ts +++ b/packages/cypress-plugin/src/config-wrapper.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { wrapCypressConfig } from "./index"; import _debug from "debug"; diff --git a/packages/cypress-plugin/src/cypress-env-vars.ts b/packages/cypress-plugin/src/cypress-env-vars.ts index 14c03b0..52f34fd 100644 --- a/packages/cypress-plugin/src/cypress-env-vars.ts +++ b/packages/cypress-plugin/src/cypress-env-vars.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // NB: This file is separate from config-env-vars.ts so that it can be included by skip-tests.ts // without adding any Node.JS dependencies (since that file needs to run in the browser). diff --git a/packages/cypress-plugin/src/index.ts b/packages/cypress-plugin/src/index.ts index 90b54e5..9a7cbdc 100644 --- a/packages/cypress-plugin/src/index.ts +++ b/packages/cypress-plugin/src/index.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import _debug from "debug"; import { @@ -19,6 +19,7 @@ import { ENV_VAR_AUTO_SUPPORT, ENV_VAR_UNFLAKABLE_RESOLVED_CONFIG_JSON, } from "./config-env-vars"; +import cypressOnFix from "cypress-on-fix"; export { PluginOptions }; @@ -100,9 +101,14 @@ const wrapSetupNodeEvents = | undefined ) => async ( - on: Cypress.PluginEvents, + baseOn: Cypress.PluginEvents, config: Cypress.PluginConfigOptions ): Promise => { + // Due to https://github.com/cypress-io/cypress/issues/22428, only the last event handler + // registered for each event type will be called. This means we'll clobber any event handlers + // the user registers. To avoid this, we use cypress-on-fix. + const on = cypressOnFix(baseOn); + const userModifiedConfig = userSetupNodeEvents !== undefined ? await userSetupNodeEvents(on, config) diff --git a/packages/cypress-plugin/src/load-user-config.ts b/packages/cypress-plugin/src/load-user-config.ts index 48a26d1..d56ecc5 100644 --- a/packages/cypress-plugin/src/load-user-config.ts +++ b/packages/cypress-plugin/src/load-user-config.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import _debug from "debug"; import { require } from "./utils"; diff --git a/packages/cypress-plugin/src/main.ts b/packages/cypress-plugin/src/main.ts index ccf5ad2..314509e 100755 --- a/packages/cypress-plugin/src/main.ts +++ b/packages/cypress-plugin/src/main.ts @@ -1,6 +1,6 @@ //#!/usr/bin/env node -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import * as cypress from "cypress"; import _debug from "debug"; diff --git a/packages/cypress-plugin/src/plugin.ts b/packages/cypress-plugin/src/plugin.ts index 158e548..9cf075f 100644 --- a/packages/cypress-plugin/src/plugin.ts +++ b/packages/cypress-plugin/src/plugin.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { createTestSuiteRun, diff --git a/packages/cypress-plugin/src/reporter-common.ts b/packages/cypress-plugin/src/reporter-common.ts index 11d6a62..3b8bbbc 100644 --- a/packages/cypress-plugin/src/reporter-common.ts +++ b/packages/cypress-plugin/src/reporter-common.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Reporter stats from running a single spec. export type ReporterStats = Mocha.Stats & { diff --git a/packages/cypress-plugin/src/reporter-config.test.ts b/packages/cypress-plugin/src/reporter-config.test.ts index 55d40b6..9fe454d 100644 --- a/packages/cypress-plugin/src/reporter-config.test.ts +++ b/packages/cypress-plugin/src/reporter-config.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { configureMochaReporter } from "./reporter-config"; import { QuarantineMode } from "@unflakable/plugins-common"; diff --git a/packages/cypress-plugin/src/reporter-config.ts b/packages/cypress-plugin/src/reporter-config.ts index d8e4951..dfbfbe8 100644 --- a/packages/cypress-plugin/src/reporter-config.ts +++ b/packages/cypress-plugin/src/reporter-config.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { ReporterConfig } from "./reporter"; import { printWarning, require } from "./utils"; diff --git a/packages/cypress-plugin/src/reporter.ts b/packages/cypress-plugin/src/reporter.ts index 3475e69..c1fdddd 100644 --- a/packages/cypress-plugin/src/reporter.ts +++ b/packages/cypress-plugin/src/reporter.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import _debug from "debug"; import { diff --git a/packages/cypress-plugin/src/skip-tests.ts b/packages/cypress-plugin/src/skip-tests.ts index 18531b2..deabbc8 100644 --- a/packages/cypress-plugin/src/skip-tests.ts +++ b/packages/cypress-plugin/src/skip-tests.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // This file runs inside the browser as part of the test code. It gets loaded by a Cypress support // file injected by the plugin when quarantine mode is set to `skip_tests`. diff --git a/packages/cypress-plugin/src/tsconfig.json b/packages/cypress-plugin/src/tsconfig.json index 44badea..80d8585 100644 --- a/packages/cypress-plugin/src/tsconfig.json +++ b/packages/cypress-plugin/src/tsconfig.json @@ -1,4 +1,4 @@ { "extends": "../tsconfig.json", - "include": ["../mocha.d.ts", ".", ".eslintrc.js"] + "include": ["../cypress-on-fix.d.ts", "../mocha.d.ts", ".", ".eslintrc.js"] } diff --git a/packages/cypress-plugin/src/utils.ts b/packages/cypress-plugin/src/utils.ts index 95d5fa7..f2f0bad 100644 --- a/packages/cypress-plugin/src/utils.ts +++ b/packages/cypress-plugin/src/utils.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import chalk from "chalk"; import { readFileSync } from "fs"; diff --git a/packages/cypress-plugin/src/vendored/cli-table3.d.ts b/packages/cypress-plugin/src/vendored/cli-table3.d.ts index 14c7749..f7b1b70 100644 --- a/packages/cypress-plugin/src/vendored/cli-table3.d.ts +++ b/packages/cypress-plugin/src/vendored/cli-table3.d.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Cypress imports this even though it's not part of the cli-table3 exports, so we add some types // here. diff --git a/packages/cypress-plugin/test/.eslintrc.cjs b/packages/cypress-plugin/test/.eslintrc.cjs index 7b41633..ea0aeee 100644 --- a/packages/cypress-plugin/test/.eslintrc.cjs +++ b/packages/cypress-plugin/test/.eslintrc.cjs @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { env: { diff --git a/packages/cypress-plugin/test/integration-input-esm/.eslintrc.cjs b/packages/cypress-plugin/test/integration-input-esm/.eslintrc.cjs index b6febf5..0015a28 100644 --- a/packages/cypress-plugin/test/integration-input-esm/.eslintrc.cjs +++ b/packages/cypress-plugin/test/integration-input-esm/.eslintrc.cjs @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { extends: ["../../../../.eslintrc-ts.js"], diff --git a/packages/cypress-plugin/test/integration-input-esm/config-js/devtools.js b/packages/cypress-plugin/test/integration-input-esm/config-js/devtools.js index afbffdc..b21da85 100644 --- a/packages/cypress-plugin/test/integration-input-esm/config-js/devtools.js +++ b/packages/cypress-plugin/test/integration-input-esm/config-js/devtools.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC export const openDevToolsOnLaunch = /** diff --git a/packages/cypress-plugin/test/integration-input-esm/config-js/headless.js b/packages/cypress-plugin/test/integration-input-esm/config-js/headless.js new file mode 100644 index 0000000..82602cc --- /dev/null +++ b/packages/cypress-plugin/test/integration-input-esm/config-js/headless.js @@ -0,0 +1,31 @@ +// Copyright (c) 2023-2024 Developer Innovations, LLC + +/** + * Workaround for https://github.com/cypress-io/cypress/issues/27804. + * + * @param {Cypress.PluginEvents} on + * @returns void + */ +export const fixHeadlessChrome = (on) => { + on( + "before:browser:launch", + /** + * @param {Cypress.Browser} browser, + * @param {Cypress.BrowserLaunchOptions} launchOptions + * @returns {void | Cypress.BrowserLaunchOptions} + */ + (browser, launchOptions) => { + if ( + browser.family === "chromium" && + browser.name !== "electron" && + browser.isHeadless + ) { + launchOptions.args = launchOptions.args.map((arg) => + arg === "--headless" ? "--headless=new" : arg + ); + } + + return launchOptions; + } + ); +}; diff --git a/packages/cypress-plugin/test/integration-input-esm/config-js/tasks.js b/packages/cypress-plugin/test/integration-input-esm/config-js/tasks.js index 4f0f5a3..6be9d7f 100644 --- a/packages/cypress-plugin/test/integration-input-esm/config-js/tasks.js +++ b/packages/cypress-plugin/test/integration-input-esm/config-js/tasks.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC /** * @param {Cypress.PluginEvents} on diff --git a/packages/cypress-plugin/test/integration-input-esm/config-js/webpack.js b/packages/cypress-plugin/test/integration-input-esm/config-js/webpack.js index d159eac..60d0dad 100644 --- a/packages/cypress-plugin/test/integration-input-esm/config-js/webpack.js +++ b/packages/cypress-plugin/test/integration-input-esm/config-js/webpack.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { default as webpack } from "webpack"; diff --git a/packages/cypress-plugin/test/integration-input-esm/config/devtools.ts b/packages/cypress-plugin/test/integration-input-esm/config/devtools.ts index 58d80d5..f117e1a 100644 --- a/packages/cypress-plugin/test/integration-input-esm/config/devtools.ts +++ b/packages/cypress-plugin/test/integration-input-esm/config/devtools.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC export const openDevToolsOnLaunch = (on: Cypress.PluginEvents): void => { // Open DevTools automatically. Only works for headed modes (i.e., not in screenshots or diff --git a/packages/cypress-plugin/test/integration-input-esm/config/headless.ts b/packages/cypress-plugin/test/integration-input-esm/config/headless.ts new file mode 100644 index 0000000..81a2718 --- /dev/null +++ b/packages/cypress-plugin/test/integration-input-esm/config/headless.ts @@ -0,0 +1,24 @@ +// Copyright (c) 2023-2024 Developer Innovations, LLC + +// Workaround for https://github.com/cypress-io/cypress/issues/27804. +export const fixHeadlessChrome = (on: Cypress.PluginEvents): void => { + on( + "before:browser:launch", + ( + browser: Cypress.Browser, + launchOptions: Cypress.BrowserLaunchOptions + ): void | Cypress.BrowserLaunchOptions => { + if ( + browser.family === "chromium" && + browser.name !== "electron" && + browser.isHeadless + ) { + launchOptions.args = launchOptions.args.map((arg) => + arg === "--headless" ? "--headless=new" : arg + ); + } + + return launchOptions; + } + ); +}; diff --git a/packages/cypress-plugin/test/integration-input-esm/config/tasks.ts b/packages/cypress-plugin/test/integration-input-esm/config/tasks.ts index 5d492df..0a5cb4f 100644 --- a/packages/cypress-plugin/test/integration-input-esm/config/tasks.ts +++ b/packages/cypress-plugin/test/integration-input-esm/config/tasks.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC export const registerTasks = (on: Cypress.PluginEvents): void => { // Used for both testing that the support file gets loaded and testing that the project's diff --git a/packages/cypress-plugin/test/integration-input-esm/config/webpack.ts b/packages/cypress-plugin/test/integration-input-esm/config/webpack.ts index ff784d0..ca31892 100644 --- a/packages/cypress-plugin/test/integration-input-esm/config/webpack.ts +++ b/packages/cypress-plugin/test/integration-input-esm/config/webpack.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { default as webpack } from "webpack"; diff --git a/packages/cypress-plugin/test/integration-input-esm/cypress-config.cjs b/packages/cypress-plugin/test/integration-input-esm/cypress-config.cjs index cb9736e..d85ac80 100644 --- a/packages/cypress-plugin/test/integration-input-esm/cypress-config.cjs +++ b/packages/cypress-plugin/test/integration-input-esm/cypress-config.cjs @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC const { registerSimpleGitMock } = require("unflakable-test-common/dist/git"); const { @@ -17,6 +17,9 @@ module.exports = { * @returns {Promise | Cypress.PluginConfigOptions | void} */ async setupNodeEvents(on, _config) { + const { fixHeadlessChrome } = await import("./config-js/headless.js"); + + fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); @@ -38,6 +41,9 @@ module.exports = { * @returns {Promise | Cypress.PluginConfigOptions | void} */ async setupNodeEvents(on, _config) { + const { fixHeadlessChrome } = await import("./config-js/headless.js"); + + fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); diff --git a/packages/cypress-plugin/test/integration-input-esm/cypress-config.js b/packages/cypress-plugin/test/integration-input-esm/cypress-config.js index ee5d049..4cd3f6e 100644 --- a/packages/cypress-plugin/test/integration-input-esm/cypress-config.js +++ b/packages/cypress-plugin/test/integration-input-esm/cypress-config.js @@ -1,10 +1,11 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { openDevToolsOnLaunch } from "./config-js/devtools.js"; import { registerTasks } from "./config-js/tasks.js"; import webpackConfig from "./config-js/webpack.js"; import { registerSimpleGitMock } from "unflakable-test-common/dist/git.js"; import { registerCosmiconfigMock } from "unflakable-test-common/dist/config.js"; +import { fixHeadlessChrome } from "./config-js/headless.js"; /** * @type {Cypress.ConfigOptions} @@ -17,6 +18,7 @@ export default { * @returns {Promise | Cypress.PluginConfigOptions | void} */ setupNodeEvents(on, _config) { + fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); registerTasks(on); @@ -35,6 +37,7 @@ export default { * @returns {Promise | Cypress.PluginConfigOptions | void} */ setupNodeEvents(on, _config) { + fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); registerTasks(on); diff --git a/packages/cypress-plugin/test/integration-input-esm/cypress.config.ts b/packages/cypress-plugin/test/integration-input-esm/cypress.config.ts index c7f9649..9b90f72 100644 --- a/packages/cypress-plugin/test/integration-input-esm/cypress.config.ts +++ b/packages/cypress-plugin/test/integration-input-esm/cypress.config.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { defineConfig } from "cypress"; // Relative import paths require file extensions in ESM. @@ -8,10 +8,12 @@ import { registerTasks } from "./config/tasks.js"; import webpackConfig from "./config/webpack.js"; import { registerSimpleGitMock } from "unflakable-test-common/dist/git.js"; import { registerCosmiconfigMock } from "unflakable-test-common/dist/config.js"; +import { fixHeadlessChrome } from "./config/headless.js"; export default defineConfig({ component: { setupNodeEvents(on: Cypress.PluginEvents, _config) { + fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); registerTasks(on); @@ -31,6 +33,7 @@ export default defineConfig({ | Promise | Cypress.PluginConfigOptions | void { + fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); registerTasks(on); diff --git a/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/commands.js b/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/commands.js index 1a7516c..5eb705e 100644 --- a/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/commands.js +++ b/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/commands.js @@ -1,3 +1,3 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC Cypress.Commands.add("consoleLog", (msg) => cy.task("log", msg)); diff --git a/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/component.cjs b/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/component.cjs index 0b677aa..b257777 100644 --- a/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/component.cjs +++ b/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/component.cjs @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC require("./commands.js"); diff --git a/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/component.js b/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/component.js index 3c38662..e784a05 100644 --- a/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/component.js +++ b/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/component.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Import commands.js using ES2015 syntax: import "./commands.js"; diff --git a/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/e2e.cjs b/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/e2e.cjs index c254fe4..cd10e9e 100644 --- a/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/e2e.cjs +++ b/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/e2e.cjs @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Import commands.js using CJS syntax: require("./commands.js"); diff --git a/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/e2e.js b/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/e2e.js index 0447f29..1e2cc15 100644 --- a/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/e2e.js +++ b/packages/cypress-plugin/test/integration-input-esm/cypress/support-js/e2e.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Import commands.js using ES2015 syntax: import "./commands.js"; diff --git a/packages/cypress-plugin/test/integration-input-esm/cypress/support/commands.ts b/packages/cypress-plugin/test/integration-input-esm/cypress/support/commands.ts index a6cb68a..876f349 100644 --- a/packages/cypress-plugin/test/integration-input-esm/cypress/support/commands.ts +++ b/packages/cypress-plugin/test/integration-input-esm/cypress/support/commands.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Webpack non-deterministically reports a TypeScript error here when run through Cypress. It seems // to happen when `cypress-support-file` includes diff --git a/packages/cypress-plugin/test/integration-input-esm/cypress/support/component-index.html b/packages/cypress-plugin/test/integration-input-esm/cypress/support/component-index.html index e39ba42..92d3f43 100644 --- a/packages/cypress-plugin/test/integration-input-esm/cypress/support/component-index.html +++ b/packages/cypress-plugin/test/integration-input-esm/cypress/support/component-index.html @@ -1,3 +1,5 @@ + + diff --git a/packages/cypress-plugin/test/integration-input-esm/cypress/support/component.ts b/packages/cypress-plugin/test/integration-input-esm/cypress/support/component.ts index 87db971..8225d55 100644 --- a/packages/cypress-plugin/test/integration-input-esm/cypress/support/component.ts +++ b/packages/cypress-plugin/test/integration-input-esm/cypress/support/component.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import "./commands.ts"; diff --git a/packages/cypress-plugin/test/integration-input-esm/cypress/support/e2e.ts b/packages/cypress-plugin/test/integration-input-esm/cypress/support/e2e.ts index 8fd06b4..9127c7b 100644 --- a/packages/cypress-plugin/test/integration-input-esm/cypress/support/e2e.ts +++ b/packages/cypress-plugin/test/integration-input-esm/cypress/support/e2e.ts @@ -1,3 +1,3 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import "./commands.ts"; diff --git a/packages/cypress-plugin/test/integration-input-manual/config/devtools.js b/packages/cypress-plugin/test/integration-input-manual/config/devtools.js index c117765..e96f27e 100644 --- a/packages/cypress-plugin/test/integration-input-manual/config/devtools.js +++ b/packages/cypress-plugin/test/integration-input-manual/config/devtools.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { /** diff --git a/packages/cypress-plugin/test/integration-input-manual/config/headless.js b/packages/cypress-plugin/test/integration-input-manual/config/headless.js new file mode 100644 index 0000000..f6540a0 --- /dev/null +++ b/packages/cypress-plugin/test/integration-input-manual/config/headless.js @@ -0,0 +1,33 @@ +// Copyright (c) 2023-2024 Developer Innovations, LLC + +module.exports = { + /** + * Workaround for https://github.com/cypress-io/cypress/issues/27804. + * + * @param {Cypress.PluginEvents} on + * @returns void + */ + fixHeadlessChrome: (on) => { + on( + "before:browser:launch", + /** + * @param {Cypress.Browser} browser, + * @param {Cypress.BrowserLaunchOptions} launchOptions + * @returns {void | Cypress.BrowserLaunchOptions} + */ + (browser, launchOptions) => { + if ( + browser.family === "chromium" && + browser.name !== "electron" && + browser.isHeadless + ) { + launchOptions.args = launchOptions.args.map((arg) => + arg === "--headless" ? "--headless=new" : arg + ); + } + + return launchOptions; + } + ); + }, +}; diff --git a/packages/cypress-plugin/test/integration-input-manual/config/tasks.js b/packages/cypress-plugin/test/integration-input-manual/config/tasks.js index 95cba3e..45c7d8a 100644 --- a/packages/cypress-plugin/test/integration-input-manual/config/tasks.js +++ b/packages/cypress-plugin/test/integration-input-manual/config/tasks.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { /** diff --git a/packages/cypress-plugin/test/integration-input-manual/config/webpack.js b/packages/cypress-plugin/test/integration-input-manual/config/webpack.js index c6501b8..6e44c41 100644 --- a/packages/cypress-plugin/test/integration-input-manual/config/webpack.js +++ b/packages/cypress-plugin/test/integration-input-manual/config/webpack.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC const webpack = require("webpack"); diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress-config.mjs b/packages/cypress-plugin/test/integration-input-manual/cypress-config.mjs index 952022a..e372c25 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress-config.mjs +++ b/packages/cypress-plugin/test/integration-input-manual/cypress-config.mjs @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import devtools from "./config/devtools.js"; import tasks from "./config/tasks.js"; @@ -8,6 +8,8 @@ import { registerCosmiconfigMock } from "unflakable-test-common/dist/config.js"; import { registerUnflakable } from "@unflakable/cypress-plugin"; import semverGte from "semver/functions/gte.js"; import path from "path"; +import headless from "./config/headless.js"; +import cypressOnFix from "cypress-on-fix"; /** * @type {Cypress.ConfigOptions} @@ -15,11 +17,13 @@ import path from "path"; export default { component: { /** - * @param {Cypress.PluginEvents} on + * @param {Cypress.PluginEvents} baseOn * @param {Cypress.PluginConfigOptions} config * @returns {Promise | Cypress.PluginConfigOptions | void} */ - setupNodeEvents(on, config) { + setupNodeEvents(baseOn, config) { + const on = cypressOnFix(baseOn); + headless.fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); tasks.registerTasks(on); @@ -35,11 +39,13 @@ export default { }, e2e: { /** - * @param {Cypress.PluginEvents} on + * @param {Cypress.PluginEvents} baseOn * @param {Cypress.PluginConfigOptions} config * @returns {Promise | Cypress.PluginConfigOptions | void} */ - setupNodeEvents(on, config) { + setupNodeEvents(baseOn, config) { + const on = cypressOnFix(baseOn); + headless.fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); tasks.registerTasks(on); diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress.config.js b/packages/cypress-plugin/test/integration-input-manual/cypress.config.js index 9e0a4e8..b45cbd1 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress.config.js +++ b/packages/cypress-plugin/test/integration-input-manual/cypress.config.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC const { openDevToolsOnLaunch } = require("./config/devtools"); const { registerTasks } = require("./config/tasks"); @@ -11,6 +11,8 @@ const semverGte = require("semver/functions/gte"); const { registerUnflakable } = require("@unflakable/cypress-plugin"); const path = require("path"); +const { fixHeadlessChrome } = require("./config/headless"); +const cypressOnFix = require("cypress-on-fix"); module.exports = { /** @@ -18,11 +20,13 @@ module.exports = { */ component: { /** - * @param {Cypress.PluginEvents} on + * @param {Cypress.PluginEvents} baseOn * @param {Cypress.PluginConfigOptions} config * @returns {Promise | Cypress.PluginConfigOptions | void} */ - setupNodeEvents(on, config) { + setupNodeEvents(baseOn, config) { + const on = cypressOnFix(baseOn); + fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); registerTasks(on); @@ -38,11 +42,13 @@ module.exports = { }, e2e: { /** - * @param {Cypress.PluginEvents} on + * @param {Cypress.PluginEvents} baseOn * @param {Cypress.PluginConfigOptions} config * @returns {Promise | Cypress.PluginConfigOptions | void} */ - setupNodeEvents(on, config) { + setupNodeEvents(baseOn, config) { + const on = cypressOnFix(baseOn); + fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); registerTasks(on); diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/fail.cy.js b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/fail.cy.js index c1bec18..cc6a872 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/fail.cy.js +++ b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/fail.cy.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC const testFn = Cypress.env("SKIP_FAILURES") !== undefined ? it.skip : it; diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/flake.cy.js b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/flake.cy.js index 1bab7bc..fef71a2 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/flake.cy.js +++ b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/flake.cy.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC /* let calls = 0; diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/hook-fail.cy.js b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/hook-fail.cy.js index 297f0bb..3478d79 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/hook-fail.cy.js +++ b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/hook-fail.cy.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC describe("describe block", () => { if (Cypress.env("SKIP_BEFORE_HOOK") === undefined) { diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/invalid.cy.js b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/invalid.cy.js index aa580f4..a5af12b 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/invalid.cy.js +++ b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/invalid.cy.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC if (Cypress.env("SKIP_FAILURES") === undefined) { throw new Error("invalid test file"); diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/mixed/mixed.cy.js b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/mixed/mixed.cy.js index e731026..3094edd 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/mixed/mixed.cy.js +++ b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/mixed/mixed.cy.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC describe("spec with mixed test results", () => { const quarantinedTestFn = diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/pass.cy.js b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/pass.cy.js index 05d345a..5b22ca4 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/pass.cy.js +++ b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/pass.cy.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC it("should pass", () => { // Make sure the project's support file works even when skip_tests generates a temporary one on diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/pending.cy.js b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/pending.cy.js index 2704e82..8f7488a 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/pending.cy.js +++ b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/pending.cy.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC it("stub should be pending"); diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/quarantined.cy.js b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/quarantined.cy.js index f43ebc0..6682e4c 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/quarantined.cy.js +++ b/packages/cypress-plugin/test/integration-input-manual/cypress/e2e/quarantined.cy.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC describe("describe block", () => { (Cypress.env("SKIP_QUARANTINED") !== undefined ? it.skip : it)( diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress/support/commands.js b/packages/cypress-plugin/test/integration-input-manual/cypress/support/commands.js index 1a7516c..5eb705e 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress/support/commands.js +++ b/packages/cypress-plugin/test/integration-input-manual/cypress/support/commands.js @@ -1,3 +1,3 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC Cypress.Commands.add("consoleLog", (msg) => cy.task("log", msg)); diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress/support/component-index.html b/packages/cypress-plugin/test/integration-input-manual/cypress/support/component-index.html index e39ba42..92d3f43 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress/support/component-index.html +++ b/packages/cypress-plugin/test/integration-input-manual/cypress/support/component-index.html @@ -1,3 +1,5 @@ + + diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress/support/component.js b/packages/cypress-plugin/test/integration-input-manual/cypress/support/component.js index 5d0823f..d60f49e 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress/support/component.js +++ b/packages/cypress-plugin/test/integration-input-manual/cypress/support/component.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC require("./commands"); diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress/support/e2e-webpack5.js b/packages/cypress-plugin/test/integration-input-manual/cypress/support/e2e-webpack5.js index 088357d..8defad6 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress/support/e2e-webpack5.js +++ b/packages/cypress-plugin/test/integration-input-manual/cypress/support/e2e-webpack5.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Import commands.js using CJS syntax: require("./commands.js"); diff --git a/packages/cypress-plugin/test/integration-input-manual/cypress/support/e2e.js b/packages/cypress-plugin/test/integration-input-manual/cypress/support/e2e.js index 9033340..5ae257d 100644 --- a/packages/cypress-plugin/test/integration-input-manual/cypress/support/e2e.js +++ b/packages/cypress-plugin/test/integration-input-manual/cypress/support/e2e.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Import commands.js using CJS syntax: require("./commands.js"); diff --git a/packages/cypress-plugin/test/integration-input-manual/package.json b/packages/cypress-plugin/test/integration-input-manual/package.json index 49515a8..c67d68d 100644 --- a/packages/cypress-plugin/test/integration-input-manual/package.json +++ b/packages/cypress-plugin/test/integration-input-manual/package.json @@ -11,6 +11,7 @@ "@unflakable/cypress-plugin": "workspace:^", "cypress": "11.2 - 13", "cypress-multi-reporters": "^1.6.3", + "cypress-on-fix": "^1.0.2", "mocha": "=7.0.1", "mocha-junit-reporter": "^2.2.0", "process": "^0.11.10", diff --git a/packages/cypress-plugin/test/integration-input/.eslintrc.js b/packages/cypress-plugin/test/integration-input/.eslintrc.js index b6febf5..0015a28 100644 --- a/packages/cypress-plugin/test/integration-input/.eslintrc.js +++ b/packages/cypress-plugin/test/integration-input/.eslintrc.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { extends: ["../../../../.eslintrc-ts.js"], diff --git a/packages/cypress-plugin/test/integration-input/config-js/devtools.js b/packages/cypress-plugin/test/integration-input/config-js/devtools.js index c117765..e96f27e 100644 --- a/packages/cypress-plugin/test/integration-input/config-js/devtools.js +++ b/packages/cypress-plugin/test/integration-input/config-js/devtools.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { /** diff --git a/packages/cypress-plugin/test/integration-input/config-js/headless.js b/packages/cypress-plugin/test/integration-input/config-js/headless.js new file mode 100644 index 0000000..f6540a0 --- /dev/null +++ b/packages/cypress-plugin/test/integration-input/config-js/headless.js @@ -0,0 +1,33 @@ +// Copyright (c) 2023-2024 Developer Innovations, LLC + +module.exports = { + /** + * Workaround for https://github.com/cypress-io/cypress/issues/27804. + * + * @param {Cypress.PluginEvents} on + * @returns void + */ + fixHeadlessChrome: (on) => { + on( + "before:browser:launch", + /** + * @param {Cypress.Browser} browser, + * @param {Cypress.BrowserLaunchOptions} launchOptions + * @returns {void | Cypress.BrowserLaunchOptions} + */ + (browser, launchOptions) => { + if ( + browser.family === "chromium" && + browser.name !== "electron" && + browser.isHeadless + ) { + launchOptions.args = launchOptions.args.map((arg) => + arg === "--headless" ? "--headless=new" : arg + ); + } + + return launchOptions; + } + ); + }, +}; diff --git a/packages/cypress-plugin/test/integration-input/config-js/tasks.js b/packages/cypress-plugin/test/integration-input/config-js/tasks.js index 95cba3e..45c7d8a 100644 --- a/packages/cypress-plugin/test/integration-input/config-js/tasks.js +++ b/packages/cypress-plugin/test/integration-input/config-js/tasks.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { /** diff --git a/packages/cypress-plugin/test/integration-input/config-js/webpack.js b/packages/cypress-plugin/test/integration-input/config-js/webpack.js index c6501b8..6e44c41 100644 --- a/packages/cypress-plugin/test/integration-input/config-js/webpack.js +++ b/packages/cypress-plugin/test/integration-input/config-js/webpack.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC const webpack = require("webpack"); diff --git a/packages/cypress-plugin/test/integration-input/config/devtools.ts b/packages/cypress-plugin/test/integration-input/config/devtools.ts index 58d80d5..f117e1a 100644 --- a/packages/cypress-plugin/test/integration-input/config/devtools.ts +++ b/packages/cypress-plugin/test/integration-input/config/devtools.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC export const openDevToolsOnLaunch = (on: Cypress.PluginEvents): void => { // Open DevTools automatically. Only works for headed modes (i.e., not in screenshots or diff --git a/packages/cypress-plugin/test/integration-input/config/headless.ts b/packages/cypress-plugin/test/integration-input/config/headless.ts new file mode 100644 index 0000000..81a2718 --- /dev/null +++ b/packages/cypress-plugin/test/integration-input/config/headless.ts @@ -0,0 +1,24 @@ +// Copyright (c) 2023-2024 Developer Innovations, LLC + +// Workaround for https://github.com/cypress-io/cypress/issues/27804. +export const fixHeadlessChrome = (on: Cypress.PluginEvents): void => { + on( + "before:browser:launch", + ( + browser: Cypress.Browser, + launchOptions: Cypress.BrowserLaunchOptions + ): void | Cypress.BrowserLaunchOptions => { + if ( + browser.family === "chromium" && + browser.name !== "electron" && + browser.isHeadless + ) { + launchOptions.args = launchOptions.args.map((arg) => + arg === "--headless" ? "--headless=new" : arg + ); + } + + return launchOptions; + } + ); +}; diff --git a/packages/cypress-plugin/test/integration-input/config/tasks.ts b/packages/cypress-plugin/test/integration-input/config/tasks.ts index 5d492df..0a5cb4f 100644 --- a/packages/cypress-plugin/test/integration-input/config/tasks.ts +++ b/packages/cypress-plugin/test/integration-input/config/tasks.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC export const registerTasks = (on: Cypress.PluginEvents): void => { // Used for both testing that the support file gets loaded and testing that the project's diff --git a/packages/cypress-plugin/test/integration-input/config/webpack.ts b/packages/cypress-plugin/test/integration-input/config/webpack.ts index d159eac..60d0dad 100644 --- a/packages/cypress-plugin/test/integration-input/config/webpack.ts +++ b/packages/cypress-plugin/test/integration-input/config/webpack.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { default as webpack } from "webpack"; diff --git a/packages/cypress-plugin/test/integration-input/cypress-config.js b/packages/cypress-plugin/test/integration-input/cypress-config.js index 50319f0..2131165 100644 --- a/packages/cypress-plugin/test/integration-input/cypress-config.js +++ b/packages/cypress-plugin/test/integration-input/cypress-config.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC const { openDevToolsOnLaunch } = require("config-js/devtools"); const webpackConfig = require("config-js/webpack"); @@ -7,6 +7,7 @@ const { registerSimpleGitMock } = require("unflakable-test-common/dist/git"); const { registerCosmiconfigMock, } = require("unflakable-test-common/dist/config"); +const { fixHeadlessChrome } = require("config-js/headless"); module.exports = { /** @@ -20,6 +21,7 @@ module.exports = { * @returns {Promise | Cypress.PluginConfigOptions | void} */ setupNodeEvents(on, _config) { + fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); registerTasks(on); @@ -38,6 +40,7 @@ module.exports = { * @returns {Promise | Cypress.PluginConfigOptions | void} */ setupNodeEvents(on, _config) { + fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); registerTasks(on); diff --git a/packages/cypress-plugin/test/integration-input/cypress-config.mjs b/packages/cypress-plugin/test/integration-input/cypress-config.mjs index b6e6c0f..caa4a1c 100644 --- a/packages/cypress-plugin/test/integration-input/cypress-config.mjs +++ b/packages/cypress-plugin/test/integration-input/cypress-config.mjs @@ -1,10 +1,11 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import devtools from "./config-js/devtools.js"; import tasks from "./config-js/tasks.js"; import webpackConfig from "./config-js/webpack.js"; import { registerSimpleGitMock } from "unflakable-test-common/dist/git.js"; import { registerCosmiconfigMock } from "unflakable-test-common/dist/config.js"; +import headless from "./config-js/headless.js"; /** * @type {Cypress.ConfigOptions} @@ -17,6 +18,7 @@ export default { * @returns {Promise | Cypress.PluginConfigOptions | void} */ setupNodeEvents(on, _config) { + headless.fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); tasks.registerTasks(on); @@ -35,6 +37,7 @@ export default { * @returns {Promise | Cypress.PluginConfigOptions | void} */ setupNodeEvents(on, _config) { + headless.fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); tasks.registerTasks(on); diff --git a/packages/cypress-plugin/test/integration-input/cypress.config.ts b/packages/cypress-plugin/test/integration-input/cypress.config.ts index 1a6359b..2cc784d 100644 --- a/packages/cypress-plugin/test/integration-input/cypress.config.ts +++ b/packages/cypress-plugin/test/integration-input/cypress.config.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { registerSimpleGitMock } from "unflakable-test-common/dist/git"; import { registerCosmiconfigMock } from "unflakable-test-common/dist/config"; @@ -12,10 +12,14 @@ import { openDevToolsOnLaunch } from "config/devtools"; import webpackConfig from "config/webpack"; // eslint-disable-next-line import/no-unresolved import { registerTasks } from "config/tasks"; +// eslint-disable-next-line import/no-unresolved +import { fixHeadlessChrome } from "config/headless"; +import cypressOnFix from "cypress-on-fix"; export default defineConfig({ component: { setupNodeEvents(on: Cypress.PluginEvents, _config) { + fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); registerTasks(on); @@ -30,12 +34,20 @@ export default defineConfig({ }, e2e: { setupNodeEvents( - on: Cypress.PluginEvents, + baseOn: Cypress.PluginEvents, _config ): | Promise | Cypress.PluginConfigOptions | void { + // Due to https://github.com/cypress-io/cypress/issues/22428, only the last event handler + // registered for each event type will be called. This means we'll clobber any event handlers + // the user registers. To avoid this, we use cypress-on-fix. + // NB: Our plugin ordinarily does this for us, but we use this package to test what happens + // when the plugin is disabled. + const on = cypressOnFix(baseOn); + + fixHeadlessChrome(on); registerCosmiconfigMock(); registerSimpleGitMock(); registerTasks(on); diff --git a/packages/cypress-plugin/test/integration-input/cypress/component/fail.cy.ts b/packages/cypress-plugin/test/integration-input/cypress/component/fail.cy.ts index 94b40a9..167c20f 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/component/fail.cy.ts +++ b/packages/cypress-plugin/test/integration-input/cypress/component/fail.cy.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC const testFn = Cypress.env("SKIP_FAILURES") !== undefined ? it.skip : it; diff --git a/packages/cypress-plugin/test/integration-input/cypress/component/flake.cy.ts b/packages/cypress-plugin/test/integration-input/cypress/component/flake.cy.ts index 6cda5a0..6011bf6 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/component/flake.cy.ts +++ b/packages/cypress-plugin/test/integration-input/cypress/component/flake.cy.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC /* let calls = 0; diff --git a/packages/cypress-plugin/test/integration-input/cypress/component/hook-fail.cy.ts b/packages/cypress-plugin/test/integration-input/cypress/component/hook-fail.cy.ts index 08c00f3..ba0a1c1 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/component/hook-fail.cy.ts +++ b/packages/cypress-plugin/test/integration-input/cypress/component/hook-fail.cy.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC describe("describe block", () => { if (Cypress.env("SKIP_BEFORE_HOOK") === undefined) { diff --git a/packages/cypress-plugin/test/integration-input/cypress/component/invalid.cy.ts b/packages/cypress-plugin/test/integration-input/cypress/component/invalid.cy.ts index aa580f4..a5af12b 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/component/invalid.cy.ts +++ b/packages/cypress-plugin/test/integration-input/cypress/component/invalid.cy.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC if (Cypress.env("SKIP_FAILURES") === undefined) { throw new Error("invalid test file"); diff --git a/packages/cypress-plugin/test/integration-input/cypress/component/mixed/mixed.cy.ts b/packages/cypress-plugin/test/integration-input/cypress/component/mixed/mixed.cy.ts index b0ee438..5fd29be 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/component/mixed/mixed.cy.ts +++ b/packages/cypress-plugin/test/integration-input/cypress/component/mixed/mixed.cy.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC describe("spec with mixed test results", () => { const quarantinedTestFn = diff --git a/packages/cypress-plugin/test/integration-input/cypress/component/pass.cy.ts b/packages/cypress-plugin/test/integration-input/cypress/component/pass.cy.ts index 05d345a..5b22ca4 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/component/pass.cy.ts +++ b/packages/cypress-plugin/test/integration-input/cypress/component/pass.cy.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC it("should pass", () => { // Make sure the project's support file works even when skip_tests generates a temporary one on diff --git a/packages/cypress-plugin/test/integration-input/cypress/component/pending.cy.ts b/packages/cypress-plugin/test/integration-input/cypress/component/pending.cy.ts index 2704e82..8f7488a 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/component/pending.cy.ts +++ b/packages/cypress-plugin/test/integration-input/cypress/component/pending.cy.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC it("stub should be pending"); diff --git a/packages/cypress-plugin/test/integration-input/cypress/component/quarantined.cy.ts b/packages/cypress-plugin/test/integration-input/cypress/component/quarantined.cy.ts index f43ebc0..6682e4c 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/component/quarantined.cy.ts +++ b/packages/cypress-plugin/test/integration-input/cypress/component/quarantined.cy.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC describe("describe block", () => { (Cypress.env("SKIP_QUARANTINED") !== undefined ? it.skip : it)( diff --git a/packages/cypress-plugin/test/integration-input/cypress/support-js/commands.js b/packages/cypress-plugin/test/integration-input/cypress/support-js/commands.js index 1a7516c..5eb705e 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/support-js/commands.js +++ b/packages/cypress-plugin/test/integration-input/cypress/support-js/commands.js @@ -1,3 +1,3 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC Cypress.Commands.add("consoleLog", (msg) => cy.task("log", msg)); diff --git a/packages/cypress-plugin/test/integration-input/cypress/support-js/component.js b/packages/cypress-plugin/test/integration-input/cypress/support-js/component.js index fea2a9b..04783d5 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/support-js/component.js +++ b/packages/cypress-plugin/test/integration-input/cypress/support-js/component.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC require("./commands"); diff --git a/packages/cypress-plugin/test/integration-input/cypress/support-js/component.mjs b/packages/cypress-plugin/test/integration-input/cypress/support-js/component.mjs index 3c38662..e784a05 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/support-js/component.mjs +++ b/packages/cypress-plugin/test/integration-input/cypress/support-js/component.mjs @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Import commands.js using ES2015 syntax: import "./commands.js"; diff --git a/packages/cypress-plugin/test/integration-input/cypress/support-js/e2e.js b/packages/cypress-plugin/test/integration-input/cypress/support-js/e2e.js index c254fe4..cd10e9e 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/support-js/e2e.js +++ b/packages/cypress-plugin/test/integration-input/cypress/support-js/e2e.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Import commands.js using CJS syntax: require("./commands.js"); diff --git a/packages/cypress-plugin/test/integration-input/cypress/support-js/e2e.mjs b/packages/cypress-plugin/test/integration-input/cypress/support-js/e2e.mjs index 0447f29..1e2cc15 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/support-js/e2e.mjs +++ b/packages/cypress-plugin/test/integration-input/cypress/support-js/e2e.mjs @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Import commands.js using ES2015 syntax: import "./commands.js"; diff --git a/packages/cypress-plugin/test/integration-input/cypress/support/commands.ts b/packages/cypress-plugin/test/integration-input/cypress/support/commands.ts index 966021a..ad471e1 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/support/commands.ts +++ b/packages/cypress-plugin/test/integration-input/cypress/support/commands.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC /// diff --git a/packages/cypress-plugin/test/integration-input/cypress/support/component-index.html b/packages/cypress-plugin/test/integration-input/cypress/support/component-index.html index e39ba42..b2019a7 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/support/component-index.html +++ b/packages/cypress-plugin/test/integration-input/cypress/support/component-index.html @@ -1,3 +1,5 @@ + + diff --git a/packages/cypress-plugin/test/integration-input/cypress/support/component.ts b/packages/cypress-plugin/test/integration-input/cypress/support/component.ts index 5fbee34..08f39a2 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/support/component.ts +++ b/packages/cypress-plugin/test/integration-input/cypress/support/component.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Import commands.js using ES2015 syntax: import "./commands"; diff --git a/packages/cypress-plugin/test/integration-input/cypress/support/e2e.ts b/packages/cypress-plugin/test/integration-input/cypress/support/e2e.ts index 5aa0b7c..4284eff 100644 --- a/packages/cypress-plugin/test/integration-input/cypress/support/e2e.ts +++ b/packages/cypress-plugin/test/integration-input/cypress/support/e2e.ts @@ -1,3 +1,3 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import "./commands"; diff --git a/packages/cypress-plugin/test/integration-input/tsconfig.json b/packages/cypress-plugin/test/integration-input/tsconfig.json index e3ff93e..e7f8717 100644 --- a/packages/cypress-plugin/test/integration-input/tsconfig.json +++ b/packages/cypress-plugin/test/integration-input/tsconfig.json @@ -11,6 +11,7 @@ "types": ["cypress", "node"] }, "include": [ + "../../cypress-on-fix.d.ts", ".eslintrc.js", "config", "config-js", diff --git a/packages/cypress-plugin/test/integration/.eslintrc.js b/packages/cypress-plugin/test/integration/.eslintrc.js index b6febf5..0015a28 100644 --- a/packages/cypress-plugin/test/integration/.eslintrc.js +++ b/packages/cypress-plugin/test/integration/.eslintrc.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { extends: ["../../../../.eslintrc-ts.js"], diff --git a/packages/cypress-plugin/test/integration/jest.config.js b/packages/cypress-plugin/test/integration/jest.config.js index eeb9323..db3dac5 100644 --- a/packages/cypress-plugin/test/integration/jest.config.js +++ b/packages/cypress-plugin/test/integration/jest.config.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // NB: We *MUST* run this test suite with --runInBand because running multiple instances of Cypress // concurrently on the same machine is not supported and runs into a bunch of race conditions that @@ -13,6 +13,6 @@ module.exports = { setupFilesAfterEnv: ["jest-expect-message", "./src/matchers.ts"], testEnvironment: "node", // NB: This should be greater than TEST_TIMEOUT_MS used by the watchdog in runTestCase(). - testTimeout: 120000, + testTimeout: 240000, verbose: true, }; diff --git a/packages/cypress-plugin/test/integration/package.json b/packages/cypress-plugin/test/integration/package.json index 6382d0b..36a0a97 100644 --- a/packages/cypress-plugin/test/integration/package.json +++ b/packages/cypress-plugin/test/integration/package.json @@ -12,7 +12,7 @@ "jest": "^29.5.0", "jest-environment-node": "^29.5.0", "jest-expect-message": "^1.1.3", - "mockttp": "^3.7.5", + "mockttp": "^3.9.2", "semver": "^7.5.4", "ts-jest": "^29.1.0", "typescript": "^4.9.5", diff --git a/packages/cypress-plugin/test/integration/src/basic-matrix.test.ts b/packages/cypress-plugin/test/integration/src/basic-matrix.test.ts index 60afb14..29cd967 100644 --- a/packages/cypress-plugin/test/integration/src/basic-matrix.test.ts +++ b/packages/cypress-plugin/test/integration/src/basic-matrix.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { defaultSummaryTotals, diff --git a/packages/cypress-plugin/test/integration/src/basic.test.ts b/packages/cypress-plugin/test/integration/src/basic.test.ts index 9435b3c..d785029 100644 --- a/packages/cypress-plugin/test/integration/src/basic.test.ts +++ b/packages/cypress-plugin/test/integration/src/basic.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { integrationTestSuite, diff --git a/packages/cypress-plugin/test/integration/src/config.test.ts b/packages/cypress-plugin/test/integration/src/config.test.ts index fb40b62..ffc364b 100644 --- a/packages/cypress-plugin/test/integration/src/config.test.ts +++ b/packages/cypress-plugin/test/integration/src/config.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { integrationTestSuite, integrationTest } from "./test-wrappers"; diff --git a/packages/cypress-plugin/test/integration/src/disable-plugin.test.ts b/packages/cypress-plugin/test/integration/src/disable-plugin.test.ts index 59eb9e1..2539b47 100644 --- a/packages/cypress-plugin/test/integration/src/disable-plugin.test.ts +++ b/packages/cypress-plugin/test/integration/src/disable-plugin.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { defaultSummaryTotals, diff --git a/packages/cypress-plugin/test/integration/src/disable-upload.test.ts b/packages/cypress-plugin/test/integration/src/disable-upload.test.ts index 14b1b3a..fe6f5b4 100644 --- a/packages/cypress-plugin/test/integration/src/disable-upload.test.ts +++ b/packages/cypress-plugin/test/integration/src/disable-upload.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { integrationTest, integrationTestSuite } from "./test-wrappers"; diff --git a/packages/cypress-plugin/test/integration/src/git.test.ts b/packages/cypress-plugin/test/integration/src/git.test.ts index 5546179..1594a79 100644 --- a/packages/cypress-plugin/test/integration/src/git.test.ts +++ b/packages/cypress-plugin/test/integration/src/git.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { integrationTest, integrationTestSuite } from "./test-wrappers"; import path from "path"; diff --git a/packages/cypress-plugin/test/integration/src/hook-failures.test.ts b/packages/cypress-plugin/test/integration/src/hook-failures.test.ts index 06df22f..68fedf1 100644 --- a/packages/cypress-plugin/test/integration/src/hook-failures.test.ts +++ b/packages/cypress-plugin/test/integration/src/hook-failures.test.ts @@ -1,6 +1,14 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { integrationTest, integrationTestSuite } from "./test-wrappers"; +import semverLt from "semver/functions/lt"; +import cypressPackage from "cypress/package.json"; + +// Cypress 13.4 broke the handling of multiple hook failures. Prior to that version, Cypress/Mocha +// reported both errors as failures of the first test in the suite, and then skipped all remaining +// tests. Beginning in 13.4, Cypress skips all tests in the suite and never reports either error. +// This was most likely introduced in https://github.com/cypress-io/cypress/pull/27930. +const supportMultipleHookErrors = semverLt(cypressPackage.version, "13.4.0"); integrationTestSuite((mockBackend) => { it("run should succeed when before() fails and both tests are quarantined", (done) => @@ -303,28 +311,31 @@ integrationTestSuite((mockBackend) => { done )); - it("multiple before() hook errors", (done) => - integrationTest( - { - params: { - multipleHookErrors: true, - specNameStubs: ["hook-fail"], - }, - expectedExitCode: 1, - summaryTotals: { - icon: "fail", - numFailing: 1, - numFlaky: 0, - numPassing: 0, - numPending: 0, - numQuarantined: 0, - numSkipped: 1, - numTests: 2, + (supportMultipleHookErrors ? it : it.skip)( + "multiple before() hook errors", + (done) => + integrationTest( + { + params: { + multipleHookErrors: true, + specNameStubs: ["hook-fail"], + }, + expectedExitCode: 1, + summaryTotals: { + icon: "fail", + numFailing: 1, + numFlaky: 0, + numPassing: 0, + numPending: 0, + numQuarantined: 0, + numSkipped: 1, + numTests: 2, + }, }, - }, - mockBackend, - done - )); + mockBackend, + done + ) + ); it("test and afterEach() hook errors", (done) => integrationTest( diff --git a/packages/cypress-plugin/test/integration/src/long-names.test.ts b/packages/cypress-plugin/test/integration/src/long-names.test.ts index 9d18150..9b242f7 100644 --- a/packages/cypress-plugin/test/integration/src/long-names.test.ts +++ b/packages/cypress-plugin/test/integration/src/long-names.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { defaultSummaryTotals, diff --git a/packages/cypress-plugin/test/integration/src/matchers.ts b/packages/cypress-plugin/test/integration/src/matchers.ts index 065a17f..b092d2c 100644 --- a/packages/cypress-plugin/test/integration/src/matchers.ts +++ b/packages/cypress-plugin/test/integration/src/matchers.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { expect } from "@jest/globals"; import type { MatcherFunction } from "expect"; diff --git a/packages/cypress-plugin/test/integration/src/no-quarantine.test.ts b/packages/cypress-plugin/test/integration/src/no-quarantine.test.ts index 3710a9c..c31e12b 100644 --- a/packages/cypress-plugin/test/integration/src/no-quarantine.test.ts +++ b/packages/cypress-plugin/test/integration/src/no-quarantine.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { defaultSummaryTotals, diff --git a/packages/cypress-plugin/test/integration/src/parse-output.ts b/packages/cypress-plugin/test/integration/src/parse-output.ts index 17ad736..b82d778 100644 --- a/packages/cypress-plugin/test/integration/src/parse-output.ts +++ b/packages/cypress-plugin/test/integration/src/parse-output.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC /* eslint-disable no-control-regex */ diff --git a/packages/cypress-plugin/test/integration/src/plugin-failures.test.ts b/packages/cypress-plugin/test/integration/src/plugin-failures.test.ts index b6434d7..09dd6ba 100644 --- a/packages/cypress-plugin/test/integration/src/plugin-failures.test.ts +++ b/packages/cypress-plugin/test/integration/src/plugin-failures.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { defaultSummaryTotals, diff --git a/packages/cypress-plugin/test/integration/src/retries.test.ts b/packages/cypress-plugin/test/integration/src/retries.test.ts index bc99335..ab1acf6 100644 --- a/packages/cypress-plugin/test/integration/src/retries.test.ts +++ b/packages/cypress-plugin/test/integration/src/retries.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { defaultSummaryTotals, diff --git a/packages/cypress-plugin/test/integration/src/run-test-case.ts b/packages/cypress-plugin/test/integration/src/run-test-case.ts index 5e9b235..a463246 100644 --- a/packages/cypress-plugin/test/integration/src/run-test-case.ts +++ b/packages/cypress-plugin/test/integration/src/run-test-case.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { CreateTestSuiteRunInlineRequest, @@ -36,9 +36,9 @@ import { import cypressPackage from "cypress/package.json"; import semverLt from "semver/functions/lt"; -// Jest times out after 120 seconds, so we bail early here to allow time to print the +// Jest times out after 240 seconds, so we bail early here to allow time to print the // captured output before Jest kills the test. -const TEST_TIMEOUT_MS = 110000; +const TEST_TIMEOUT_MS = 230000; const userAgentRegex = new RegExp( "unflakable-js-api/(?:[-0-9.]|alpha|beta)+ unflakable-cypress-plugin/(?:[-0-9.]|alpha|beta)+ \\(Cypress [0-9]+\\.[0-9]+\\.[0-9]+; Node v[0-9]+\\.[0-9]+\\.[0-9]\\)" diff --git a/packages/cypress-plugin/test/integration/src/test-wrappers.ts b/packages/cypress-plugin/test/integration/src/test-wrappers.ts index 090ecaa..278ccb8 100644 --- a/packages/cypress-plugin/test/integration/src/test-wrappers.ts +++ b/packages/cypress-plugin/test/integration/src/test-wrappers.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { runTestCase, TestCaseParams } from "./run-test-case"; import path from "path"; diff --git a/packages/cypress-plugin/test/integration/src/unicode.test.ts b/packages/cypress-plugin/test/integration/src/unicode.test.ts index a400392..d2bdd3e 100644 --- a/packages/cypress-plugin/test/integration/src/unicode.test.ts +++ b/packages/cypress-plugin/test/integration/src/unicode.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { defaultSummaryTotals, diff --git a/packages/cypress-plugin/test/integration/src/verify-output.ts b/packages/cypress-plugin/test/integration/src/verify-output.ts index 92c79c7..33ebb92 100644 --- a/packages/cypress-plugin/test/integration/src/verify-output.ts +++ b/packages/cypress-plugin/test/integration/src/verify-output.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Make sure expected output is present and chalk-formatted correctly. import { @@ -22,11 +22,18 @@ import { import { expect as expectExt } from "@jest/globals"; import escapeStringRegexp from "escape-string-regexp"; import { TestAttemptResult } from "@unflakable/js-api"; +import semverGte from "semver/functions/gte"; +import cypressPackage from "cypress/package.json"; const THROWN_ERROR = "\x1B[0m\x1B[31m Error\x1B[0m\x1B[90m"; const FAIL_SYMBOL = process.platform === "win32" ? "×" : "✖"; const PASS_SYMBOL = process.platform === "win32" ? "√" : "✓"; +// Cypress 13.4 changed the number of retries returned after a retry passes (i.e., when a test is +// flaky). See: +// https://github.com/cypress-io/cypress/blob/5a95541c3c4e48bfc67a54642abc949576fa6f05/packages/driver/patches/mocha%2B7.0.1.dev.patch +const adjustRetriesOnPass = semverGte(cypressPackage.version, "13.4.0"); + const verifySpecOutput = ( params: TestCaseParams, specOutputs: SpecOutput[], @@ -141,7 +148,7 @@ const verifySpecOutputs = ( new RegExp( // eslint-disable-next-line no-control-regex `^ {2}\x1B\\[35m {2}${PASS_SYMBOL}\x1B\\[39m\x1B\\[90m mixed: flake should be quarantined\x1B\\[0m\x1B\\[35m \\[flaky, quarantined]\x1B\\[39m\x1B\\[33m \\(attempt 2 of ${ - expectedRetries + 1 + adjustRetriesOnPass ? 2 : expectedRetries + 1 }\\)\x1B\\[0m\x1B\\[(?:33|90)m \\([0-9]+.+?\\)\x1B\\[0m$` ) ), @@ -169,7 +176,7 @@ const verifySpecOutputs = ( new RegExp( // eslint-disable-next-line no-control-regex `^ {2}\x1B\\[33m {2}${PASS_SYMBOL}\x1B\\[0m\x1B\\[90m mixed: flake should be quarantined\x1B\\[0m\x1B\\[33m \\[flaky]\x1B\\[0m\x1B\\[33m \\(attempt 2 of ${ - expectedRetries + 1 + adjustRetriesOnPass ? 2 : expectedRetries + 1 }\\)\x1B\\[0m\x1B\\[(?:33|90)m \\([0-9]+.+?\\)\x1B\\[0m$` ) ), @@ -208,7 +215,7 @@ const verifySpecOutputs = ( new RegExp( // eslint-disable-next-line no-control-regex `^ {2}\x1B\\[35m {2}${PASS_SYMBOL}\x1B\\[39m\x1B\\[90m mixed: should be flaky\x1B\\[0m\x1B\\[35m \\[flaky, quarantined]\x1B\\[39m\x1B\\[33m \\(attempt 2 of ${ - expectedRetries + 1 + adjustRetriesOnPass ? 2 : expectedRetries + 1 }\\)\x1B\\[0m\x1B\\[(?:33|90)m \\([0-9]+.+?\\)\x1B\\[0m$` ) ) @@ -216,7 +223,7 @@ const verifySpecOutputs = ( new RegExp( // eslint-disable-next-line no-control-regex `^ {2}\x1B\\[33m {2}${PASS_SYMBOL}\x1B\\[0m\x1B\\[90m mixed: should be flaky\x1B\\[0m\x1B\\[33m \\[flaky]\x1B\\[0m\x1B\\[33m \\(attempt 2 of ${ - expectedRetries + 1 + adjustRetriesOnPass ? 2 : expectedRetries + 1 }\\)\x1B\\[0m\x1B\\[(?:33|90)m \\([0-9]+.+?\\)\x1B\\[0m$` ) ), @@ -708,7 +715,7 @@ const verifySpecOutputs = ( `^\x1B\\[35m {2}${PASS_SYMBOL}\x1B\\[39m\x1B\\[90m should be flaky${escapeStringRegexp( expectedFlakeTestNameSuffix )}\x1B\\[0m\x1B\\[35m \\[flaky, quarantined]\x1B\\[39m\x1B\\[33m \\(attempt 2 of ${ - expectedRetries + 1 + adjustRetriesOnPass ? 2 : expectedRetries + 1 }\\)\x1B\\[0m\x1B\\[(?:33|90)m \\([0-9]+.+?\\)\x1B\\[0m$` ) ) @@ -718,7 +725,7 @@ const verifySpecOutputs = ( `^\x1B\\[33m {2}${PASS_SYMBOL}\x1B\\[0m\x1B\\[90m should be flaky${escapeStringRegexp( expectedFlakeTestNameSuffix )}\x1B\\[0m\x1B\\[33m \\[flaky]\x1B\\[0m\x1B\\[33m \\(attempt 2 of ${ - expectedRetries + 1 + adjustRetriesOnPass ? 2 : expectedRetries + 1 }\\)\x1B\\[0m\x1B\\[(?:33|90)m \\([0-9]+.+?\\)\x1B\\[0m$` ) ), diff --git a/packages/cypress-plugin/test/integration/unflakable.js b/packages/cypress-plugin/test/integration/unflakable.js index d24c20f..f29e4fc 100644 --- a/packages/cypress-plugin/test/integration/unflakable.js +++ b/packages/cypress-plugin/test/integration/unflakable.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { __unstableIsFailureTestIndependent: [ @@ -9,11 +9,13 @@ module.exports = { /attempting to close the browser tab(?:(?!resetting server state).)*$/s, /Still waiting to connect to Edge, retrying in 1 second.*(?:Error: Test timed out after|All promises were rejected)/s, /There was an error reconnecting to the Chrome DevTools protocol\. Please restart the browser\./, + /Cypress failed to make a connection to the Chrome DevTools Protocol after retrying/, // When this error occurs, Cypress ends up printing the "Running: " header multiple times, // which the integration test parses as if that spec were in fact invoked multiple times. We // don't want the test itself to ignore multiple spec invocations since that could indicate a // bug. Instead, we treat it as a test independent failure iff this error message is in the // output. Otherwise, we'll still treat it as a true failure. /Timed out waiting for the browser to connect. Retrying\.\.\./, + /Cypress verification timed out\./, ], }; diff --git a/packages/cypress-plugin/tsconfig.json b/packages/cypress-plugin/tsconfig.json index 9e9a7c8..786cbe3 100644 --- a/packages/cypress-plugin/tsconfig.json +++ b/packages/cypress-plugin/tsconfig.json @@ -15,5 +15,5 @@ // Avoids conflicting global definitions from, e.g., jest. "types": ["node"] }, - "include": ["mocha.d.ts", "rollup.config.mjs"] + "include": ["cypress-on-fix.d.ts", "mocha.d.ts", "rollup.config.mjs"] } diff --git a/packages/jest-plugin/.eslintrc.js b/packages/jest-plugin/.eslintrc.js index dcbec19..f943e67 100644 --- a/packages/jest-plugin/.eslintrc.js +++ b/packages/jest-plugin/.eslintrc.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { extends: ["../../.eslintrc-ts.js"], diff --git a/packages/jest-plugin/LICENSE b/packages/jest-plugin/LICENSE index 53bf01b..fc24ed8 100644 --- a/packages/jest-plugin/LICENSE +++ b/packages/jest-plugin/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022-2023 Developer Innovations, LLC +Copyright (c) 2022-2024 Developer Innovations, LLC Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/jest-plugin/jest-circus.d.ts b/packages/jest-plugin/jest-circus.d.ts index c17e897..833746d 100644 --- a/packages/jest-plugin/jest-circus.d.ts +++ b/packages/jest-plugin/jest-circus.d.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // jest-circus doesn't export the types for runner. See: // https://github.com/jestjs/jest/blob/6d2632adae0f0fa1fe116d3b475fd9783d0de1b5/packages/jest-circus/runner.js#L10-L9 diff --git a/packages/jest-plugin/jest.config.js b/packages/jest-plugin/jest.config.js index 6318fbd..6cd3940 100644 --- a/packages/jest-plugin/jest.config.js +++ b/packages/jest-plugin/jest.config.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC /** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { diff --git a/packages/jest-plugin/rollup.config.mjs b/packages/jest-plugin/rollup.config.mjs index 797cee5..c57bf72 100644 --- a/packages/jest-plugin/rollup.config.mjs +++ b/packages/jest-plugin/rollup.config.mjs @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import path from "path"; import pluginCommonJs from "@rollup/plugin-commonjs"; diff --git a/packages/jest-plugin/src/config.test.ts b/packages/jest-plugin/src/config.test.ts index ece7c1d..b105138 100644 --- a/packages/jest-plugin/src/config.test.ts +++ b/packages/jest-plugin/src/config.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { loadConfig } from "./config"; import { cosmiconfigSync, Options } from "cosmiconfig"; diff --git a/packages/jest-plugin/src/config.ts b/packages/jest-plugin/src/config.ts index b3a87d0..97159dc 100644 --- a/packages/jest-plugin/src/config.ts +++ b/packages/jest-plugin/src/config.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { IsFailureTestIndependentFn, diff --git a/packages/jest-plugin/src/index.ts b/packages/jest-plugin/src/index.ts index 0c72377..be0a8c0 100644 --- a/packages/jest-plugin/src/index.ts +++ b/packages/jest-plugin/src/index.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import reporter from "./reporter"; import runner from "./runner"; diff --git a/packages/jest-plugin/src/reporter.ts b/packages/jest-plugin/src/reporter.ts index 89e0ae9..6c1fe51 100644 --- a/packages/jest-plugin/src/reporter.ts +++ b/packages/jest-plugin/src/reporter.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import * as path from "path"; import type { diff --git a/packages/jest-plugin/src/runner.ts b/packages/jest-plugin/src/runner.ts index 7097f01..17dbcda 100644 --- a/packages/jest-plugin/src/runner.ts +++ b/packages/jest-plugin/src/runner.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import * as path from "path"; import type { SerializableError, TestResult } from "@jest/test-result"; diff --git a/packages/jest-plugin/src/test-runner.ts b/packages/jest-plugin/src/test-runner.ts index 1884aaf..4f50009 100644 --- a/packages/jest-plugin/src/test-runner.ts +++ b/packages/jest-plugin/src/test-runner.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { TestEvents, TestFileEvent, TestResult } from "@jest/test-result"; import { JestEnvironment } from "@jest/environment"; diff --git a/packages/jest-plugin/src/types.ts b/packages/jest-plugin/src/types.ts index 849a5da..3f72bbf 100644 --- a/packages/jest-plugin/src/types.ts +++ b/packages/jest-plugin/src/types.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import type { AggregatedResult, diff --git a/packages/jest-plugin/src/utils.ts b/packages/jest-plugin/src/utils.ts index 9a4e0b9..2138d0b 100644 --- a/packages/jest-plugin/src/utils.ts +++ b/packages/jest-plugin/src/utils.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import type { AssertionResult, Status } from "@jest/test-result"; import jestPackage from "jest/package.json"; diff --git a/packages/jest-plugin/src/vendored/SummaryReporter.ts b/packages/jest-plugin/src/vendored/SummaryReporter.ts index 91c9b13..5f54f95 100644 --- a/packages/jest-plugin/src/vendored/SummaryReporter.ts +++ b/packages/jest-plugin/src/vendored/SummaryReporter.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC /* This file includes portions of a Jest source code file originally downloaded from: diff --git a/packages/jest-plugin/src/vendored/getResultHeader.ts b/packages/jest-plugin/src/vendored/getResultHeader.ts index 37f80cf..86cc030 100644 --- a/packages/jest-plugin/src/vendored/getResultHeader.ts +++ b/packages/jest-plugin/src/vendored/getResultHeader.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { utils } from "@jest/reporters"; import { TestResult } from "@jest/test-result"; diff --git a/packages/jest-plugin/src/vendored/getSummary.ts b/packages/jest-plugin/src/vendored/getSummary.ts index 8422414..5b88c23 100644 --- a/packages/jest-plugin/src/vendored/getSummary.ts +++ b/packages/jest-plugin/src/vendored/getSummary.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC /* This file includes portions of a Jest source code file originally downloaded from: diff --git a/packages/jest-plugin/test/.eslintrc.js b/packages/jest-plugin/test/.eslintrc.js index 4d0da9e..b7a3a23 100644 --- a/packages/jest-plugin/test/.eslintrc.js +++ b/packages/jest-plugin/test/.eslintrc.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { env: { diff --git a/packages/jest-plugin/test/babel.config.js b/packages/jest-plugin/test/babel.config.js index 67d5947..d3cffba 100644 --- a/packages/jest-plugin/test/babel.config.js +++ b/packages/jest-plugin/test/babel.config.js @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC /* eslint-env node */ diff --git a/packages/jest-plugin/test/integration-input/jest.config.js b/packages/jest-plugin/test/integration-input/jest.config.js index e23590c..75d15b8 100644 --- a/packages/jest-plugin/test/integration-input/jest.config.js +++ b/packages/jest-plugin/test/integration-input/jest.config.js @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC module.exports = { clearMocks: true, diff --git a/packages/jest-plugin/test/integration-input/src/fail.test.ts b/packages/jest-plugin/test/integration-input/src/fail.test.ts index cf69151..7448062 100644 --- a/packages/jest-plugin/test/integration-input/src/fail.test.ts +++ b/packages/jest-plugin/test/integration-input/src/fail.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC describe("describe block", () => { (process.env.SKIP_FAILURES !== undefined ? it.skip : it)( diff --git a/packages/jest-plugin/test/integration-input/src/flake.test.ts b/packages/jest-plugin/test/integration-input/src/flake.test.ts index 6acbbbb..9aaf8f0 100644 --- a/packages/jest-plugin/test/integration-input/src/flake.test.ts +++ b/packages/jest-plugin/test/integration-input/src/flake.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import fs from "fs/promises"; diff --git a/packages/jest-plugin/test/integration-input/src/invalid.test.ts b/packages/jest-plugin/test/integration-input/src/invalid.test.ts index 626b065..7760c16 100644 --- a/packages/jest-plugin/test/integration-input/src/invalid.test.ts +++ b/packages/jest-plugin/test/integration-input/src/invalid.test.ts @@ -1,3 +1,3 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC throw new Error("invalid test file"); diff --git a/packages/jest-plugin/test/integration-input/src/mixed.test.ts b/packages/jest-plugin/test/integration-input/src/mixed.test.ts index 129635d..05b0bf7 100644 --- a/packages/jest-plugin/test/integration-input/src/mixed.test.ts +++ b/packages/jest-plugin/test/integration-input/src/mixed.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC // This test contains both a failed test and a quarantined one, which the reporter should treat as // a failed test file. However, the quarantined test should still be reported as having been diff --git a/packages/jest-plugin/test/integration-input/src/pass.test.ts b/packages/jest-plugin/test/integration-input/src/pass.test.ts index 8e79dbf..dbd1e58 100644 --- a/packages/jest-plugin/test/integration-input/src/pass.test.ts +++ b/packages/jest-plugin/test/integration-input/src/pass.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC it("should pass", () => { if (process.env.TEST_SNAPSHOTS !== undefined) { diff --git a/packages/jest-plugin/test/integration-input/src/quarantined.test.ts b/packages/jest-plugin/test/integration-input/src/quarantined.test.ts index 397bae1..1b12471 100644 --- a/packages/jest-plugin/test/integration-input/src/quarantined.test.ts +++ b/packages/jest-plugin/test/integration-input/src/quarantined.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC describe("describe block", () => { (process.env.SKIP_QUARANTINED !== undefined ? it.skip : it)( diff --git a/packages/jest-plugin/test/integration/jest.config.js b/packages/jest-plugin/test/integration/jest.config.js index ac2e971..ceb5c34 100644 --- a/packages/jest-plugin/test/integration/jest.config.js +++ b/packages/jest-plugin/test/integration/jest.config.js @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC module.exports = { setupFilesAfterEnv: ["./src/matchers.ts"], diff --git a/packages/jest-plugin/test/integration/package.json b/packages/jest-plugin/test/integration/package.json index c80c811..26d5f5a 100644 --- a/packages/jest-plugin/test/integration/package.json +++ b/packages/jest-plugin/test/integration/package.json @@ -16,7 +16,7 @@ "jest-environment-node": "25.1.0 - 29", "jest-get-type": "25.1.0 - 29", "jest-matcher-utils": "25.1.0 - 29", - "mockttp": "^3.7.5", + "mockttp": "^3.9.2", "semver": "^7.5.4", "tmp": "^0.2.1", "typescript": "^4.9.5", diff --git a/packages/jest-plugin/test/integration/src/basic.test.ts b/packages/jest-plugin/test/integration/src/basic.test.ts index 2f81bec..c9427b3 100644 --- a/packages/jest-plugin/test/integration/src/basic.test.ts +++ b/packages/jest-plugin/test/integration/src/basic.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { defaultExpectedResults, diff --git a/packages/jest-plugin/test/integration/src/config.test.ts b/packages/jest-plugin/test/integration/src/config.test.ts index 0f56c1e..59976d0 100644 --- a/packages/jest-plugin/test/integration/src/config.test.ts +++ b/packages/jest-plugin/test/integration/src/config.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { defaultExpectedResults, diff --git a/packages/jest-plugin/test/integration/src/disable-plugin.test.ts b/packages/jest-plugin/test/integration/src/disable-plugin.test.ts index 5673309..d70dd1a 100644 --- a/packages/jest-plugin/test/integration/src/disable-plugin.test.ts +++ b/packages/jest-plugin/test/integration/src/disable-plugin.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { defaultExpectedResults, diff --git a/packages/jest-plugin/test/integration/src/disable-upload.test.ts b/packages/jest-plugin/test/integration/src/disable-upload.test.ts index 38706c2..59f680f 100644 --- a/packages/jest-plugin/test/integration/src/disable-upload.test.ts +++ b/packages/jest-plugin/test/integration/src/disable-upload.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { defaultExpectedResults, diff --git a/packages/jest-plugin/test/integration/src/force-color.js b/packages/jest-plugin/test/integration/src/force-color.js index 9807cd1..0978afe 100644 --- a/packages/jest-plugin/test/integration/src/force-color.js +++ b/packages/jest-plugin/test/integration/src/force-color.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Jest changes FORCE_COLOR to 1 when it forks child processes. We execute this script with // `node --require` so that each subprocess has the correct FORCE_COLOR value to produce the color diff --git a/packages/jest-plugin/test/integration/src/git.test.ts b/packages/jest-plugin/test/integration/src/git.test.ts index 0f8487d..62c3d4f 100644 --- a/packages/jest-plugin/test/integration/src/git.test.ts +++ b/packages/jest-plugin/test/integration/src/git.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import path from "path"; import { diff --git a/packages/jest-plugin/test/integration/src/ignore-failures.test.ts b/packages/jest-plugin/test/integration/src/ignore-failures.test.ts index e2e68c4..e8263b7 100644 --- a/packages/jest-plugin/test/integration/src/ignore-failures.test.ts +++ b/packages/jest-plugin/test/integration/src/ignore-failures.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { defaultExpectedResults, diff --git a/packages/jest-plugin/test/integration/src/long-names.test.ts b/packages/jest-plugin/test/integration/src/long-names.test.ts index 27aa9d8..8284f15 100644 --- a/packages/jest-plugin/test/integration/src/long-names.test.ts +++ b/packages/jest-plugin/test/integration/src/long-names.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { defaultExpectedResults, diff --git a/packages/jest-plugin/test/integration/src/matchers.ts b/packages/jest-plugin/test/integration/src/matchers.ts index 6919967..be025b9 100644 --- a/packages/jest-plugin/test/integration/src/matchers.ts +++ b/packages/jest-plugin/test/integration/src/matchers.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { MatcherHintOptions, diff --git a/packages/jest-plugin/test/integration/src/no-quarantine.test.ts b/packages/jest-plugin/test/integration/src/no-quarantine.test.ts index 97e735f..4d909b6 100644 --- a/packages/jest-plugin/test/integration/src/no-quarantine.test.ts +++ b/packages/jest-plugin/test/integration/src/no-quarantine.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { integrationTest, integrationTestSuite } from "./test-wrappers"; diff --git a/packages/jest-plugin/test/integration/src/plugin-failures.test.ts b/packages/jest-plugin/test/integration/src/plugin-failures.test.ts index af57524..07ec795 100644 --- a/packages/jest-plugin/test/integration/src/plugin-failures.test.ts +++ b/packages/jest-plugin/test/integration/src/plugin-failures.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { defaultExpectedResults, diff --git a/packages/jest-plugin/test/integration/src/retries.test.ts b/packages/jest-plugin/test/integration/src/retries.test.ts index 95f57e9..972ca92 100644 --- a/packages/jest-plugin/test/integration/src/retries.test.ts +++ b/packages/jest-plugin/test/integration/src/retries.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { defaultExpectedResults, diff --git a/packages/jest-plugin/test/integration/src/run-test-case.ts b/packages/jest-plugin/test/integration/src/run-test-case.ts index fa869f3..d27fd17 100644 --- a/packages/jest-plugin/test/integration/src/run-test-case.ts +++ b/packages/jest-plugin/test/integration/src/run-test-case.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { tmpName, TmpNameOptions } from "tmp"; import { diff --git a/packages/jest-plugin/test/integration/src/skip-tests.test.ts b/packages/jest-plugin/test/integration/src/skip-tests.test.ts index b122fbf..6586044 100644 --- a/packages/jest-plugin/test/integration/src/skip-tests.test.ts +++ b/packages/jest-plugin/test/integration/src/skip-tests.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { integrationTest, integrationTestSuite } from "./test-wrappers"; diff --git a/packages/jest-plugin/test/integration/src/snapshots.test.ts b/packages/jest-plugin/test/integration/src/snapshots.test.ts index 7c4948c..afb9383 100644 --- a/packages/jest-plugin/test/integration/src/snapshots.test.ts +++ b/packages/jest-plugin/test/integration/src/snapshots.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { defaultExpectedResults, diff --git a/packages/jest-plugin/test/integration/src/test-independence.test.ts b/packages/jest-plugin/test/integration/src/test-independence.test.ts index 9905c71..e60ef6f 100644 --- a/packages/jest-plugin/test/integration/src/test-independence.test.ts +++ b/packages/jest-plugin/test/integration/src/test-independence.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import jestPackage from "jest/package.json"; import { diff --git a/packages/jest-plugin/test/integration/src/test-name-pattern.test.ts b/packages/jest-plugin/test/integration/src/test-name-pattern.test.ts index a1d6a7a..a7786ad 100644 --- a/packages/jest-plugin/test/integration/src/test-name-pattern.test.ts +++ b/packages/jest-plugin/test/integration/src/test-name-pattern.test.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { defaultExpectedResults, diff --git a/packages/jest-plugin/test/integration/src/test-wrappers.ts b/packages/jest-plugin/test/integration/src/test-wrappers.ts index 70c53f7..7cae8b6 100644 --- a/packages/jest-plugin/test/integration/src/test-wrappers.ts +++ b/packages/jest-plugin/test/integration/src/test-wrappers.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import jestPackage from "jest/package.json"; import path from "path"; diff --git a/packages/jest-plugin/test/integration/src/verify-output.ts b/packages/jest-plugin/test/integration/src/verify-output.ts index d0029de..7fee318 100644 --- a/packages/jest-plugin/test/integration/src/verify-output.ts +++ b/packages/jest-plugin/test/integration/src/verify-output.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // These are the chalk-formatted strings that include console color codes. import escapeStringRegexp from "escape-string-regexp"; diff --git a/packages/jest-plugin/window.d.ts b/packages/jest-plugin/window.d.ts index acaa11a..e0f548f 100644 --- a/packages/jest-plugin/window.d.ts +++ b/packages/jest-plugin/window.d.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC export {}; diff --git a/packages/js-api/.eslintrc.js b/packages/js-api/.eslintrc.js index 02409c8..ff96017 100644 --- a/packages/js-api/.eslintrc.js +++ b/packages/js-api/.eslintrc.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { extends: ["../../.eslintrc-ts.js"], diff --git a/packages/js-api/LICENSE b/packages/js-api/LICENSE index 53bf01b..fc24ed8 100644 --- a/packages/js-api/LICENSE +++ b/packages/js-api/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022-2023 Developer Innovations, LLC +Copyright (c) 2022-2024 Developer Innovations, LLC Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/js-api/src/consts.ts b/packages/js-api/src/consts.ts index cf19eab..8823e7f 100644 --- a/packages/js-api/src/consts.ts +++ b/packages/js-api/src/consts.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC export const JS_API_VERSION: string = // eslint-disable-next-line @typescript-eslint/no-var-requires diff --git a/packages/js-api/src/index.ts b/packages/js-api/src/index.ts index b2cc254..5ff206e 100644 --- a/packages/js-api/src/index.ts +++ b/packages/js-api/src/index.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import nodeFetch, { RequestInit, Response } from "node-fetch"; import _debug = require("debug"); diff --git a/packages/plugins-common/.eslintrc.js b/packages/plugins-common/.eslintrc.js index 02409c8..ff96017 100644 --- a/packages/plugins-common/.eslintrc.js +++ b/packages/plugins-common/.eslintrc.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { extends: ["../../.eslintrc-ts.js"], diff --git a/packages/plugins-common/src/config.ts b/packages/plugins-common/src/config.ts index d277fdd..23c171f 100644 --- a/packages/plugins-common/src/config.ts +++ b/packages/plugins-common/src/config.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { CosmiconfigResult } from "cosmiconfig/dist/types"; import { cosmiconfig, cosmiconfigSync } from "cosmiconfig"; diff --git a/packages/plugins-common/src/env.ts b/packages/plugins-common/src/env.ts index 8ac5d40..a89b628 100644 --- a/packages/plugins-common/src/env.ts +++ b/packages/plugins-common/src/env.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import process from "process"; diff --git a/packages/plugins-common/src/git.ts b/packages/plugins-common/src/git.ts index d5d94cf..e2907f7 100644 --- a/packages/plugins-common/src/git.ts +++ b/packages/plugins-common/src/git.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import _debug from "debug"; import { simpleGit, SimpleGit, SimpleGitFactory } from "simple-git"; diff --git a/packages/plugins-common/src/index.ts b/packages/plugins-common/src/index.ts index ee6fa9e..5e9e953 100644 --- a/packages/plugins-common/src/index.ts +++ b/packages/plugins-common/src/index.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import path from "path"; diff --git a/packages/plugins-common/src/manifest.ts b/packages/plugins-common/src/manifest.ts index e4799f1..c552b0c 100644 --- a/packages/plugins-common/src/manifest.ts +++ b/packages/plugins-common/src/manifest.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import _debug from "debug"; import { diff --git a/packages/plugins-common/src/quarantine.ts b/packages/plugins-common/src/quarantine.ts index 70cd1b6..e8c83fb 100644 --- a/packages/plugins-common/src/quarantine.ts +++ b/packages/plugins-common/src/quarantine.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Avoid depending on the core of the js-api, which includes a bunch of Node dependencies. We need // this module to work in the browser for the Cypress plugin's skip-tests module. diff --git a/packages/test-common/.eslintrc.js b/packages/test-common/.eslintrc.js index 02409c8..ff96017 100644 --- a/packages/test-common/.eslintrc.js +++ b/packages/test-common/.eslintrc.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { extends: ["../../.eslintrc-ts.js"], diff --git a/packages/test-common/package.json b/packages/test-common/package.json index f1b4508..548d460 100644 --- a/packages/test-common/package.json +++ b/packages/test-common/package.json @@ -6,7 +6,7 @@ "debug": "^4.3.3", "deep-equal": "^2.0.5", "expect": "25.1.0 - 29", - "mockttp": "^3.7.5", + "mockttp": "^3.9.2", "simple-git": "^3.16.0", "tree-kill": "^1.2.2" }, diff --git a/packages/test-common/rollup.config.mjs b/packages/test-common/rollup.config.mjs index 0e63ae9..9ad0ca1 100644 --- a/packages/test-common/rollup.config.mjs +++ b/packages/test-common/rollup.config.mjs @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import path from "path"; import pluginCommonJs from "@rollup/plugin-commonjs"; diff --git a/packages/test-common/src/config.ts b/packages/test-common/src/config.ts index c39d9a6..c9492da 100644 --- a/packages/test-common/src/config.ts +++ b/packages/test-common/src/config.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import _debug from "debug"; import { diff --git a/packages/test-common/src/git.ts b/packages/test-common/src/git.ts index bbbadd7..4ae081d 100644 --- a/packages/test-common/src/git.ts +++ b/packages/test-common/src/git.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import _debug from "debug"; import { setSimpleGitFactory } from "@unflakable/plugins-common"; diff --git a/packages/test-common/src/mock-backend.ts b/packages/test-common/src/mock-backend.ts index 2479a87..70dcb0a 100644 --- a/packages/test-common/src/mock-backend.ts +++ b/packages/test-common/src/mock-backend.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { CompletedRequest, diff --git a/packages/test-common/src/mock-cosmiconfig.ts b/packages/test-common/src/mock-cosmiconfig.ts index 1f6936e..90049d3 100644 --- a/packages/test-common/src/mock-cosmiconfig.ts +++ b/packages/test-common/src/mock-cosmiconfig.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Script loaded by Node.JS via --require that mocks cosmiconfig for testing. diff --git a/packages/test-common/src/mock-git.ts b/packages/test-common/src/mock-git.ts index fc84fea..477ac4e 100644 --- a/packages/test-common/src/mock-git.ts +++ b/packages/test-common/src/mock-git.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC // Script loaded by Node.JS via --require that mocks simple-git for testing. diff --git a/packages/test-common/src/spawn.ts b/packages/test-common/src/spawn.ts index 099042c..9143bcf 100644 --- a/packages/test-common/src/spawn.ts +++ b/packages/test-common/src/spawn.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC import { TextDecoder } from "util"; import treeKill from "tree-kill"; diff --git a/scripts/.eslintrc.js b/scripts/.eslintrc.js index 653facc..34454d6 100644 --- a/scripts/.eslintrc.js +++ b/scripts/.eslintrc.js @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Developer Innovations, LLC +// Copyright (c) 2023-2024 Developer Innovations, LLC module.exports = { extends: ["../.eslintrc-ts.js"], diff --git a/scripts/set-jest-version.ts b/scripts/set-jest-version.ts index b12f92b..66037ca 100644 --- a/scripts/set-jest-version.ts +++ b/scripts/set-jest-version.ts @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Developer Innovations, LLC +// Copyright (c) 2022-2024 Developer Innovations, LLC import { execSync, spawnSync } from "child_process"; import * as fs from "fs"; @@ -77,6 +77,7 @@ const PACKAGE_VERSION_MAP = { "25 - 27": null, "29.0 - 29.3": "~29.0", "29.4 - 29.5": "~29.4", + "29.6 - 29.7": "~29.6", }, "@jest/source-map": { "25.2 - 25.4": "~25.2", @@ -86,6 +87,7 @@ const PACKAGE_VERSION_MAP = { "29.0 - 29.1": "~29.0", "29.2 - 29.3": "~29.2", "29.4 - 29.5": "~29.4", + "29.6 - 29.7": "~29.6", }, "@jest/test-result": { "26.3 - 26.4": "~26.3", @@ -96,6 +98,7 @@ const PACKAGE_VERSION_MAP = { "@jest/types": { "26.3 - 26.4": "~26.3", "27.2 - 27.3": "~27.2", + "29.6 - 29.7": "~29.6", }, "babel-jest": { "26.3 - 26.4": "~26.3", @@ -107,7 +110,7 @@ const PACKAGE_VERSION_MAP = { "27.2 - 27.3": "~27.2", "29.0 - 29.1": "~29.0", "29.2 - 29.3": "~29.2", - "29.5 - 29.6": "~29.5", + "29.6 - 29.7": "~29.6", }, "babel-preset-jest": { "26.3 - 26.4": "~26.3", @@ -115,7 +118,7 @@ const PACKAGE_VERSION_MAP = { "27.2 - 27.3": "~27.2", "29.0 - 29.1": "~29.0", "29.2 - 29.3": "~29.2", - "29.5 - 29.6": "~29.5", + "29.6 - 29.7": "~29.6", }, "jest-changed-files": { "26.3 - 26.4": "~26.3", @@ -145,7 +148,8 @@ const PACKAGE_VERSION_MAP = { "^28": "~28.0", "29.0 - 29.1": "~29.0", "29.2 - 29.3": "~29.2", - "29.4 - 29.6": "~29.4", + "29.4 - 29.5": "~29.4", + "29.6 - 29.7": "~29.6", }, "jest-haste-map": { "26.3 - 26.4": "~26.3", @@ -163,7 +167,8 @@ const PACKAGE_VERSION_MAP = { "^28": "~28.0", "29.0 - 29.1": "~29.0", "29.2 - 29.3": "~29.2", - "29.4 - 29.6": "~29.4", + "29.4 - 29.5": "~29.4", + "29.6 - 29.7": "~29.6", }, "jest-serializer": { "25.2 - 25.4": "~25.2", diff --git a/yarn.lock b/yarn.lock index d805a5d..5eb8cd1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1408,8 +1408,8 @@ __metadata: linkType: hard "@cypress/request@npm:^2.88.10": - version: 2.88.11 - resolution: "@cypress/request@npm:2.88.11" + version: 2.88.12 + resolution: "@cypress/request@npm:2.88.12" dependencies: aws-sign2: ~0.7.0 aws4: ^1.8.0 @@ -1426,10 +1426,10 @@ __metadata: performance-now: ^2.1.0 qs: ~6.10.3 safe-buffer: ^5.1.2 - tough-cookie: ~2.5.0 + tough-cookie: ^4.1.3 tunnel-agent: ^0.6.0 uuid: ^8.3.2 - checksum: e4b3f62e0c41c4ccca6c942828461d8ea717e752fd918d685e9f74e2ebcfa8b7942427f7ce971e502635c3bf3d40011476db84dc753d3dc360c6d08350da6f93 + checksum: 2c6fbf7f3127d41bffca8374beaa8cf95450495a8a077b00309ea9d94dd2a4da450a77fe038e8ad26c97cdd7c39b65c53c850f8338ce9bc2dbe23ce2e2b48329 languageName: node linkType: hard @@ -2653,13 +2653,6 @@ __metadata: languageName: node linkType: hard -"@tootallnate/once@npm:1": - version: 1.1.2 - resolution: "@tootallnate/once@npm:1.1.2" - checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 - languageName: node - linkType: hard - "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -2667,6 +2660,13 @@ __metadata: languageName: node linkType: hard +"@tootallnate/quickjs-emscripten@npm:^0.23.0": + version: 0.23.0 + resolution: "@tootallnate/quickjs-emscripten@npm:0.23.0" + checksum: c350a2947ffb80b22e14ff35099fd582d1340d65723384a0fd0515e905e2534459ad2f301a43279a37308a27c99273c932e64649abd57d0bb3ca8c557150eccc + languageName: node + linkType: hard + "@tsconfig/node10@npm:^1.0.7": version: 1.0.8 resolution: "@tsconfig/node10@npm:1.0.8" @@ -3218,6 +3218,7 @@ __metadata: cross-env: ^7.0.3 cypress: 11.2 - 13 cypress-multi-reporters: ^1.6.3 + cypress-on-fix: ^1.0.2 dayjs: ^1.10.4 debug: ^4.3.3 deep-equal: ^2.0.5 @@ -3511,14 +3512,14 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.2.0": +"acorn-walk@npm:^8.1.1": version: 8.2.0 resolution: "acorn-walk@npm:8.2.0" checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 languageName: node linkType: hard -"acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0": +"acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0": version: 8.8.2 resolution: "acorn@npm:8.8.2" bin: @@ -3536,6 +3537,15 @@ __metadata: languageName: node linkType: hard +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": + version: 7.1.0 + resolution: "agent-base@npm:7.1.0" + dependencies: + debug: ^4.3.4 + checksum: f7828f991470a0cc22cb579c86a18cbae83d8a3cbed39992ab34fc7217c4d126017f1c74d0ab66be87f71455318a8ea3e757d6a37881b8d0f2a2c6aa55e5418f + languageName: node + linkType: hard + "agentkeepalive@npm:^4.2.1": version: 4.2.1 resolution: "agentkeepalive@npm:4.2.1" @@ -3808,7 +3818,7 @@ __metadata: languageName: node linkType: hard -"ast-types@npm:^0.13.2": +"ast-types@npm:^0.13.4": version: 0.13.4 resolution: "ast-types@npm:0.13.4" dependencies: @@ -4024,6 +4034,13 @@ __metadata: languageName: node linkType: hard +"basic-ftp@npm:^5.0.2": + version: 5.0.3 + resolution: "basic-ftp@npm:5.0.3" + checksum: 8b04e88eb85a64de9311721bb0707c9cd70453eefdd854cab85438e6f46fb6c597ddad57ed1acf0a9ede3c677b14e657f51051688a5f23d6f3ea7b5d9073b850 + languageName: node + linkType: hard + "bcrypt-pbkdf@npm:^1.0.0": version: 1.0.2 resolution: "bcrypt-pbkdf@npm:1.0.2" @@ -4773,6 +4790,7 @@ __metadata: "@unflakable/cypress-plugin": "workspace:^" cypress: 11.2 - 13 cypress-multi-reporters: ^1.6.3 + cypress-on-fix: ^1.0.2 mocha: =7.0.1 mocha-junit-reporter: ^2.2.0 process: ^0.11.10 @@ -4820,7 +4838,7 @@ __metadata: jest: ^29.5.0 jest-environment-node: ^29.5.0 jest-expect-message: ^1.1.3 - mockttp: ^3.7.5 + mockttp: ^3.9.2 semver: ^7.5.4 ts-jest: ^29.1.0 typescript: ^4.9.5 @@ -4840,6 +4858,13 @@ __metadata: languageName: node linkType: hard +"cypress-on-fix@npm:^1.0.2": + version: 1.0.2 + resolution: "cypress-on-fix@npm:1.0.2" + checksum: b35e0d49e4270237e7cbe95c21d458772d3df6bbb4423346c70f9417e61fdf061ad1d83aca76a854a378d001a68f50c17b8dd312fbe9c50b5d12e61fc317a785 + languageName: node + linkType: hard + "cypress@npm:11.2 - 13": version: 12.14.0 resolution: "cypress@npm:12.14.0" @@ -4901,10 +4926,10 @@ __metadata: languageName: node linkType: hard -"data-uri-to-buffer@npm:3": - version: 3.0.1 - resolution: "data-uri-to-buffer@npm:3.0.1" - checksum: c59c3009686a78c071806b72f4810856ec28222f0f4e252aa495ec027ed9732298ceea99c50328cf59b151dd34cbc3ad6150bbb43e41fc56fa19f48c99e9fc30 +"data-uri-to-buffer@npm:^5.0.1": + version: 5.0.1 + resolution: "data-uri-to-buffer@npm:5.0.1" + checksum: 10958f89c0047b84bd86d572b6b77c9bf238ebe7b55a9a9ab04c90fbf5ab1881783b72e31dc0febdffd30ec914930244f2f728e3629bb8911d922baba129426f languageName: node linkType: hard @@ -4991,7 +5016,7 @@ __metadata: languageName: node linkType: hard -"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": +"deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 @@ -5022,15 +5047,14 @@ __metadata: languageName: node linkType: hard -"degenerator@npm:^3.0.2": - version: 3.0.4 - resolution: "degenerator@npm:3.0.4" +"degenerator@npm:^5.0.0": + version: 5.0.1 + resolution: "degenerator@npm:5.0.1" dependencies: - ast-types: ^0.13.2 - escodegen: ^1.8.1 - esprima: ^4.0.0 - vm2: ^3.9.17 - checksum: 99c27c9456095e32c4f6e01091d2b5c249f246b574487c52bca571e1e586b02d4b74a0ea7f22f30cc953c914383d02e2038d7d476a22f2704a8c1e88b671007d + ast-types: ^0.13.4 + escodegen: ^2.1.0 + esprima: ^4.0.1 + checksum: a64fa39cdf6c2edd75188157d32338ee9de7193d7dbb2aeb4acb1eb30fa4a15ed80ba8dae9bd4d7b085472cf174a5baf81adb761aaa8e326771392c922084152 languageName: node linkType: hard @@ -5416,14 +5440,13 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^1.8.1": - version: 1.14.3 - resolution: "escodegen@npm:1.14.3" +"escodegen@npm:^2.1.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" dependencies: esprima: ^4.0.1 - estraverse: ^4.2.0 + estraverse: ^5.2.0 esutils: ^2.0.2 - optionator: ^0.8.1 source-map: ~0.6.1 dependenciesMeta: source-map: @@ -5431,7 +5454,7 @@ __metadata: bin: escodegen: bin/escodegen.js esgenerate: bin/esgenerate.js - checksum: 381cdc4767ecdb221206bbbab021b467bbc2a6f5c9a99c9e6353040080bdd3dfe73d7604ad89a47aca6ea7d58bc635f6bd3fbc8da9a1998e9ddfa8372362ccd0 + checksum: 096696407e161305cd05aebb95134ad176708bc5cb13d0dcc89a5fcbb959b8ed757e7f2591a5f8036f8f4952d4a724de0df14cd419e29212729fa6df5ce16bf6 languageName: node linkType: hard @@ -5646,7 +5669,7 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^4.1.1, estraverse@npm:^4.2.0": +"estraverse@npm:^4.1.1": version: 4.3.0 resolution: "estraverse@npm:4.3.0" checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 @@ -5883,7 +5906,7 @@ __metadata: languageName: node linkType: hard -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": +"fast-levenshtein@npm:^2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c @@ -5935,13 +5958,6 @@ __metadata: languageName: node linkType: hard -"file-uri-to-path@npm:2": - version: 2.0.0 - resolution: "file-uri-to-path@npm:2.0.0" - checksum: 4a71a99ddaa6ae7ae7bffe2948c34da59982ed465d930a0af9cb59fcc10fcd93366cc356ec3337c18373fde5df7ac52afda4558f155febd1799d135552207edb - languageName: node - linkType: hard - "fill-range@npm:^7.0.1": version: 7.0.1 resolution: "fill-range@npm:7.0.1" @@ -6020,14 +6036,12 @@ __metadata: languageName: node linkType: hard -"flat@npm:^4.1.0": - version: 4.1.1 - resolution: "flat@npm:4.1.1" - dependencies: - is-buffer: ~2.0.3 +"flat@npm:^5.0.2": + version: 5.0.2 + resolution: "flat@npm:5.0.2" bin: flat: cli.js - checksum: 398be12185eb0f3c59797c3670a8c35d07020b673363175676afbaf53d6b213660e060488554cf82c25504986e1a6059bdbcc5d562e87ca3e972e8a33148e3ae + checksum: 12a1536ac746db74881316a181499a78ef953632ddd28050b7a3a43c62ef5462e3357c8c29d76072bb635f147f7a9a1f0c02efef6b4be28f8db62ceb3d5c7f5d languageName: node linkType: hard @@ -6177,16 +6191,6 @@ __metadata: languageName: node linkType: hard -"ftp@npm:^0.3.10": - version: 0.3.10 - resolution: "ftp@npm:0.3.10" - dependencies: - readable-stream: 1.1.x - xregexp: 2.0.0 - checksum: ddd313c1d44eb7429f3a7d77a0155dc8fe86a4c64dca58f395632333ce4b4e74c61413c6e0ef66ea3f3d32d905952fbb6d028c7117d522f793eb1fa282e17357 - languageName: node - linkType: hard - "function-bind@npm:^1.1.1": version: 1.1.1 resolution: "function-bind@npm:1.1.1" @@ -6295,17 +6299,15 @@ __metadata: languageName: node linkType: hard -"get-uri@npm:3": - version: 3.0.2 - resolution: "get-uri@npm:3.0.2" +"get-uri@npm:^6.0.1": + version: 6.0.1 + resolution: "get-uri@npm:6.0.1" dependencies: - "@tootallnate/once": 1 - data-uri-to-buffer: 3 - debug: 4 - file-uri-to-path: 2 + basic-ftp: ^5.0.2 + data-uri-to-buffer: ^5.0.1 + debug: ^4.3.4 fs-extra: ^8.1.0 - ftp: ^0.3.10 - checksum: 5325b2906b08ca37529ca421cf52bc50376e75c6a945e0a8064e3f76b4bb67b8ab1e316a2fc7a307c8c606ab36d030720f39a57c97b027ff1134335e12102946 + checksum: a8aec70e1c67386fbe67f66e344ecd671a19f4cfc8e0f0e14d070563af5123d540e77fbceb6e26566f29846fac864d2862699ab134d307f85c85e7d72ce23d14 languageName: node linkType: hard @@ -6671,17 +6673,6 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^4.0.1": - version: 4.0.1 - resolution: "http-proxy-agent@npm:4.0.1" - dependencies: - "@tootallnate/once": 1 - agent-base: 6 - debug: 4 - checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 - languageName: node - linkType: hard - "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -6693,6 +6684,16 @@ __metadata: languageName: node linkType: hard +"http-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "http-proxy-agent@npm:7.0.0" + dependencies: + agent-base: ^7.1.0 + debug: ^4.3.4 + checksum: 48d4fac997917e15f45094852b63b62a46d0c8a4f0b9c6c23ca26d27b8df8d178bed88389e604745e748bd9a01f5023e25093722777f0593c3f052009ff438b6 + languageName: node + linkType: hard + "http-signature@npm:~1.3.6": version: 1.3.6 resolution: "http-signature@npm:1.3.6" @@ -6714,7 +6715,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:5, https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": +"https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" dependencies: @@ -6724,6 +6725,16 @@ __metadata: languageName: node linkType: hard +"https-proxy-agent@npm:^7.0.2": + version: 7.0.2 + resolution: "https-proxy-agent@npm:7.0.2" + dependencies: + agent-base: ^7.0.2 + debug: 4 + checksum: 088969a0dd476ea7a0ed0a2cf1283013682b08f874c3bc6696c83fa061d2c157d29ef0ad3eb70a2046010bb7665573b2388d10fdcb3e410a66995e5248444292 + languageName: node + linkType: hard + "human-signals@npm:^1.1.1": version: 1.1.1 resolution: "human-signals@npm:1.1.1" @@ -6832,7 +6843,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:~2.0.1, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 @@ -6857,10 +6868,10 @@ __metadata: languageName: node linkType: hard -"ip@npm:^1.1.5": - version: 1.1.5 - resolution: "ip@npm:1.1.5" - checksum: 30133981f082a060a32644f6a7746e9ba7ac9e2bc07ecc8bbdda3ee8ca9bec1190724c390e45a1ee7695e7edfd2a8f7dda2c104ec5f7ac5068c00648504c7e5a +"ip@npm:^1.1.8": + version: 1.1.8 + resolution: "ip@npm:1.1.8" + checksum: a2ade53eb339fb0cbe9e69a44caab10d6e3784662285eb5d2677117ee4facc33a64679051c35e0dfdb1a3983a51ce2f5d2cb36446d52e10d01881789b76e28fb languageName: node linkType: hard @@ -6941,13 +6952,6 @@ __metadata: languageName: node linkType: hard -"is-buffer@npm:~2.0.3": - version: 2.0.5 - resolution: "is-buffer@npm:2.0.5" - checksum: 764c9ad8b523a9f5a32af29bdf772b08eb48c04d2ad0a7240916ac2688c983bf5f8504bf25b35e66240edeb9d9085461f9b5dae1f3d2861c6b06a65fe983de42 - languageName: node - linkType: hard - "is-builtin-module@npm:^3.2.1": version: 3.2.1 resolution: "is-builtin-module@npm:3.2.1" @@ -7100,6 +7104,13 @@ __metadata: languageName: node linkType: hard +"is-plain-obj@npm:^1.1.0": + version: 1.1.0 + resolution: "is-plain-obj@npm:1.1.0" + checksum: 0ee04807797aad50859652a7467481816cbb57e5cc97d813a7dcd8915da8195dc68c436010bf39d195226cde6a2d352f4b815f16f26b7bf486a5754290629931 + languageName: node + linkType: hard + "is-reference@npm:1.2.1": version: 1.2.1 resolution: "is-reference@npm:1.2.1" @@ -7222,13 +7233,6 @@ __metadata: languageName: node linkType: hard -"isarray@npm:0.0.1": - version: 0.0.1 - resolution: "isarray@npm:0.0.1" - checksum: 49191f1425681df4a18c2f0f93db3adb85573bcdd6a4482539d98eac9e705d8961317b01175627e860516a2fc45f8f9302db26e5a380a97a520e272e2a40a8d4 - languageName: node - linkType: hard - "isarray@npm:^2.0.5": version: 2.0.5 resolution: "isarray@npm:2.0.5" @@ -7557,7 +7561,7 @@ __metadata: jest-environment-node: 25.1.0 - 29 jest-get-type: 25.1.0 - 29 jest-matcher-utils: 25.1.0 - 29 - mockttp: ^3.7.5 + mockttp: ^3.9.2 semver: ^7.5.4 tmp: ^0.2.1 typescript: ^4.9.5 @@ -8034,16 +8038,6 @@ __metadata: languageName: node linkType: hard -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - checksum: 0d084a524231a8246bb10fec48cdbb35282099f6954838604f3c7fc66f2e16fa66fd9cc2f3f20a541a113c4dafdf181e822c887c8a319c9195444e6c64ac395e - languageName: node - linkType: hard - "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" @@ -8135,7 +8129,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.16.4, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.21": +"lodash@npm:^4.16.4, lodash@npm:^4.17.14, lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -8372,11 +8366,11 @@ __metadata: linkType: hard "minimatch@npm:3.0.4": - version: 3.0.4 - resolution: "minimatch@npm:3.0.4" + version: 3.0.8 + resolution: "minimatch@npm:3.0.8" dependencies: brace-expansion: ^1.1.7 - checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 + checksum: 850cca179cad715133132693e6963b0db64ab0988c4d211415b087fc23a3e46321e2c5376a01bf5623d8782aba8bdf43c571e2e902e51fdce7175c7215c29f8b languageName: node linkType: hard @@ -8407,13 +8401,6 @@ __metadata: languageName: node linkType: hard -"minimist@npm:0.0.8": - version: 0.0.8 - resolution: "minimist@npm:0.0.8" - checksum: 042f8b626b1fa44dffc23bac55771425ac4ee9d267b56f9064c07713e516e1799f3ba933bb628d2475a210caf7dcdb98161611baa1f0daf49309a944cb4bc48f - languageName: node - linkType: hard - "minimist@npm:^1.2.0, minimist@npm:^1.2.6, minimist@npm:^1.2.8": version: 1.2.8 resolution: "minimist@npm:1.2.8" @@ -8498,18 +8485,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:0.5.1": - version: 0.5.1 - resolution: "mkdirp@npm:0.5.1" - dependencies: - minimist: 0.0.8 - bin: - mkdirp: bin/cmd.js - checksum: ed1ab49bb1d06c88dba7cfe930a3186f2605b5465aab7c8f24119baaba6e38f9ab4ac1695c68f476c65a48df2a69a8495049cd6e26c360ea082151a0771343d2 - languageName: node - linkType: hard - -"mkdirp@npm:^0.5.5": +"mkdirp@npm:0.5.1, mkdirp@npm:^0.5.5": version: 0.5.6 resolution: "mkdirp@npm:0.5.6" dependencies: @@ -8579,9 +8555,9 @@ __metadata: languageName: node linkType: hard -"mockttp@npm:^3.7.5": - version: 3.7.5 - resolution: "mockttp@npm:3.7.5" +"mockttp@npm:^3.9.2": + version: 3.9.2 + resolution: "mockttp@npm:3.9.2" dependencies: "@graphql-tools/schema": ^8.5.0 "@graphql-tools/utils": ^8.8.0 @@ -8612,19 +8588,19 @@ __metadata: lru-cache: ^7.14.0 native-duplexpair: ^1.0.0 node-forge: ^1.2.1 - pac-proxy-agent: ^5.0.0 + pac-proxy-agent: ^7.0.0 parse-multipart-data: ^1.4.0 performance-now: ^2.1.0 portfinder: 1.0.28 read-tls-client-hello: ^1.0.0 - semver: ^5.7.1 + semver: ^7.5.3 socks-proxy-agent: ^7.0.0 typed-error: ^3.0.2 uuid: ^8.3.2 ws: ^8.8.0 bin: mockttp: dist/admin/admin-bin.js - checksum: 0fe524add6bf879385584db3e98c9b3d6e16d7fc8ae175da23b2236ee61f0674f623099fa06c4cf5bd0008955445c34cb9520e639dfdcbbcf549b633445b56f9 + checksum: aa11f01ef7765b96a8ad135f97eddd72e548e626bab4c9fcef7bf52633b1f49e5e4cd2f763356d4ae1ea8bb7f5f4d52110681e46913fc5800b0713a99c273316 languageName: node linkType: hard @@ -8928,20 +8904,6 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: ~0.1.3 - fast-levenshtein: ~2.0.6 - levn: ~0.3.0 - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - word-wrap: ~1.2.3 - checksum: b8695ddf3d593203e25ab0900e265d860038486c943ff8b774f596a310f8ceebdb30c6832407a8198ba3ec9debe1abe1f51d4aad94843612db3b76d690c61d34 - languageName: node - linkType: hard - "optionator@npm:^0.9.1": version: 0.9.1 resolution: "optionator@npm:0.9.1" @@ -9024,31 +8986,30 @@ __metadata: languageName: node linkType: hard -"pac-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "pac-proxy-agent@npm:5.0.0" +"pac-proxy-agent@npm:^7.0.0": + version: 7.0.1 + resolution: "pac-proxy-agent@npm:7.0.1" dependencies: - "@tootallnate/once": 1 - agent-base: 6 - debug: 4 - get-uri: 3 - http-proxy-agent: ^4.0.1 - https-proxy-agent: 5 - pac-resolver: ^5.0.0 - raw-body: ^2.2.0 - socks-proxy-agent: 5 - checksum: cfd26a0e2ebfea4ca6162465018ce093bf147d26cf6c8fb3e7155bc7c184370d80d4d09a1c097e3db7676d0e3f574ea1cb56a4aa7d1d2e5cca6238935fabf010 + "@tootallnate/quickjs-emscripten": ^0.23.0 + agent-base: ^7.0.2 + debug: ^4.3.4 + get-uri: ^6.0.1 + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.2 + pac-resolver: ^7.0.0 + socks-proxy-agent: ^8.0.2 + checksum: 3d4aa48ec1c19db10158ecc1c4c9a9f77792294412d225ceb3dfa45d5a06950dca9755e2db0d9b69f12769119bea0adf2b24390d9c73c8d81df75e28245ae451 languageName: node linkType: hard -"pac-resolver@npm:^5.0.0": - version: 5.0.1 - resolution: "pac-resolver@npm:5.0.1" +"pac-resolver@npm:^7.0.0": + version: 7.0.0 + resolution: "pac-resolver@npm:7.0.0" dependencies: - degenerator: ^3.0.2 - ip: ^1.1.5 + degenerator: ^5.0.0 + ip: ^1.1.8 netmask: ^2.0.2 - checksum: e3bd8aada70d173cd4cec1ac810fb56161678b7a597060a740c4a31d9c5f8cd95687b2d0fd90b69c0cafe5ef787404074f38042ba08c8d378fed48973f58e493 + checksum: fa3a898c09848e93e35f5e23443fea36ddb393a851c76a23664a5bf3fcbe58ff77a0bcdae1e4f01b9ea87ea493c52e14d97a0fe39f92474d14cd45559c6e3cde languageName: node linkType: hard @@ -9229,13 +9190,6 @@ __metadata: languageName: node linkType: hard -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: c4867c87488e4a0c233e158e4d0d5565b609b105d75e4c05dc760840475f06b731332eb93cc8c9cecb840aa8ec323ca3c9a56ad7820ad2e63f0261dadcb154e4 - languageName: node - linkType: hard - "prettier@npm:^2.5.1": version: 2.5.1 resolution: "prettier@npm:2.5.1" @@ -9321,7 +9275,7 @@ __metadata: languageName: node linkType: hard -"psl@npm:^1.1.28": +"psl@npm:^1.1.33": version: 1.9.0 resolution: "psl@npm:1.9.0" checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d @@ -9370,6 +9324,13 @@ __metadata: languageName: node linkType: hard +"querystringify@npm:^2.1.1": + version: 2.2.0 + resolution: "querystringify@npm:2.2.0" + checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 + languageName: node + linkType: hard + "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -9412,7 +9373,7 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:2.5.2, raw-body@npm:^2.2.0, raw-body@npm:^2.4.1": +"raw-body@npm:2.5.2, raw-body@npm:^2.4.1": version: 2.5.2 resolution: "raw-body@npm:2.5.2" dependencies: @@ -9461,18 +9422,6 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:1.1.x": - version: 1.1.14 - resolution: "readable-stream@npm:1.1.14" - dependencies: - core-util-is: ~1.0.0 - inherits: ~2.0.1 - isarray: 0.0.1 - string_decoder: ~0.10.x - checksum: 17dfeae3e909945a4a1abc5613ea92d03269ef54c49288599507fc98ff4615988a1c39a999dcf9aacba70233d9b7040bc11a5f2bfc947e262dedcc0a8b32b5a0 - languageName: node - linkType: hard - "readable-stream@npm:^2.0.0, readable-stream@npm:^2.3.3": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" @@ -9599,6 +9548,13 @@ __metadata: languageName: node linkType: hard +"requires-port@npm:^1.0.0": + version: 1.0.0 + resolution: "requires-port@npm:1.0.0" + checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff + languageName: node + linkType: hard + "resolve-alpn@npm:^1.2.0": version: 1.2.1 resolution: "resolve-alpn@npm:1.2.1" @@ -9858,12 +9814,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:^5.7.0, semver@npm:^5.7.1": - version: 5.7.1 - resolution: "semver@npm:5.7.1" +"semver@npm:^5.7.0": + version: 5.7.2 + resolution: "semver@npm:5.7.2" bin: - semver: ./bin/semver - checksum: 57fd0acfd0bac382ee87cd52cd0aaa5af086a7dc8d60379dfe65fea491fb2489b6016400813930ecd61fd0952dae75c115287a1b16c234b1550887117744dfaf + semver: bin/semver + checksum: fb4ab5e0dd1c22ce0c937ea390b4a822147a9c53dbd2a9a0132f12fe382902beef4fbf12cf51bb955248d8d15874ce8cd89532569756384f994309825f10b686 languageName: node linkType: hard @@ -10045,17 +10001,6 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:5": - version: 5.0.1 - resolution: "socks-proxy-agent@npm:5.0.1" - dependencies: - agent-base: ^6.0.2 - debug: 4 - socks: ^2.3.3 - checksum: 1b60c4977b2fef783f0fc4dc619cd2758aafdb43f3cf679f1e3627cb6c6e752811cee5513ebb4157ad26786033d2f85029440f197d321e8293b38cc5aab01e06 - languageName: node - linkType: hard - "socks-proxy-agent@npm:^6.1.1": version: 6.1.1 resolution: "socks-proxy-agent@npm:6.1.1" @@ -10078,7 +10023,18 @@ __metadata: languageName: node linkType: hard -"socks@npm:^2.3.3, socks@npm:^2.6.1, socks@npm:^2.6.2": +"socks-proxy-agent@npm:^8.0.2": + version: 8.0.2 + resolution: "socks-proxy-agent@npm:8.0.2" + dependencies: + agent-base: ^7.0.2 + debug: ^4.3.4 + socks: ^2.7.1 + checksum: 4fb165df08f1f380881dcd887b3cdfdc1aba3797c76c1e9f51d29048be6e494c5b06d68e7aea2e23df4572428f27a3ec22b3d7c75c570c5346507433899a4b6d + languageName: node + linkType: hard + +"socks@npm:^2.6.1, socks@npm:^2.6.2, socks@npm:^2.7.1": version: 2.7.1 resolution: "socks@npm:2.7.1" dependencies: @@ -10277,13 +10233,6 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:~0.10.x": - version: 0.10.31 - resolution: "string_decoder@npm:0.10.31" - checksum: fe00f8e303647e5db919948ccb5ce0da7dea209ab54702894dd0c664edd98e5d4df4b80d6fabf7b9e92b237359d21136c95bf068b2f7760b772ca974ba970202 - languageName: node - linkType: hard - "string_decoder@npm:~1.1.1": version: 1.1.1 resolution: "string_decoder@npm:1.1.1" @@ -10576,13 +10525,15 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:~2.5.0": - version: 2.5.0 - resolution: "tough-cookie@npm:2.5.0" +"tough-cookie@npm:^4.1.3": + version: 4.1.3 + resolution: "tough-cookie@npm:4.1.3" dependencies: - psl: ^1.1.28 + psl: ^1.1.33 punycode: ^2.1.1 - checksum: 16a8cd090224dd176eee23837cbe7573ca0fa297d7e468ab5e1c02d49a4e9a97bb05fef11320605eac516f91d54c57838a25864e8680e27b069a5231d8264977 + universalify: ^0.2.0 + url-parse: ^1.5.3 + checksum: c9226afff36492a52118432611af083d1d8493a53ff41ec4ea48e5b583aec744b989e4280bcf476c910ec1525a89a4a0f1cae81c08b18fb2ec3a9b3a72b91dcc languageName: node linkType: hard @@ -10750,15 +10701,6 @@ __metadata: languageName: node linkType: hard -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: ~1.1.2 - checksum: dd3b1495642731bc0e1fc40abe5e977e0263005551ac83342ecb6f4f89551d106b368ec32ad3fb2da19b3bd7b2d1f64330da2ea9176d8ddbfe389fb286eb5124 - languageName: node - linkType: hard - "type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" @@ -10853,7 +10795,7 @@ __metadata: debug: ^4.3.3 deep-equal: ^2.0.5 expect: 25.1.0 - 29 - mockttp: ^3.7.5 + mockttp: ^3.9.2 rimraf: ^5.0.1 rollup: ^3.21.1 rollup-plugin-dts: ^5.3.0 @@ -10919,6 +10861,13 @@ __metadata: languageName: node linkType: hard +"universalify@npm:^0.2.0": + version: 0.2.0 + resolution: "universalify@npm:0.2.0" + checksum: e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 + languageName: node + linkType: hard + "universalify@npm:^2.0.0": version: 2.0.0 resolution: "universalify@npm:2.0.0" @@ -10963,6 +10912,16 @@ __metadata: languageName: node linkType: hard +"url-parse@npm:^1.5.3": + version: 1.5.10 + resolution: "url-parse@npm:1.5.10" + dependencies: + querystringify: ^2.1.1 + requires-port: ^1.0.0 + checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf + languageName: node + linkType: hard + "util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -11029,18 +10988,6 @@ __metadata: languageName: node linkType: hard -"vm2@npm:^3.9.17": - version: 3.9.19 - resolution: "vm2@npm:3.9.19" - dependencies: - acorn: ^8.7.0 - acorn-walk: ^8.2.0 - bin: - vm2: bin/vm2 - checksum: fc6cf553134145cd7bb5246985bf242b056e3fb5ea71e2eef6710b2a5d6c6119cc6bc960435ff62480ee82efb43369be8f4db07b6690916ae7d3b2e714f395d8 - languageName: node - linkType: hard - "walker@npm:^1.0.8": version: 1.0.8 resolution: "walker@npm:1.0.8" @@ -11216,10 +11163,10 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f +"word-wrap@npm:^1.2.3": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: f93ba3586fc181f94afdaff3a6fef27920b4b6d9eaefed0f428f8e07adea2a7f54a5f2830ce59406c8416f033f86902b91eb824072354645eea687dff3691ccb languageName: node linkType: hard @@ -11306,13 +11253,6 @@ __metadata: languageName: node linkType: hard -"xregexp@npm:2.0.0": - version: 2.0.0 - resolution: "xregexp@npm:2.0.0" - checksum: de62d1f01c9f1a67c80cafe48a3dc081b324249a0e88e65dc9acae9cce6d8e63c9d91c0f97e2ad2d8c5351c856c139c04dc55ebd941e59b7d1d5c1169e164cff - languageName: node - linkType: hard - "xtend@npm:^4.0.0": version: 4.0.2 resolution: "xtend@npm:4.0.2" @@ -11355,23 +11295,23 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:13.1.1": - version: 13.1.1 - resolution: "yargs-parser@npm:13.1.1" +"yargs-parser@npm:13.1.1, yargs-parser@npm:^13.1.1": + version: 13.1.2 + resolution: "yargs-parser@npm:13.1.2" dependencies: camelcase: ^5.0.0 decamelize: ^1.2.0 - checksum: fa5fd27736aa423dc9a114d160dae94625f7faf19c252b8c91ac0197be9715d1dbc9b98fda893f75f182111fb6c3c0ce60c631b73859dd1a06bec07cddfb98f4 + checksum: c8bb6f44d39a4acd94462e96d4e85469df865de6f4326e0ab1ac23ae4a835e5dd2ddfe588317ebf80c3a7e37e741bd5cb0dc8d92bcc5812baefb7df7c885e86b languageName: node linkType: hard -"yargs-parser@npm:^13.1.1, yargs-parser@npm:^13.1.2": - version: 13.1.2 - resolution: "yargs-parser@npm:13.1.2" +"yargs-parser@npm:^15.0.1": + version: 15.0.3 + resolution: "yargs-parser@npm:15.0.3" dependencies: camelcase: ^5.0.0 decamelize: ^1.2.0 - checksum: c8bb6f44d39a4acd94462e96d4e85469df865de6f4326e0ab1ac23ae4a835e5dd2ddfe588317ebf80c3a7e37e741bd5cb0dc8d92bcc5812baefb7df7c885e86b + checksum: 06611c1893fa9f1c25ae79df3c6e2edbac7c8d75257a4b55b8432cbc87ee03eda86bea0537f65b4b8a0d9684c83fa6e9ef61ef720a1e5cc8a9aa6893b54ee4c3 languageName: node linkType: hard @@ -11383,13 +11323,15 @@ __metadata: linkType: hard "yargs-unparser@npm:1.6.0": - version: 1.6.0 - resolution: "yargs-unparser@npm:1.6.0" + version: 1.6.4 + resolution: "yargs-unparser@npm:1.6.4" dependencies: - flat: ^4.1.0 - lodash: ^4.17.15 - yargs: ^13.3.0 - checksum: ca662bb94af53d816d47f2162f0a1d135783f09de9fd47645a5cb18dd25532b0b710432b680d2c065ff45de122ba4a96433c41595fa7bfcc08eb12e889db95c1 + camelcase: ^5.3.1 + decamelize: ^1.2.0 + flat: ^5.0.2 + is-plain-obj: ^1.1.0 + yargs: ^14.2.3 + checksum: 428695924f6dc3b660cab37e5f1bb46a7bc64bb81e583beaaf40155f2d33440e3776518528e98902d256ed68fe4cc74c54c0188481ce8dba6857bc1656b5ca06 languageName: node linkType: hard @@ -11411,11 +11353,12 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^13.3.0": - version: 13.3.2 - resolution: "yargs@npm:13.3.2" +"yargs@npm:^14.2.3": + version: 14.2.3 + resolution: "yargs@npm:14.2.3" dependencies: cliui: ^5.0.0 + decamelize: ^1.2.0 find-up: ^3.0.0 get-caller-file: ^2.0.1 require-directory: ^2.1.1 @@ -11424,8 +11367,8 @@ __metadata: string-width: ^3.0.0 which-module: ^2.0.0 y18n: ^4.0.0 - yargs-parser: ^13.1.2 - checksum: 75c13e837eb2bb25717957ba58d277e864efc0cca7f945c98bdf6477e6ec2f9be6afa9ed8a876b251a21423500c148d7b91e88dee7adea6029bdec97af1ef3e8 + yargs-parser: ^15.0.1 + checksum: 684fcb1896e6c873c31c09c5c16445d6253dfe505aa879cff56d49425f5bca44f2ab8d7a1c949f3b932ae8654128425e89770e5e2f2c3d816e5816b9eb6efb6f languageName: node linkType: hard pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy