mirror of
https://github.com/cypress-io/cypress.git
synced 2026-01-19 13:39:56 -06:00
* add retries output to server/reporter, fix mocha pass event order, cleanup
* e2e tests - dont run electron tests in other browsers
* Update readme to reflect how to start server for cypress tests
* fix after merge
* fix .coffee -> .js after merge
* fix attempt.tsx
* fix runnable titles emitted to terminal reporters
* fix more tests: update snapshots, fix 7_record_spec, 8_reporters_spec
* remove styling for 'attempt-error-region' so it's not indented
- This was the older styling before error improvements and is no longer
necessary.
* try 2: fix rerun before/after hooks
* fix runner with only, runner snapshots, lint fixes
* temp 04/29/20 [skip ci]
* backport changes from test-retries
* change logic to rerun before hooks after top navigation
* fix windowSize for browser e2e test
* fix windowSize for xvfb chrome in e2e test
* ok fine, just disable screenshots
* fix after merge: decaffed navigation.js
* update server/unit test snapshots
* fix after merge: decaffed aliases.js
* fix usage of cypress --parallel flag in circle.yml
* fix circle.yml integration-tests jobs
* fix decaf related typo
* fix circle.yml separate command for runner-integration-tests
* update runner/integration tests + snapshot after error improvements
* fix runner/integration snapshots for chrome/ff stacktrace differences
* rerun ci
* fix passing --parallel to runner-integration tests
* perf: faster lookup for hooks without runnables
* fix afterAll hook switch logic
* simplify mocha prototype patches
* fix decaf utils.coffee after merge
* backport to before/after fix
* backport to before/after fix 2
* cleanup from decaf, fix ui/package.json
* update helpers, simplify runner.spec
* fix lint-types errors, flaky spec
* fix noExit passed to e2e test inline options
* cleanup snapshot utility - refactor to use util file
* remove before/after changes
* make cy obj a class instance
* cleanup/unmerge before/after fixes PR...
* more cleanup
* add comment
* fix runner.spec
* cleanup snapshot utility more, cleanup reporter.spec
* fix after merge
* minor rename variable
* fix after merge: decaffed files
* fix specName in reporterHeader, spec_helper require
* replace reporter specPath usages with spec object from config
* cleanup, fix specs, fix types tests
* fix config spec paths in isolated runner, fix snapshot plugin button
* combine runner.spec.js and runner_spec.js
* fix incorrect merge
* minor minor cleanup
* rename driver/test/cypress to driver/test
* use yarn workspace over lerna for individual package commands
* add error message to driver start
* remove usage of wait-on
* update <reference types/>, import string
* fix driver/readme
* fix readmes after regex replace
* revert wait-on changes
* Revert "revert wait-on changes"
This reverts commit 6de684cf34.
* update yarn.lock
* fix broken path in spec
* fix broken paths in specs with @packages/driver
* move runner/test/cypress into runner/cypress
* start server in pluginsFile in runner/cypress tests
* fix more broken spec paths
* fix broken paths after runner/cypress folder move
* move type definition loading for driver/cypress into dedicated file
* move internal-types to "types" folder, fix driver/index.d.ts
* fix type-check in packages/runner. not exactly sure why
* fix runner type-check by excluding test folder in tsconfig
* bump timeout on e2e/8_error_ui_spec
* update snapshot utility, rename tests in runner/runner.spec, fix README yarn commands
* delete old spec
* fix snapshot naming, remove redundant test in reporter_spec
* fix file renames after merge
* rename runner/ snapshot
* update server/unit/reporter_spec snapshot
* update runner/runner_spec snapshot
* rename runner snapshot file
* address feedback: move server reporter snapshot specs out
* address feedback: add comment about exposing globals
* fix test-retries after merging isolated-runner
* fix runner/test helper, update snapshot
* address feedback: split out runner/retries spec, move reporter/ui tests to runner/ui spec (mostly done), various cleanup
* fix scrolling, attempt opening, update snapshots
* fix e2e support file
* fix 5_spec_isolation
* fix mislabeling attempt screenshots
* only add test results prevAttempts if exists
* fix reporter/unit tests, server/unit tests
* remove dead code, fix test isOpen
* update snapshots for retries.mochaEvents, fix snapshot error in state hydration test, remove dead snapshots
* new moduleAPI schema using attempts array, fix wrapping errors from hook retries, update snapshots
* add displayError, null out fields in moduleAPI schema
* change default retries to {runMode:2, openMode:0}
* fix reporter type-check
* upgrade json-schemas, update snapshots
* reformat error.stack to be only stacktrace, update snapshots
* fix stacktrace replacing in 5_spec_isolation
* fix navigation error causing infinite reloading, bump timeout on e2e/8_error_ui
* fix server/unit tests for new schema
* fix reporter/unit tests
* fix reporting duplicate screenshots using cy.screenshot during test retry
* update snapshot for 6_uncaught_support_file_spec
* bump x-route-version: 3
* fix test.tsx collapsible content, css, fix e2e/8_error_ui, e2e projects excluding retries
* fix css, fix padding in runnable-instruments, fix runner/integration tests
* fixup after merge
* fix reporter/runner to work with split hooks
* update api tests, runner/cypress tests, reporter
* fix 5_spec_isolation snapshots, fix runner/cypress errors.spec, fix null reference in test.tsx
* fix e2e/non_root spec, fix type_check, fix reporter/unit tests
* setup percy snapshots in runner/cypress, fix driver/runner test:after:run event, add tests for only,skip in runner/cypress, fix retried css
* add customPercySnapshot
* fix circle.yml
* fix circle.yml 2
* fix circle.yml 3
* add warning for incompatible retries plugin
* add more percy snapshots
* fix firefox screenshot resolution in e2e test
* Fix testConfigOverrides not affecting viewport (#8006)
* finish adding percy snapshots to runner/cypress retries spec, update error msgs, add tests to be fixed
* remove .only
* fixing missing repo argument
* fix testConfigOverrides usage with retries, fix test
* fix issues from previous merge
* add script that can query CircleCI workflow status
* add circleci job to poll
* add retries
* try yarn lock
* retry, percy finalize
* check for current running job
* do not swallow request error
* better print
* use job name from circle environment
* use debug instead
* renamed circle polling script
* refactor circle to conditionally run percy-finalize when env var is available
- pass job-names to wait on as an argument
* use multi-line strings and quote --job-names
- rename —circle-jobs to —job-names
* add comment
* only poll until the jobs to wait for are blocked or running
* fix running hooks at correct depth after attempt fails from hook and will retry, update e2e snapshots
* fix reporter/unit tests, remove unused toggleOpen code
* move custom percy command into @packages/ui-components and apply them to desktop-gui
* halt percy finalize job if env variable is not set
* if only I could code
* update runner/cypress mochaEvent snapshots, fix e2e firefox resolution
* fix css for attempt border-left, fix attempt-tag open/close icon, add color to attempt collapsible dot
* try percy set viewport width
* set default retries back to {runMode:0, openMode:0}
* formatting: add backticks to warning message
* write explicit test for screenshot overwriting behavior, fix snapshots after changing retries defaults
* fix e2e.it.only`
* cleanup whitespace
* update snapshots
* remap module API result, move e2e timing tests from 5_spec_isolation into 7_record_spec, unit test
* fix cypress module API types for new result schema
* build and upload binary for test-retries branch too (linux)
* update module api typedefs for moving screenshot info
* cleanup typedef
* small refactor, add cypress-inspect-brk feat to e2e tests, fix typedefs for moduleapi
* add pre-release PR comment
* fix pre-release commit comment
* rename runner/cypress test
* update retries.ui.spec test titles
* fix after merge: use most recent attempt for before/after hooks
* add suite title to hook error in runner/cypress tests
* fix snapshot
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Brian Mann <brian.mann86@gmail.com>
Co-authored-by: Gleb Bahmutov <gleb.bahmutov@gmail.com>
178 lines
3.6 KiB
JavaScript
178 lines
3.6 KiB
JavaScript
const _ = require('lodash')
|
|
const chalk = require('chalk')
|
|
const minimist = require('minimist')
|
|
const execa = require('execa')
|
|
const path = require('path')
|
|
const os = require('os')
|
|
|
|
const options = minimist(process.argv.slice(2))
|
|
|
|
let run = options._
|
|
|
|
if (options['spec']) {
|
|
console.error('NOTE: It is no longer necessary to pass `--spec` to server test commands. Try passing the path directly instead.')
|
|
run = [options.spec]
|
|
}
|
|
|
|
if (run[0] && run[0].includes('--inspect-brk')) {
|
|
run = run.slice(1)
|
|
}
|
|
|
|
if (options['glob-in-dir']) {
|
|
if (run[0]) {
|
|
run = [path.join(options['glob-in-dir'], '**', `*${run[0]}*`)]
|
|
} else {
|
|
run = [path.join(options['glob-in-dir'], '**')]
|
|
}
|
|
}
|
|
|
|
function exitErr (msg) {
|
|
console.error(chalk.red(msg))
|
|
|
|
return process.exit(1)
|
|
}
|
|
|
|
const isWindows = () => {
|
|
return os.platform() === 'win32'
|
|
}
|
|
|
|
const isGteNode12 = () => {
|
|
return Number(process.versions.node.split('.')[0]) >= 12
|
|
}
|
|
|
|
if (!run || !run.length) {
|
|
return exitErr(`
|
|
Error: A path to a spec file must be specified!
|
|
|
|
It should look something like this:
|
|
|
|
$ yarn test ./test/unit/api_spec.js
|
|
|
|
If you want to run all a specific group of tests:
|
|
|
|
$ yarn test-unit
|
|
$ yarn test-integration
|
|
$ yarn test-e2e
|
|
`)
|
|
}
|
|
|
|
const commandAndArguments = {
|
|
command: '',
|
|
args: [],
|
|
}
|
|
|
|
if (isWindows()) {
|
|
commandAndArguments.command = 'mocha'
|
|
commandAndArguments.args = run.slice()
|
|
} else {
|
|
commandAndArguments.command = 'xvfb-maybe'
|
|
// this should always match cli/lib/exec/xvfb.js
|
|
commandAndArguments.args = [
|
|
`-as`,
|
|
`"-screen 0 1280x1024x24"`,
|
|
`--`,
|
|
'node',
|
|
]
|
|
}
|
|
|
|
if (options['inspect-brk']) {
|
|
commandAndArguments.args.push(
|
|
'--inspect',
|
|
`--inspect-brk${options['inspect-brk'] === true ? '' : `=${options['inspect-brk']}`}`,
|
|
)
|
|
}
|
|
|
|
if (isGteNode12()) {
|
|
// max HTTP header size 8kb -> 1mb
|
|
// https://github.com/cypress-io/cypress/issues/76
|
|
commandAndArguments.args.push(
|
|
`--max-http-header-size=${1024 * 1024} --http-parser=legacy`,
|
|
)
|
|
}
|
|
|
|
if (!isWindows()) {
|
|
commandAndArguments.args.push(
|
|
'node_modules/.bin/_mocha',
|
|
)
|
|
|
|
commandAndArguments.args = commandAndArguments.args.concat(run)
|
|
}
|
|
|
|
if (options.fgrep) {
|
|
commandAndArguments.args.push(
|
|
'--fgrep',
|
|
options.fgrep,
|
|
)
|
|
}
|
|
|
|
commandAndArguments.args.push(
|
|
'--timeout',
|
|
options['inspect-brk'] ? '40000000' : '10000',
|
|
'--recursive',
|
|
'-r @packages/ts/register',
|
|
'--reporter',
|
|
'mocha-multi-reporters',
|
|
'--reporter-options',
|
|
'configFile=../../mocha-reporter-config.json',
|
|
'--extension=js,ts',
|
|
// restore mocha 2.x behavior to force end process after spec run
|
|
'--exit',
|
|
)
|
|
|
|
const env = _.clone(process.env)
|
|
|
|
env.NODE_ENV = 'test'
|
|
env.CYPRESS_INTERNAL_ENV = 'test'
|
|
|
|
if (env.VERBOSE === '1') {
|
|
_.extend(env, {
|
|
CYPRESS_DEBUG: true,
|
|
NODE_DEBUG: 'request',
|
|
BLUEBIRD_DEBUG: 1,
|
|
DEBUG: _.chain([
|
|
env.DEBUG,
|
|
'nock.*',
|
|
'-nock.common',
|
|
'-nock.scope',
|
|
'-nock.interceptor',
|
|
'socket.io:*',
|
|
'xvfb-maybe',
|
|
])
|
|
.compact()
|
|
.join(','),
|
|
})
|
|
}
|
|
|
|
if (options.browser) {
|
|
env.BROWSER = options.browser
|
|
}
|
|
|
|
if (options.headed) {
|
|
env.HEADED = true
|
|
}
|
|
|
|
if (options.exit === false) {
|
|
env.NO_EXIT = '1'
|
|
}
|
|
|
|
if (options['cypress-inspect-brk']) {
|
|
env.CYPRESS_INSPECT_BRK = '1'
|
|
}
|
|
|
|
const cmd = `${commandAndArguments.command} ${
|
|
commandAndArguments.args.join(' ')}`
|
|
|
|
console.log('specfiles:', run)
|
|
console.log('test command:')
|
|
console.log(cmd)
|
|
|
|
const child = execa.shell(cmd, { env, stdio: 'inherit' })
|
|
|
|
child.on('exit', (code, signal) => {
|
|
if (signal) {
|
|
console.error(`tests exited with signal ${signal}`)
|
|
}
|
|
|
|
process.exit(code === null ? 1 : code)
|
|
})
|