diff --git a/.eslintignore b/.eslintignore index f89d1d0f27ff..086b6069fa73 100644 --- a/.eslintignore +++ b/.eslintignore @@ -26,7 +26,7 @@ packages/server/lib/scaffold/plugins/index.js packages/server/lib/scaffold/support/index.js packages/server/lib/scaffold/support/commands.js packages/server/test/support/fixtures/projects/e2e/cypress/integration/stdout_exit_early_failing_spec.js -packages/server/test/support/fixtures/projects/e2e/cypress/integration/browserify_typescript_failing_spec.ts +packages/server/test/support/fixtures/projects/e2e/cypress/integration/typescript_failing_spec.ts **/.projects **/*.d.ts diff --git a/packages/server/__snapshots__/1_busted_support_file_spec.js b/packages/server/__snapshots__/1_busted_support_file_spec.js index 5e07b4965537..13f96bdac038 100644 --- a/packages/server/__snapshots__/1_busted_support_file_spec.js +++ b/packages/server/__snapshots__/1_busted_support_file_spec.js @@ -21,7 +21,18 @@ Oops...we found an error preparing this test file: The error was: -Error: Cannot find module './does/not/exist' from '/foo/bar/.projects/busted-support-file/cypress/support' +Error: Webpack Compilation Error +./cypress/support/index.js +Module not found: Error: Can't resolve './does/not/exist' in '/foo/bar/.projects/busted-support-file/cypress/support' +Looked for and couldn't find the file at the following paths: +[/foo/bar/.projects/busted-support-file/cypress/support/does/not/exist] +[/foo/bar/.projects/busted-support-file/cypress/support/does/not/exist.js] +[/foo/bar/.projects/busted-support-file/cypress/support/does/not/exist.json] +[/foo/bar/.projects/busted-support-file/cypress/support/does/not/exist.jsx] +[/foo/bar/.projects/busted-support-file/cypress/support/does/not/exist.coffee] +[/foo/bar/.projects/busted-support-file/cypress/support/does/not/exist.ts] +[/foo/bar/.projects/busted-support-file/cypress/support/does/not/exist.tsx] + @ ./cypress/support/index.js 3:0-27 This occurred while Cypress was compiling and bundling your test code. This is usually caused by: diff --git a/packages/server/__snapshots__/1_browserify_babel_es201_spec.js b/packages/server/__snapshots__/1_es_modules_spec.js similarity index 84% rename from packages/server/__snapshots__/1_browserify_babel_es201_spec.js rename to packages/server/__snapshots__/1_es_modules_spec.js index aa760b12e4a9..07b9c4ae4b8a 100644 --- a/packages/server/__snapshots__/1_browserify_babel_es201_spec.js +++ b/packages/server/__snapshots__/1_es_modules_spec.js @@ -1,4 +1,4 @@ -exports['e2e browserify, babel, es2015 passes 1'] = ` +exports['e2e es modules passes 1'] = ` ==================================================================================================== @@ -7,14 +7,14 @@ exports['e2e browserify, babel, es2015 passes 1'] = ` ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Cypress: 1.2.3 │ │ Browser: FooBrowser 88 │ - │ Specs: 1 found (browserify_babel_es2015_passing_spec.coffee) │ - │ Searched: cypress/integration/browserify_babel_es2015_passing_spec.coffee │ + │ Specs: 1 found (es_modules_in_coffee_spec.coffee) │ + │ Searched: cypress/integration/es_modules_in_coffee_spec.coffee │ └────────────────────────────────────────────────────────────────────────────────────────────────┘ ──────────────────────────────────────────────────────────────────────────────────────────────────── - Running: browserify_babel_es2015_passing_spec.coffee (1 of 1) + Running: es_modules_in_coffee_spec.coffee (1 of 1) imports work @@ -37,15 +37,15 @@ exports['e2e browserify, babel, es2015 passes 1'] = ` │ Screenshots: 0 │ │ Video: true │ │ Duration: X seconds │ - │ Spec Ran: browserify_babel_es2015_passing_spec.coffee │ + │ Spec Ran: es_modules_in_coffee_spec.coffee │ └────────────────────────────────────────────────────────────────────────────────────────────────┘ (Video) - Started processing: Compressing to 32 CRF - - Finished processing: /XXX/XXX/XXX/cypress/videos/browserify_babel_es2015_passing (X second) - _spec.coffee.mp4 + - Finished processing: /XXX/XXX/XXX/cypress/videos/es_modules_in_coffee_spec.coffe (X second) + e.mp4 ==================================================================================================== @@ -55,15 +55,14 @@ exports['e2e browserify, babel, es2015 passes 1'] = ` Spec Tests Passing Failing Pending Skipped ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ - │ ✔ browserify_babel_es2015_passing_spe XX:XX 3 3 - - - │ - │ c.coffee │ + │ ✔ es_modules_in_coffee_spec.coffee XX:XX 3 3 - - - │ └────────────────────────────────────────────────────────────────────────────────────────────────┘ ✔ All specs passed! XX:XX 3 3 - - - ` -exports['e2e browserify, babel, es2015 fails 1'] = ` +exports['e2e es modules fails 1'] = ` ==================================================================================================== @@ -72,26 +71,31 @@ exports['e2e browserify, babel, es2015 fails 1'] = ` ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Cypress: 1.2.3 │ │ Browser: FooBrowser 88 │ - │ Specs: 1 found (browserify_babel_es2015_failing_spec.js) │ - │ Searched: cypress/integration/browserify_babel_es2015_failing_spec.js │ + │ Specs: 1 found (es_module_import_failing_spec.js) │ + │ Searched: cypress/integration/es_module_import_failing_spec.js │ └────────────────────────────────────────────────────────────────────────────────────────────────┘ ──────────────────────────────────────────────────────────────────────────────────────────────────── - Running: browserify_babel_es2015_failing_spec.js (1 of 1) + Running: es_module_import_failing_spec.js (1 of 1) Oops...we found an error preparing this test file: - /foo/bar/.projects/e2e/cypress/integration/browserify_babel_es2015_failing_spec.js + /foo/bar/.projects/e2e/cypress/integration/es_module_import_failing_spec.js The error was: +Error: Webpack Compilation Error +./lib/fail.js +Module build failed (from [..]): SyntaxError: /foo/bar/.projects/e2e/lib/fail.js: Unexpected token (2:0) 1 | export default { > 2 | - | ^ while parsing file: /foo/bar/.projects/e2e/lib/fail.js + | ^ + + @ ./cypress/integration/es_module_import_failing_spec.js 3:0-25 This occurred while Cypress was compiling and bundling your test code. This is usually caused by: @@ -111,15 +115,15 @@ Fix the error in your code and re-run your tests. │ Screenshots: 0 │ │ Video: true │ │ Duration: X seconds │ - │ Spec Ran: browserify_babel_es2015_failing_spec.js │ + │ Spec Ran: es_module_import_failing_spec.js │ └────────────────────────────────────────────────────────────────────────────────────────────────┘ (Video) - Started processing: Compressing to 32 CRF - - Finished processing: /XXX/XXX/XXX/cypress/videos/browserify_babel_es2015_failing (X second) - _spec.js.mp4 + - Finished processing: /XXX/XXX/XXX/cypress/videos/es_module_import_failing_spec.j (X second) + s.mp4 ==================================================================================================== @@ -129,8 +133,7 @@ Fix the error in your code and re-run your tests. Spec Tests Passing Failing Pending Skipped ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ - │ ✖ browserify_babel_es2015_failing_spe XX:XX - - 1 - - │ - │ c.js │ + │ ✖ es_module_import_failing_spec.js XX:XX - - 1 - - │ └────────────────────────────────────────────────────────────────────────────────────────────────┘ ✖ 1 of 1 failed (100%) XX:XX - - 1 - - diff --git a/packages/server/__snapshots__/1_typescript_support_spec.js b/packages/server/__snapshots__/1_typescript_support_spec.js deleted file mode 100644 index fe53ebdc7c7f..000000000000 --- a/packages/server/__snapshots__/1_typescript_support_spec.js +++ /dev/null @@ -1,226 +0,0 @@ -exports['e2e typescript spec passes 1'] = ` - -==================================================================================================== - - (Run Starting) - - ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ - │ Cypress: 1.2.3 │ - │ Browser: FooBrowser 88 │ - │ Specs: 1 found (browserify_typescript_passing_spec.ts) │ - │ Searched: cypress/integration/browserify_typescript_passing_spec.ts │ - └────────────────────────────────────────────────────────────────────────────────────────────────┘ - - -──────────────────────────────────────────────────────────────────────────────────────────────────── - - Running: browserify_typescript_passing_spec.ts (1 of 1) - - - imports work - ✓ foo coffee - ✓ bar babel - ✓ dom jsx - - - 3 passing - - - (Results) - - ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ - │ Tests: 3 │ - │ Passing: 3 │ - │ Failing: 0 │ - │ Pending: 0 │ - │ Skipped: 0 │ - │ Screenshots: 0 │ - │ Video: true │ - │ Duration: X seconds │ - │ Spec Ran: browserify_typescript_passing_spec.ts │ - └────────────────────────────────────────────────────────────────────────────────────────────────┘ - - - (Video) - - - Started processing: Compressing to 32 CRF - - Finished processing: /XXX/XXX/XXX/cypress/videos/browserify_typescript_passing_s (X second) - pec.ts.mp4 - - -==================================================================================================== - - (Run Finished) - - - Spec Tests Passing Failing Pending Skipped - ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ - │ ✔ browserify_typescript_passing_spec. XX:XX 3 3 - - - │ - │ ts │ - └────────────────────────────────────────────────────────────────────────────────────────────────┘ - ✔ All specs passed! XX:XX 3 3 - - - - - -` - -exports['e2e typescript spec fails 1'] = ` - -==================================================================================================== - - (Run Starting) - - ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ - │ Cypress: 1.2.3 │ - │ Browser: FooBrowser 88 │ - │ Specs: 1 found (browserify_typescript_failing_spec.ts) │ - │ Searched: cypress/integration/browserify_typescript_failing_spec.ts │ - └────────────────────────────────────────────────────────────────────────────────────────────────┘ - - -──────────────────────────────────────────────────────────────────────────────────────────────────── - - Running: browserify_typescript_failing_spec.ts (1 of 1) - -Oops...we found an error preparing this test file: - - /foo/bar/.projects/e2e/cypress/integration/browserify_typescript_failing_spec.ts - -The error was: - -/foo/bar/.projects/e2e/cypress/integration/browserify_typescript_failing_spec.ts:3 -describe('fail', - > ); - ^ -ParseError: Unexpected token - -This occurred while Cypress was compiling and bundling your test code. This is usually caused by: - -- A missing file or dependency -- A syntax error in the file or one of its dependencies - -Fix the error in your code and re-run your tests. - - (Results) - - ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ - │ Tests: 0 │ - │ Passing: 0 │ - │ Failing: 1 │ - │ Pending: 0 │ - │ Skipped: 0 │ - │ Screenshots: 0 │ - │ Video: true │ - │ Duration: X seconds │ - │ Spec Ran: browserify_typescript_failing_spec.ts │ - └────────────────────────────────────────────────────────────────────────────────────────────────┘ - - - (Video) - - - Started processing: Compressing to 32 CRF - - Finished processing: /XXX/XXX/XXX/cypress/videos/browserify_typescript_failing_s (X second) - pec.ts.mp4 - - -==================================================================================================== - - (Run Finished) - - - Spec Tests Passing Failing Pending Skipped - ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ - │ ✖ browserify_typescript_failing_spec. XX:XX - - 1 - - │ - │ ts │ - └────────────────────────────────────────────────────────────────────────────────────────────────┘ - ✖ 1 of 1 failed (100%) XX:XX - - 1 - - - - -` - -exports['e2e typescript project passes 1'] = ` - -==================================================================================================== - - (Run Starting) - - ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ - │ Cypress: 1.2.3 │ - │ Browser: FooBrowser 88 │ - │ Specs: 2 found (app_spec.ts, math.ts) │ - └────────────────────────────────────────────────────────────────────────────────────────────────┘ - - -──────────────────────────────────────────────────────────────────────────────────────────────────── - - Running: app_spec.ts (1 of 2) - - - ✓ is true - - 1 passing - - - (Results) - - ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ - │ Tests: 1 │ - │ Passing: 1 │ - │ Failing: 0 │ - │ Pending: 0 │ - │ Skipped: 0 │ - │ Screenshots: 0 │ - │ Video: true │ - │ Duration: X seconds │ - │ Spec Ran: app_spec.ts │ - └────────────────────────────────────────────────────────────────────────────────────────────────┘ - - - (Video) - - - Started processing: Compressing to 32 CRF - - Finished processing: /XXX/XXX/XXX/cypress/videos/app_spec.ts.mp4 (X second) - - -──────────────────────────────────────────────────────────────────────────────────────────────────── - - Running: math.ts (2 of 2) - - - 0 passing - - - (Results) - - ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ - │ Tests: 0 │ - │ Passing: 0 │ - │ Failing: 0 │ - │ Pending: 0 │ - │ Skipped: 0 │ - │ Screenshots: 0 │ - │ Video: true │ - │ Duration: X seconds │ - │ Spec Ran: math.ts │ - └────────────────────────────────────────────────────────────────────────────────────────────────┘ - - - (Video) - - - Started processing: Compressing to 32 CRF - - Finished processing: /XXX/XXX/XXX/cypress/videos/math.ts.mp4 (X second) - - -==================================================================================================== - - (Run Finished) - - - Spec Tests Passing Failing Pending Skipped - ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ - │ ✔ app_spec.ts XX:XX 1 1 - - - │ - ├────────────────────────────────────────────────────────────────────────────────────────────────┤ - │ ✔ math.ts XX:XX - - - - - │ - └────────────────────────────────────────────────────────────────────────────────────────────────┘ - ✔ All specs passed! XX:XX 1 1 - - - - - -` diff --git a/packages/server/__snapshots__/1_typescript_support_spec.ts.js b/packages/server/__snapshots__/1_typescript_support_spec.ts.js index 3363bf4d83ca..4911a6df2557 100644 --- a/packages/server/__snapshots__/1_typescript_support_spec.ts.js +++ b/packages/server/__snapshots__/1_typescript_support_spec.ts.js @@ -7,14 +7,14 @@ exports['e2e typescript spec passes 1'] = ` ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Cypress: 1.2.3 │ │ Browser: FooBrowser 88 │ - │ Specs: 1 found (browserify_typescript_passing_spec.ts) │ - │ Searched: cypress/integration/browserify_typescript_passing_spec.ts │ + │ Specs: 1 found (typescript_passing_spec.ts) │ + │ Searched: cypress/integration/typescript_passing_spec.ts │ └────────────────────────────────────────────────────────────────────────────────────────────────┘ ──────────────────────────────────────────────────────────────────────────────────────────────────── - Running: browserify_typescript_passing_spec.ts (1 of 1) + Running: typescript_passing_spec.ts (1 of 1) imports work @@ -38,15 +38,14 @@ exports['e2e typescript spec passes 1'] = ` │ Screenshots: 0 │ │ Video: true │ │ Duration: X seconds │ - │ Spec Ran: browserify_typescript_passing_spec.ts │ + │ Spec Ran: typescript_passing_spec.ts │ └────────────────────────────────────────────────────────────────────────────────────────────────┘ (Video) - Started processing: Compressing to 32 CRF - - Finished processing: /XXX/XXX/XXX/cypress/videos/browserify_typescript_passing_s (X second) - pec.ts.mp4 + - Finished processing: /XXX/XXX/XXX/cypress/videos/typescript_passing_spec.ts.mp4 (X second) ==================================================================================================== @@ -56,8 +55,7 @@ exports['e2e typescript spec passes 1'] = ` Spec Tests Passing Failing Pending Skipped ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ - │ ✔ browserify_typescript_passing_spec. XX:XX 4 4 - - - │ - │ ts │ + │ ✔ typescript_passing_spec.ts XX:XX 4 4 - - - │ └────────────────────────────────────────────────────────────────────────────────────────────────┘ ✔ All specs passed! XX:XX 4 4 - - - @@ -73,25 +71,31 @@ exports['e2e typescript spec fails 1'] = ` ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Cypress: 1.2.3 │ │ Browser: FooBrowser 88 │ - │ Specs: 1 found (browserify_typescript_failing_spec.ts) │ - │ Searched: cypress/integration/browserify_typescript_failing_spec.ts │ + │ Specs: 1 found (typescript_failing_spec.ts) │ + │ Searched: cypress/integration/typescript_failing_spec.ts │ └────────────────────────────────────────────────────────────────────────────────────────────────┘ ──────────────────────────────────────────────────────────────────────────────────────────────────── - Running: browserify_typescript_failing_spec.ts (1 of 1) + Running: typescript_failing_spec.ts (1 of 1) Oops...we found an error preparing this test file: - /foo/bar/.projects/e2e/cypress/integration/browserify_typescript_failing_spec.ts + /foo/bar/.projects/e2e/cypress/integration/typescript_failing_spec.ts The error was: -/foo/bar/.projects/e2e/cypress/integration/browserify_typescript_failing_spec.ts:3 -describe('fail', - > ); - ^ -ParseError: Unexpected token +Error: Webpack Compilation Error +./cypress/integration/typescript_failing_spec.tsXX:XX +Module parse failed: Unexpected token (4:19) +File was processed with these loaders: + * ../../../../node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/ts-loader/index.js +You may need an additional loader to handle the result of these loaders. +| // The code below is ignored by eslint +| // because it tests failing spec. +> describe('fail', - > ); +| This occurred while Cypress was compiling and bundling your test code. This is usually caused by: @@ -111,15 +115,14 @@ Fix the error in your code and re-run your tests. │ Screenshots: 0 │ │ Video: true │ │ Duration: X seconds │ - │ Spec Ran: browserify_typescript_failing_spec.ts │ + │ Spec Ran: typescript_failing_spec.ts │ └────────────────────────────────────────────────────────────────────────────────────────────────┘ (Video) - Started processing: Compressing to 32 CRF - - Finished processing: /XXX/XXX/XXX/cypress/videos/browserify_typescript_failing_s (X second) - pec.ts.mp4 + - Finished processing: /XXX/XXX/XXX/cypress/videos/typescript_failing_spec.ts.mp4 (X second) ==================================================================================================== @@ -129,8 +132,7 @@ Fix the error in your code and re-run your tests. Spec Tests Passing Failing Pending Skipped ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ - │ ✖ browserify_typescript_failing_spec. XX:XX - - 1 - - │ - │ ts │ + │ ✖ typescript_failing_spec.ts XX:XX - - 1 - - │ └────────────────────────────────────────────────────────────────────────────────────────────────┘ ✖ 1 of 1 failed (100%) XX:XX - - 1 - - diff --git a/packages/server/__snapshots__/5_spec_isolation_spec.js b/packages/server/__snapshots__/5_spec_isolation_spec.js index a756c1dbb073..93dd31c25ea3 100644 --- a/packages/server/__snapshots__/5_spec_isolation_spec.js +++ b/packages/server/__snapshots__/5_spec_isolation_spec.js @@ -39,7 +39,7 @@ exports['e2e spec isolation fails'] = { "title": [ "\"before all\" hook" ], - "body": "function () {\n if (Cypress.browser.family === 'chromium' && Cypress.browser.name !== 'electron') {\n return Cypress.automation('remote:debugger:protocol', {\n command: 'Emulation.setDeviceMetricsOverride',\n params: {\n width: 1280,\n height: 720,\n deviceScaleFactor: 1,\n mobile: false,\n screenWidth: 1280,\n screenHeight: 720,\n },\n })\n .then(function () {\n // can't tell expect() not to log, so manually throwing here\n if (window.devicePixelRatio !== 1) {\n throw new Error('Setting devicePixelRatio to 1 failed');\n }\n });\n }\n}" + "body": "function () {\n if (Cypress.browser.family === 'chromium' && Cypress.browser.name !== 'electron') {\n return Cypress.automation('remote:debugger:protocol', {\n command: 'Emulation.setDeviceMetricsOverride',\n params: {\n width: 1280,\n height: 720,\n deviceScaleFactor: 1,\n mobile: false,\n screenWidth: 1280,\n screenHeight: 720\n }\n }).then(function () {\n // can't tell expect() not to log, so manually throwing here\n if (window.devicePixelRatio !== 1) {\n throw new Error('Setting devicePixelRatio to 1 failed');\n }\n });\n }\n}" }, { "hookId": "h2", @@ -47,7 +47,7 @@ exports['e2e spec isolation fails'] = { "title": [ "\"before each\" hook" ], - "body": "function () {\n throw new Error(\"fail1\");\n }" + "body": "function() {\n throw new Error(\"fail1\");\n }" }, { "hookId": "h3", @@ -55,7 +55,7 @@ exports['e2e spec isolation fails'] = { "title": [ "\"after each\" hook" ], - "body": "function () {\n throw new Error(\"fail2\");\n }" + "body": "function() {\n throw new Error(\"fail2\");\n }" }, { "hookId": "h4", @@ -63,7 +63,7 @@ exports['e2e spec isolation fails'] = { "title": [ "\"after all\" hook" ], - "body": "function () {\n throw new Error(\"fail3\");\n }" + "body": "function() {\n throw new Error(\"fail3\");\n }" } ], "tests": [ @@ -75,7 +75,7 @@ exports['e2e spec isolation fails'] = { "never gets here" ], "state": "failed", - "body": "function () { }", + "body": "function() {}", "stack": "Error: fail1\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `beforeEach hooks`\n [stack trace lines]", "error": "fail1\n\nBecause this error occurred during a `before each` hook we are skipping the remaining tests in the current suite: `beforeEach hooks`", "timings": { @@ -125,7 +125,7 @@ exports['e2e spec isolation fails'] = { "runs this" ], "state": "failed", - "body": "function () { }", + "body": "function() {}", "stack": "Error: fail2\n\nBecause this error occurred during a `after each` hook we are skipping the remaining tests in the current suite: `afterEach hooks`\n [stack trace lines]", "error": "fail2\n\nBecause this error occurred during a `after each` hook we are skipping the remaining tests in the current suite: `afterEach hooks`", "timings": { @@ -155,7 +155,7 @@ exports['e2e spec isolation fails'] = { "does not run this" ], "state": "skipped", - "body": "function () { }", + "body": "function() {}", "stack": null, "error": null, "timings": null, @@ -172,7 +172,7 @@ exports['e2e spec isolation fails'] = { "runs this" ], "state": "passed", - "body": "function () { }", + "body": "function() {}", "stack": null, "error": null, "timings": { @@ -195,7 +195,7 @@ exports['e2e spec isolation fails'] = { "fails on this" ], "state": "failed", - "body": "function () { }", + "body": "function() {}", "stack": "Error: fail3\n\nBecause this error occurred during a `after all` hook we are skipping the remaining tests in the current suite: `after hooks`\n [stack trace lines]", "error": "fail3\n\nBecause this error occurred during a `after all` hook we are skipping the remaining tests in the current suite: `after hooks`", "timings": { @@ -287,7 +287,7 @@ exports['e2e spec isolation fails'] = { "title": [ "\"before all\" hook" ], - "body": "function () {\n if (Cypress.browser.family === 'chromium' && Cypress.browser.name !== 'electron') {\n return Cypress.automation('remote:debugger:protocol', {\n command: 'Emulation.setDeviceMetricsOverride',\n params: {\n width: 1280,\n height: 720,\n deviceScaleFactor: 1,\n mobile: false,\n screenWidth: 1280,\n screenHeight: 720,\n },\n })\n .then(function () {\n // can't tell expect() not to log, so manually throwing here\n if (window.devicePixelRatio !== 1) {\n throw new Error('Setting devicePixelRatio to 1 failed');\n }\n });\n }\n}" + "body": "function () {\n if (Cypress.browser.family === 'chromium' && Cypress.browser.name !== 'electron') {\n return Cypress.automation('remote:debugger:protocol', {\n command: 'Emulation.setDeviceMetricsOverride',\n params: {\n width: 1280,\n height: 720,\n deviceScaleFactor: 1,\n mobile: false,\n screenWidth: 1280,\n screenHeight: 720\n }\n }).then(function () {\n // can't tell expect() not to log, so manually throwing here\n if (window.devicePixelRatio !== 1) {\n throw new Error('Setting devicePixelRatio to 1 failed');\n }\n });\n }\n}" } ], "tests": [ @@ -298,7 +298,7 @@ exports['e2e spec isolation fails'] = { "fails1" ], "state": "failed", - "body": "function () {\n return cy.wrap(true, {\n timeout: 100\n }).should(\"be.false\");\n }", + "body": "function() {\n return cy.wrap(true, {\n timeout: 100\n }).should(\"be.false\");\n }", "stack": "AssertionError: Timed out retrying: expected true to be false\n [stack trace lines]", "error": "Timed out retrying: expected true to be false", "timings": { @@ -327,7 +327,7 @@ exports['e2e spec isolation fails'] = { "fails2" ], "state": "failed", - "body": "function () {\n throw new Error(\"fails2\");\n }", + "body": "function() {\n throw new Error(\"fails2\");\n }", "stack": "Error: fails2\n [stack trace lines]", "error": "fails2", "timings": { @@ -403,7 +403,7 @@ exports['e2e spec isolation fails'] = { "title": [ "\"before all\" hook" ], - "body": "function () {\n if (Cypress.browser.family === 'chromium' && Cypress.browser.name !== 'electron') {\n return Cypress.automation('remote:debugger:protocol', {\n command: 'Emulation.setDeviceMetricsOverride',\n params: {\n width: 1280,\n height: 720,\n deviceScaleFactor: 1,\n mobile: false,\n screenWidth: 1280,\n screenHeight: 720,\n },\n })\n .then(function () {\n // can't tell expect() not to log, so manually throwing here\n if (window.devicePixelRatio !== 1) {\n throw new Error('Setting devicePixelRatio to 1 failed');\n }\n });\n }\n}" + "body": "function () {\n if (Cypress.browser.family === 'chromium' && Cypress.browser.name !== 'electron') {\n return Cypress.automation('remote:debugger:protocol', {\n command: 'Emulation.setDeviceMetricsOverride',\n params: {\n width: 1280,\n height: 720,\n deviceScaleFactor: 1,\n mobile: false,\n screenWidth: 1280,\n screenHeight: 720\n }\n }).then(function () {\n // can't tell expect() not to log, so manually throwing here\n if (window.devicePixelRatio !== 1) {\n throw new Error('Setting devicePixelRatio to 1 failed');\n }\n });\n }\n}" }, { "hookId": "h2", @@ -411,7 +411,7 @@ exports['e2e spec isolation fails'] = { "title": [ "\"before all\" hook" ], - "body": "function () {\n return cy.wait(100);\n }" + "body": "function() {\n return cy.wait(100);\n }" }, { "hookId": "h3", @@ -419,7 +419,7 @@ exports['e2e spec isolation fails'] = { "title": [ "\"before each\" hook" ], - "body": "function () {\n return cy.wait(200);\n }" + "body": "function() {\n return cy.wait(200);\n }" }, { "hookId": "h5", @@ -427,7 +427,7 @@ exports['e2e spec isolation fails'] = { "title": [ "\"after each\" hook" ], - "body": "function () {\n return cy.wait(200);\n }" + "body": "function() {\n return cy.wait(200);\n }" }, { "hookId": "h4", @@ -435,7 +435,7 @@ exports['e2e spec isolation fails'] = { "title": [ "\"after all\" hook" ], - "body": "function () {\n return cy.wait(100);\n }" + "body": "function() {\n return cy.wait(100);\n }" } ], "tests": [ @@ -446,7 +446,7 @@ exports['e2e spec isolation fails'] = { "t1" ], "state": "passed", - "body": "function () {\n return cy.wrap(\"t1\").should(\"eq\", \"t1\");\n }", + "body": "function() {\n return cy.wrap(\"t1\").should(\"eq\", \"t1\");\n }", "stack": null, "error": null, "timings": { @@ -494,7 +494,7 @@ exports['e2e spec isolation fails'] = { "t2" ], "state": "passed", - "body": "function () {\n return cy.wrap(\"t2\").should(\"eq\", \"t2\");\n }", + "body": "function() {\n return cy.wrap(\"t2\").should(\"eq\", \"t2\");\n }", "stack": null, "error": null, "timings": { @@ -530,7 +530,7 @@ exports['e2e spec isolation fails'] = { "t3" ], "state": "passed", - "body": "function () {\n return cy.wrap(\"t3\").should(\"eq\", \"t3\");\n }", + "body": "function() {\n return cy.wrap(\"t3\").should(\"eq\", \"t3\");\n }", "stack": null, "error": null, "timings": { @@ -608,7 +608,7 @@ exports['e2e spec isolation fails'] = { "title": [ "\"before all\" hook" ], - "body": "function () {\n if (Cypress.browser.family === 'chromium' && Cypress.browser.name !== 'electron') {\n return Cypress.automation('remote:debugger:protocol', {\n command: 'Emulation.setDeviceMetricsOverride',\n params: {\n width: 1280,\n height: 720,\n deviceScaleFactor: 1,\n mobile: false,\n screenWidth: 1280,\n screenHeight: 720,\n },\n })\n .then(function () {\n // can't tell expect() not to log, so manually throwing here\n if (window.devicePixelRatio !== 1) {\n throw new Error('Setting devicePixelRatio to 1 failed');\n }\n });\n }\n}" + "body": "function () {\n if (Cypress.browser.family === 'chromium' && Cypress.browser.name !== 'electron') {\n return Cypress.automation('remote:debugger:protocol', {\n command: 'Emulation.setDeviceMetricsOverride',\n params: {\n width: 1280,\n height: 720,\n deviceScaleFactor: 1,\n mobile: false,\n screenWidth: 1280,\n screenHeight: 720\n }\n }).then(function () {\n // can't tell expect() not to log, so manually throwing here\n if (window.devicePixelRatio !== 1) {\n throw new Error('Setting devicePixelRatio to 1 failed');\n }\n });\n }\n}" }, { "hookId": "h2", @@ -616,7 +616,7 @@ exports['e2e spec isolation fails'] = { "title": [ "\"before each\" hook" ], - "body": "function () {\n return cy.wait(1000);\n }" + "body": "function() {\n return cy.wait(1000);\n }" } ], "tests": [ @@ -627,7 +627,7 @@ exports['e2e spec isolation fails'] = { "passes" ], "state": "passed", - "body": "function () {\n return cy.wrap(true).should(\"be.true\");\n }", + "body": "function() {\n return cy.wrap(true).should(\"be.true\");\n }", "stack": null, "error": null, "timings": { diff --git a/packages/server/__snapshots__/5_stdout_spec.js b/packages/server/__snapshots__/5_stdout_spec.js index bc8aa9edb69e..8b8abed0ca38 100644 --- a/packages/server/__snapshots__/5_stdout_spec.js +++ b/packages/server/__snapshots__/5_stdout_spec.js @@ -141,10 +141,14 @@ Oops...we found an error preparing this test file: The error was: -/foo/bar/.projects/e2e/cypress/integration/stdout_exit_early_failing_spec.js:1 -+ > - ^ -ParseError: Unexpected token +Error: Webpack Compilation Error +./cypress/integration/stdout_exit_early_failing_spec.js +Module build failed (from [..]): +SyntaxError: /foo/bar/.projects/e2e/cypress/integration/stdout_exit_early_failing_spec.js: Unexpected token (1:1) + +> 1 | +> + | ^ + 2 | This occurred while Cypress was compiling and bundling your test code. This is usually caused by: diff --git a/packages/server/__snapshots__/7_record_spec.js b/packages/server/__snapshots__/7_record_spec.js index 1421c521401b..c4c3303effa1 100644 --- a/packages/server/__snapshots__/7_record_spec.js +++ b/packages/server/__snapshots__/7_record_spec.js @@ -26,7 +26,18 @@ Oops...we found an error preparing this test file: The error was: -Error: Cannot find module '../it/does/not/exist' from '/foo/bar/.projects/e2e/cypress/integration' +Error: Webpack Compilation Error +./cypress/integration/record_error_spec.coffee +Module not found: Error: Can't resolve '../it/does/not/exist' in '/foo/bar/.projects/e2e/cypress/integration' +Looked for and couldn't find the file at the following paths: +[/foo/bar/.projects/e2e/cypress/it/does/not/exist] +[/foo/bar/.projects/e2e/cypress/it/does/not/exist.js] +[/foo/bar/.projects/e2e/cypress/it/does/not/exist.json] +[/foo/bar/.projects/e2e/cypress/it/does/not/exist.jsx] +[/foo/bar/.projects/e2e/cypress/it/does/not/exist.coffee] +[/foo/bar/.projects/e2e/cypress/it/does/not/exist.ts] +[/foo/bar/.projects/e2e/cypress/it/does/not/exist.tsx] + @ ./cypress/integration/record_error_spec.coffee 1:0-31 This occurred while Cypress was compiling and bundling your test code. This is usually caused by: @@ -962,7 +973,18 @@ Oops...we found an error preparing this test file: The error was: -Error: Cannot find module '../it/does/not/exist' from '/foo/bar/.projects/e2e/cypress/integration' +Error: Webpack Compilation Error +./cypress/integration/record_error_spec.coffee +Module not found: Error: Can't resolve '../it/does/not/exist' in '/foo/bar/.projects/e2e/cypress/integration' +Looked for and couldn't find the file at the following paths: +[/foo/bar/.projects/e2e/cypress/it/does/not/exist] +[/foo/bar/.projects/e2e/cypress/it/does/not/exist.js] +[/foo/bar/.projects/e2e/cypress/it/does/not/exist.json] +[/foo/bar/.projects/e2e/cypress/it/does/not/exist.jsx] +[/foo/bar/.projects/e2e/cypress/it/does/not/exist.coffee] +[/foo/bar/.projects/e2e/cypress/it/does/not/exist.ts] +[/foo/bar/.projects/e2e/cypress/it/does/not/exist.tsx] + @ ./cypress/integration/record_error_spec.coffee 1:0-31 This occurred while Cypress was compiling and bundling your test code. This is usually caused by: diff --git a/packages/server/lib/plugins/preprocessor.js b/packages/server/lib/plugins/preprocessor.js index 1007830688e5..5ea1ba77cca3 100644 --- a/packages/server/lib/plugins/preprocessor.js +++ b/packages/server/lib/plugins/preprocessor.js @@ -35,11 +35,12 @@ const baseEmitter = new EE() let fileObjects = {} let fileProcessors = {} -const createBrowserifyPreprocessor = function (options) { - debug('creating browserify preprocessor with options %o', options) - const browserify = require('@cypress/browserify-preprocessor') +const createPreprocessor = function (options) { + debug('creating webpack preprocessor with options %o', options) - return browserify(options) + const webpackPreprocessor = require('@cypress/webpack-batteries-included-preprocessor') + + return webpackPreprocessor(options) } const setDefaultPreprocessor = function (config) { @@ -51,7 +52,7 @@ const setDefaultPreprocessor = function (config) { typescript: tsPath, } - return plugins.register('file:preprocessor', API.createBrowserifyPreprocessor(options)) + return plugins.register('file:preprocessor', API.createPreprocessor(options)) } plugins.registerHandler((ipc) => { @@ -76,7 +77,7 @@ const API = { setDefaultPreprocessor, - createBrowserifyPreprocessor, + createPreprocessor, emitter: baseEmitter, diff --git a/packages/server/package.json b/packages/server/package.json index c897500faced..dd1141e14a65 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -21,18 +21,18 @@ }, "dependencies": { "@benmalka/foxdriver": "0.4.1", - "@cypress/browserify-preprocessor": "2.2.4", "@cypress/commit-info": "2.2.0", "@cypress/get-windows-proxy": "1.6.1", "@cypress/icons": "0.7.0", "@cypress/mocha-teamcity-reporter": "1.0.0", "@cypress/request": "2.88.5", "@cypress/request-promise": "4.2.6", + "@cypress/webpack-batteries-included-preprocessor": "2.0.0", + "@cypress/webpack-preprocessor": "5.4.3", "@ffmpeg-installer/ffmpeg": "1.0.20", "ansi_up": "4.0.4", "black-hole-stream": "0.0.1", "bluebird": "3.7.0", - "browserify": "16.3.0", "chai": "1.10.0", "chalk": "2.4.2", "check-more-types": "2.24.0", @@ -122,12 +122,7 @@ }, "devDependencies": { "@babel/core": "7.9.0", - "@babel/plugin-proposal-class-properties": "7.8.3", - "@babel/plugin-proposal-object-rest-spread": "7.9.0", - "@babel/plugin-transform-runtime": "7.9.0", "@babel/preset-env": "7.9.0", - "@babel/preset-react": "7.9.4", - "@babel/runtime": "7.9.2", "@cypress/debugging-proxy": "2.0.1", "@cypress/json-schemas": "5.34.2", "@cypress/sinon-chai": "1.1.0", @@ -147,15 +142,12 @@ "@types/chrome": "0.0.101", "awesome-typescript-loader": "5.2.1", "babel-loader": "8.1.0", - "babel-plugin-add-module-exports": "1.0.2", - "babelify": "10.0.0", "body-parser": "1.19.0", "chai-as-promised": "7.1.1", "chai-subset": "1.6.0", "chai-uuid": "1.0.6", "chokidar-cli": "1.2.2", "chrome-har-capturer": "0.13.4", - "coffeeify": "3.0.1", "cors": "2.8.5", "cross-env": "6.0.3", "devtools-protocol": "0.0.734984", @@ -181,7 +173,6 @@ "sinon": "5.1.1", "snap-shot-it": "7.9.3", "ssestream": "1.0.1", - "stream-to-promise": "1.1.1", "supertest": "4.0.2", "supertest-session": "4.0.0", "through2": "2.0.5", diff --git a/packages/server/test/e2e/1_busted_support_file_spec.js b/packages/server/test/e2e/1_busted_support_file_spec.js index 039a0a1fe24e..1a54dbbbe7c9 100644 --- a/packages/server/test/e2e/1_busted_support_file_spec.js +++ b/packages/server/test/e2e/1_busted_support_file_spec.js @@ -12,6 +12,7 @@ describe('e2e busted support file', () => { sanitizeScreenshotDimensions: true, snapshot: true, expectedExitCode: 1, + onStdout: e2e.normalizeWebpackErrors, }) }) }) diff --git a/packages/server/test/e2e/1_browserify_babel_es201_spec.js b/packages/server/test/e2e/1_es_modules_spec.js similarity index 65% rename from packages/server/test/e2e/1_browserify_babel_es201_spec.js rename to packages/server/test/e2e/1_es_modules_spec.js index 02d963be937e..cf5df3230e60 100644 --- a/packages/server/test/e2e/1_browserify_babel_es201_spec.js +++ b/packages/server/test/e2e/1_es_modules_spec.js @@ -1,11 +1,11 @@ const e2e = require('../support/helpers/e2e').default -describe('e2e browserify, babel, es2015', () => { +describe('e2e es modules', () => { e2e.setup() it('passes', function () { return e2e.exec(this, { - spec: 'browserify_babel_es2015_passing_spec.coffee', + spec: 'es_modules_in_coffee_spec.coffee', snapshot: true, noTypeScript: true, }) @@ -13,10 +13,11 @@ describe('e2e browserify, babel, es2015', () => { it('fails', function () { return e2e.exec(this, { - spec: 'browserify_babel_es2015_failing_spec.js', + spec: 'es_module_import_failing_spec.js', snapshot: true, expectedExitCode: 1, noTypeScript: true, + onStdout: e2e.normalizeWebpackErrors, }) }) }) diff --git a/packages/server/test/e2e/1_typescript_support_spec.ts b/packages/server/test/e2e/1_typescript_support_spec.ts index 3252ac68ba94..5007b65cfa41 100644 --- a/packages/server/test/e2e/1_typescript_support_spec.ts +++ b/packages/server/test/e2e/1_typescript_support_spec.ts @@ -8,16 +8,17 @@ describe('e2e typescript', function () { it('spec passes', function () { return e2e.exec(this, { - spec: 'browserify_typescript_passing_spec.ts', + spec: 'typescript_passing_spec.ts', snapshot: true, }) }) it('spec fails', function () { return e2e.exec(this, { - spec: 'browserify_typescript_failing_spec.ts', + spec: 'typescript_failing_spec.ts', snapshot: true, expectedExitCode: 1, + onStdout: e2e.normalizeWebpackErrors, }) }) @@ -30,6 +31,12 @@ describe('e2e typescript', function () { }) }) + it('respects tsconfig paths', function () { + return e2e.exec(this, { + project: Fixtures.projectPath('ts-proj-with-paths'), + }) + }) + it('handles tsconfig with module other than commonjs', function () { const projPath = Fixtures.projectPath('ts-proj-with-own-tsconfig') diff --git a/packages/server/test/e2e/4_controllers_spec.js b/packages/server/test/e2e/4_controllers_spec.js index d3d67403b412..06cef27690ee 100644 --- a/packages/server/test/e2e/4_controllers_spec.js +++ b/packages/server/test/e2e/4_controllers_spec.js @@ -20,14 +20,8 @@ describe('e2e plugins', () => { }) }) - it('handles specs with $, &, ?, + in file name', function () { - let relativeSpecPath = path.join('d?ir&1%', '%di?r2&', 's%p+ec&?.js') - - // windows doesn't support ? in file names - if (process.platform === 'win32') { - relativeSpecPath = specPath.replace(/\?/, '') - } - + it('handles specs with $, &, and + in file name', function () { + const relativeSpecPath = path.join('dir&1%', '%dir2&', 's%p+ec&.js') const specPath = path.join(e2eProject, 'cypress', 'integration', relativeSpecPath) return fs.outputFile(specPath, 'it(\'passes\', () => {})') diff --git a/packages/server/test/e2e/5_screenshots_spec.js b/packages/server/test/e2e/5_screenshots_spec.js index a5934ec1b605..3862dd90ddba 100644 --- a/packages/server/test/e2e/5_screenshots_spec.js +++ b/packages/server/test/e2e/5_screenshots_spec.js @@ -66,6 +66,7 @@ describe('e2e screenshots', () => { expectedExitCode: 4, snapshot: true, timeout: 180000, + onStdout: e2e.normalizeWebpackErrors, onRun (exec, browser) { return exec() .then(() => { diff --git a/packages/server/test/e2e/5_stdout_spec.js b/packages/server/test/e2e/5_stdout_spec.js index 969521025711..7e0f71e0f707 100644 --- a/packages/server/test/e2e/5_stdout_spec.js +++ b/packages/server/test/e2e/5_stdout_spec.js @@ -17,6 +17,7 @@ describe('e2e stdout', () => { spec: 'stdout_exit_early_failing_spec.js', snapshot: true, expectedExitCode: 1, + onStdout: e2e.normalizeWebpackErrors, }) }) diff --git a/packages/server/test/integration/http_requests_spec.js b/packages/server/test/integration/http_requests_spec.js index 851835bfa5a7..63c925783132 100644 --- a/packages/server/test/integration/http_requests_spec.js +++ b/packages/server/test/integration/http_requests_spec.js @@ -11,10 +11,6 @@ const path = require('path') const url = require('url') let zlib = require('zlib') const str = require('underscore.string') -const browserify = require('browserify') -const babelify = require('babelify') -const coffeeify = require('coffeeify') -const streamToPromise = require('stream-to-promise') const evilDns = require('evil-dns') const Promise = require('bluebird') const httpsServer = require(`${root}../https-proxy/test/helpers/https_server`) @@ -32,7 +28,6 @@ const fs = require(`${root}lib/util/fs`) const glob = require(`${root}lib/util/glob`) const CacheBuster = require(`${root}lib/util/cache_buster`) const Fixtures = require(`${root}test/support/helpers/fixtures`) -const simple_tsify = require(`${root}test/support/helpers/simple_tsify`) zlib = Promise.promisifyAll(zlib) @@ -46,10 +41,6 @@ const replaceAbsolutePaths = (content) => { return content.replace(absolutePathRegex, '"/') } -const removeSourceMap = (content) => { - return content.replace(sourceMapRegex, ';') -} - const removeWhitespace = function (c) { c = str.clean(c) c = str.lines(c).join(' ') @@ -61,36 +52,6 @@ const cleanResponseBody = (body) => { return replaceAbsolutePaths(removeWhitespace(body)) } -const browserifyFile = (filePath) => { - return streamToPromise( - browserify({ - entries: [filePath], - extensions: ['.js', '.jsx', '.coffee'], - cache: {}, - packageCache: {}, - transform: [ - [coffeeify, {}], - [babelify, { - plugins: ['add-module-exports', '@babel/plugin-proposal-class-properties', '@babel/plugin-proposal-object-rest-spread', '@babel/plugin-transform-runtime'], - presets: ['@babel/preset-env', '@babel/preset-react'], - }], - ], - }) - .bundle(), - ) -} - -const browserifyFileTs = (filePath) => { - return streamToPromise( - browserify(filePath) - .transform(coffeeify) - .transform(simple_tsify, { - typescript: require('typescript'), - }) - .bundle(), - ) -} - describe('Routes', () => { require('mocha-banner').register() @@ -605,22 +566,11 @@ describe('Routes', () => { }) }) - const checkTranspilation = function (body, file) { - const b = removeSourceMap(body).replace(/\n/g, '') - const f = file.toString().replace(/\n/g, '') - - expect(b).to.equal(f) - } - it('processes foo.coffee spec', function () { return this.rp('http://localhost:2020/__cypress/tests?p=cypress/integration/foo.coffee') .then((res) => { expect(res.statusCode).to.eq(200) - - return browserifyFileTs(Fixtures.path('projects/ids/cypress/integration/foo.coffee')) - .then((file) => { - return checkTranspilation(res.body, file) - }) + expect(res.body).to.include('expect("foo.coffee")') }) }) @@ -628,13 +578,7 @@ describe('Routes', () => { return this.rp('http://localhost:2020/__cypress/tests?p=cypress/integration/baz.js') .then((res) => { expect(res.statusCode).to.eq(200) - - return browserifyFileTs(Fixtures.path('projects/ids/cypress/integration/baz.js')) - .then((file) => { - checkTranspilation(res.body, file) - - expect(res.body).to.include('React.createElement(') - }) + expect(res.body).to.include('React.createElement(') }) }) @@ -643,8 +587,7 @@ describe('Routes', () => { .then((res) => { expect(res.statusCode).to.eq(200) expect(res.body).to.include('Cypress.action("spec:script:error", {') - - expect(res.body).to.include('Cannot find module') + expect(res.body).to.include('Module not found') }) }) }) @@ -653,8 +596,6 @@ describe('Routes', () => { beforeEach(function () { Fixtures.scaffold('ids') - // remove cached options - delete require.cache[require.resolve('@cypress/browserify-preprocessor')] sinon.stub(resolve, 'typescript').callsFake(() => { return null }) @@ -669,11 +610,7 @@ describe('Routes', () => { .then((res) => { expect(res.statusCode).to.eq(200) expect(res.body).to.match(sourceMapRegex) - - return browserifyFile(Fixtures.path('projects/ids/cypress/integration/foo.coffee')) - .then((file) => { - expect(removeSourceMap(res.body)).to.equal(file.toString()) - }) + expect(res.body).to.include('expect("foo.coffee")') }) }) @@ -682,13 +619,7 @@ describe('Routes', () => { .then((res) => { expect(res.statusCode).to.eq(200) expect(res.body).to.match(sourceMapRegex) - - return browserifyFile(Fixtures.path('projects/ids/cypress/integration/baz.js')) - .then((file) => { - expect(removeSourceMap(res.body)).to.equal(file.toString()) - - expect(res.body).to.include('React.createElement(') - }) + expect(res.body).to.include('React.createElement(') }) }) @@ -697,8 +628,7 @@ describe('Routes', () => { .then((res) => { expect(res.statusCode).to.eq(200) expect(res.body).to.include('Cypress.action("spec:script:error", {') - - expect(res.body).to.include('Cannot find module') + expect(res.body).to.include('Module not found') }) }) }) @@ -717,8 +647,7 @@ describe('Routes', () => { .then((res) => { expect(res.statusCode).to.eq(200) expect(res.body).to.include('Cypress.action("spec:script:error", {') - - expect(res.body).to.include('ParseError') + expect(res.body).to.include('Unexpected token') }) }) }) @@ -741,11 +670,7 @@ describe('Routes', () => { .then((res) => { expect(res.statusCode).to.eq(200) expect(res.body).to.match(sourceMapRegex) - - return browserifyFileTs(Fixtures.path('projects/no-server/my-tests/test1.js')) - .then((file) => { - expect(removeSourceMap(res.body)).to.equal(file.toString()) - }) + expect(res.body).to.include(`expect('no-server')`) }) }) @@ -754,11 +679,7 @@ describe('Routes', () => { .then((res) => { expect(res.statusCode).to.eq(200) expect(res.body).to.match(sourceMapRegex) - - return browserifyFileTs(Fixtures.path('projects/no-server/helpers/includes.js')) - .then((file) => { - expect(removeSourceMap(res.body)).to.equal(file.toString()) - }) + expect(res.body).to.include(`console.log('includes')`) }) }) }) diff --git a/packages/server/test/support/fixtures/projects/e2e/cypress/integration/browserify_babel_es2015_failing_spec.js b/packages/server/test/support/fixtures/projects/e2e/cypress/integration/es_module_import_failing_spec.js similarity index 100% rename from packages/server/test/support/fixtures/projects/e2e/cypress/integration/browserify_babel_es2015_failing_spec.js rename to packages/server/test/support/fixtures/projects/e2e/cypress/integration/es_module_import_failing_spec.js diff --git a/packages/server/test/support/fixtures/projects/e2e/cypress/integration/browserify_babel_es2015_passing_spec.coffee b/packages/server/test/support/fixtures/projects/e2e/cypress/integration/es_modules_in_coffee_spec.coffee similarity index 100% rename from packages/server/test/support/fixtures/projects/e2e/cypress/integration/browserify_babel_es2015_passing_spec.coffee rename to packages/server/test/support/fixtures/projects/e2e/cypress/integration/es_modules_in_coffee_spec.coffee diff --git a/packages/server/test/support/fixtures/projects/e2e/cypress/integration/browserify_typescript_failing_spec.ts b/packages/server/test/support/fixtures/projects/e2e/cypress/integration/typescript_failing_spec.ts similarity index 76% rename from packages/server/test/support/fixtures/projects/e2e/cypress/integration/browserify_typescript_failing_spec.ts rename to packages/server/test/support/fixtures/projects/e2e/cypress/integration/typescript_failing_spec.ts index 09a8d2b75070..c476d7946782 100644 --- a/packages/server/test/support/fixtures/projects/e2e/cypress/integration/browserify_typescript_failing_spec.ts +++ b/packages/server/test/support/fixtures/projects/e2e/cypress/integration/typescript_failing_spec.ts @@ -1,3 +1,3 @@ // The code below is ignored by eslint // because it tests failing spec. -describe('fail', -> ) \ No newline at end of file +describe('fail', -> ) diff --git a/packages/server/test/support/fixtures/projects/e2e/cypress/integration/browserify_typescript_passing_spec.ts b/packages/server/test/support/fixtures/projects/e2e/cypress/integration/typescript_passing_spec.ts similarity index 100% rename from packages/server/test/support/fixtures/projects/e2e/cypress/integration/browserify_typescript_passing_spec.ts rename to packages/server/test/support/fixtures/projects/e2e/cypress/integration/typescript_passing_spec.ts diff --git a/packages/server/test/support/fixtures/projects/ids/cypress/integration/foo.coffee b/packages/server/test/support/fixtures/projects/ids/cypress/integration/foo.coffee index 74a9e8deb45e..f8e373a2222c 100644 --- a/packages/server/test/support/fixtures/projects/ids/cypress/integration/foo.coffee +++ b/packages/server/test/support/fixtures/projects/ids/cypress/integration/foo.coffee @@ -1,4 +1,5 @@ describe "foo [000]", -> it "bars [001]", -> + expect("foo.coffee").to.equal("foo.coffee") - it 'quux [002]' \ No newline at end of file + it 'quux [002]' diff --git a/packages/server/test/support/fixtures/projects/no-server/helpers/includes.js b/packages/server/test/support/fixtures/projects/no-server/helpers/includes.js index 81969706f702..610c29484b78 100644 --- a/packages/server/test/support/fixtures/projects/no-server/helpers/includes.js +++ b/packages/server/test/support/fixtures/projects/no-server/helpers/includes.js @@ -1,3 +1,3 @@ beforeEach(function () { - + console.log('includes') }) diff --git a/packages/server/test/support/fixtures/projects/no-server/my-tests/test1.js b/packages/server/test/support/fixtures/projects/no-server/my-tests/test1.js index e3a5395eee36..1ff93d7bd5e4 100644 --- a/packages/server/test/support/fixtures/projects/no-server/my-tests/test1.js +++ b/packages/server/test/support/fixtures/projects/no-server/my-tests/test1.js @@ -1,4 +1,4 @@ /* eslint-disable mocha/no-global-tests */ it('tests without a server', function () { - + expect('no-server').to.equal('no-server') }) diff --git a/packages/server/test/support/fixtures/projects/ts-proj-with-paths/cypress.json b/packages/server/test/support/fixtures/projects/ts-proj-with-paths/cypress.json new file mode 100644 index 000000000000..be9e6bf4576b --- /dev/null +++ b/packages/server/test/support/fixtures/projects/ts-proj-with-paths/cypress.json @@ -0,0 +1,4 @@ +{ + "supportFile": false, + "pluginsFile": false +} diff --git a/packages/server/test/support/fixtures/projects/ts-proj-with-paths/cypress/integration/app_spec.ts b/packages/server/test/support/fixtures/projects/ts-proj-with-paths/cypress/integration/app_spec.ts new file mode 100644 index 000000000000..af091afe0536 --- /dev/null +++ b/packages/server/test/support/fixtures/projects/ts-proj-with-paths/cypress/integration/app_spec.ts @@ -0,0 +1,6 @@ +import { expect } from 'chai' +import { appName } from '@app/main' + +it('verifies path mapping', () => { + expect(appName).to.equal('Best App Ever') +}) diff --git a/packages/server/test/support/fixtures/projects/ts-proj-with-paths/src/main.ts b/packages/server/test/support/fixtures/projects/ts-proj-with-paths/src/main.ts new file mode 100644 index 000000000000..8e774ef932a0 --- /dev/null +++ b/packages/server/test/support/fixtures/projects/ts-proj-with-paths/src/main.ts @@ -0,0 +1 @@ +export const appName = 'Best App Ever' diff --git a/packages/server/test/support/fixtures/projects/ts-proj-with-paths/tsconfig.json b/packages/server/test/support/fixtures/projects/ts-proj-with-paths/tsconfig.json new file mode 100644 index 000000000000..9da0a51cf8c5 --- /dev/null +++ b/packages/server/test/support/fixtures/projects/ts-proj-with-paths/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@app/*": ["src/*"] + }, + } +} diff --git a/packages/server/test/support/helpers/e2e.ts b/packages/server/test/support/helpers/e2e.ts index 2630569b8dc2..7ceb190cd7b3 100644 --- a/packages/server/test/support/helpers/e2e.ts +++ b/packages/server/test/support/helpers/e2e.ts @@ -753,6 +753,12 @@ const e2e = { `) } }, + + normalizeWebpackErrors (stdout) { + return stdout + .replace(/using description file: .* \(relative/g, 'using description file: [..] (relative') + .replace(/Module build failed \(from .*\)/g, 'Module build failed (from [..])') + }, } export { diff --git a/packages/server/test/support/helpers/simple_tsify.js b/packages/server/test/support/helpers/simple_tsify.js deleted file mode 100644 index 450c3dee010c..000000000000 --- a/packages/server/test/support/helpers/simple_tsify.js +++ /dev/null @@ -1,45 +0,0 @@ -// Copied from cypress-browserify-preprocessor for unit tests. - -let through = require('through2') - -const isJson = (code) => { - try { - JSON.parse(code) - } catch (e) { - return false - } - - return true -} - -// tsify doesn't have transpile-only option like ts-node or ts-loader. -// It means it should check types whenever spec file is changed -// and it slows down the test speed a lot. -// We skip this slow type-checking process by using transpileModule() api. -module.exports = function (b, opts) { - const chunks = [] - - return through( - (buf, enc, next) => { - chunks.push(buf.toString()) - next() - }, - function (next) { - const ts = opts.typescript - const text = chunks.join('') - - if (isJson(text)) { - this.push(text) - } else { - this.push(ts.transpileModule(text, { - compilerOptions: { - esModuleInterop: true, - jsx: 'react', - }, - }).outputText) - } - - next() - }, - ) -} diff --git a/packages/server/test/unit/plugins/preprocessor_spec.js b/packages/server/test/unit/plugins/preprocessor_spec.js index fd1b923c8d47..6f2da7c9b47d 100644 --- a/packages/server/test/unit/plugins/preprocessor_spec.js +++ b/packages/server/test/unit/plugins/preprocessor_spec.js @@ -89,28 +89,18 @@ describe('lib/plugins/preprocessor', () => { plugins._reset() sinon.stub(plugins, 'register') sinon.stub(plugins, 'execute').returns(() => {}) - const browserifyFn = function () {} - const browserify = sinon.stub().returns(browserifyFn) - - // mock default options - browserify.defaultOptions = { - browserifyOptions: { - extensions: [], - transform: [ - [], - ['babelify', { - presets: [], - extensions: [], - }], - ], - }, - } - mockery.registerMock('@cypress/browserify-preprocessor', browserify) + const userPreprocessorFn = function () {} + const userPreprocessor = sinon.stub().returns(userPreprocessorFn) + + userPreprocessor.defaultOptions = {} + + mockery.registerMock('@cypress/webpack-batteries-included-preprocessor', userPreprocessor) + preprocessor.getFile(this.filePath, this.config) - expect(plugins.register).to.be.calledWith('file:preprocessor', browserifyFn) - expect(browserify).to.be.called + expect(plugins.register).to.be.calledWith('file:preprocessor', userPreprocessorFn) + expect(userPreprocessor).to.be.called }) }) @@ -224,7 +214,7 @@ describe('lib/plugins/preprocessor', () => { const mockPlugin = {} sinon.stub(plugins, 'register') - sinon.stub(preprocessor, 'createBrowserifyPreprocessor').returns(mockPlugin) + sinon.stub(preprocessor, 'createPreprocessor').returns(mockPlugin) preprocessor.setDefaultPreprocessor(this.config) @@ -236,14 +226,14 @@ describe('lib/plugins/preprocessor', () => { basedir: monorepoRoot, }) - expect(preprocessor.createBrowserifyPreprocessor).to.be.calledWith({ typescript }) + expect(preprocessor.createPreprocessor).to.be.calledWith({ typescript }) }) it('does not have typescript if not found', function () { const mockPlugin = {} sinon.stub(plugins, 'register') - sinon.stub(preprocessor, 'createBrowserifyPreprocessor').returns(mockPlugin) + sinon.stub(preprocessor, 'createPreprocessor').returns(mockPlugin) sinon.stub(resolve, 'sync') .withArgs('typescript', { basedir: this.todosPath }) .throws(new Error('TypeScript not found')) @@ -252,7 +242,7 @@ describe('lib/plugins/preprocessor', () => { expect(plugins.register).to.be.calledWithExactly('file:preprocessor', mockPlugin) - expect(preprocessor.createBrowserifyPreprocessor).to.be.calledWith({ typescript: null }) + expect(preprocessor.createPreprocessor).to.be.calledWith({ typescript: null }) }) }) }) diff --git a/yarn.lock b/yarn.lock index 16e8ac465fbb..9325e5545a2b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -51,6 +51,28 @@ invariant "^2.2.4" semver "^5.5.0" +"@babel/core@7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.5.tgz#1f15e2cca8ad9a1d78a38ddba612f5e7cdbbd330" + integrity sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.5" + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.10.5" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.5" + "@babel/types" "^7.10.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/core@7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" @@ -125,6 +147,15 @@ lodash "^4.17.13" source-map "^0.5.0" +"@babel/generator@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.5.tgz#1b903554bc8c583ee8d25f1e8969732e6b829a69" + integrity sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig== + dependencies: + "@babel/types" "^7.10.5" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" @@ -256,6 +287,19 @@ "@babel/types" "^7.10.4" lodash "^4.17.13" +"@babel/helper-module-transforms@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz#120c271c0b3353673fcdfd8c053db3c544a260d6" + integrity sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" + "@babel/helper-optimise-call-expression@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" @@ -349,6 +393,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== +"@babel/parser@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.5.tgz#e7c6bf5a7deff957cec9f04b551e2762909d826b" + integrity sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ== + "@babel/plugin-proposal-async-generator-functions@^7.10.4", "@babel/plugin-proposal-async-generator-functions@^7.2.0", "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz#4b65abb3d9bacc6c657aaa413e56696f9f170fc6" @@ -358,6 +407,14 @@ "@babel/helper-remap-async-to-generator" "^7.10.4" "@babel/plugin-syntax-async-generators" "^7.8.0" +"@babel/plugin-proposal-class-properties@7.10.4", "@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" + integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-class-properties@7.3.0": version "7.3.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz#272636bc0fa19a0bc46e601ec78136a173ea36cd" @@ -374,14 +431,6 @@ "@babel/helper-create-class-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" - integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-proposal-decorators@7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" @@ -423,6 +472,15 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/plugin-proposal-object-rest-spread@7.10.4", "@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.10.4", "@babel/plugin-proposal-object-rest-spread@^7.4.4", "@babel/plugin-proposal-object-rest-spread@^7.9.0", "@babel/plugin-proposal-object-rest-spread@^7.9.5": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" + integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread@7.3.2": version "7.3.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz#6d1859882d4d778578e41f82cc5d7bf3d5daf6c1" @@ -439,15 +497,6 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.10.4", "@babel/plugin-proposal-object-rest-spread@^7.4.4", "@babel/plugin-proposal-object-rest-spread@^7.9.0", "@babel/plugin-proposal-object-rest-spread@^7.9.5": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" - integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.4" - "@babel/plugin-proposal-optional-catch-binding@^7.10.4", "@babel/plugin-proposal-optional-catch-binding@^7.2.0", "@babel/plugin-proposal-optional-catch-binding@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" @@ -781,14 +830,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.8.3": +"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.10.4", "@babel/plugin-transform-react-display-name@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz#b5795f4e3e3140419c3611b7a2a3832b9aef328d" integrity sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-jsx-development@^7.9.0": +"@babel/plugin-transform-react-jsx-development@^7.10.4", "@babel/plugin-transform-react-jsx-development@^7.9.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz#6ec90f244394604623880e15ebc3c34c356258ba" integrity sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ== @@ -797,7 +846,7 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-react-jsx-self@^7.0.0", "@babel/plugin-transform-react-jsx-self@^7.9.0": +"@babel/plugin-transform-react-jsx-self@^7.0.0", "@babel/plugin-transform-react-jsx-self@^7.10.4", "@babel/plugin-transform-react-jsx-self@^7.9.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz#cd301a5fed8988c182ed0b9d55e9bd6db0bd9369" integrity sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg== @@ -813,7 +862,15 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.9.4": +"@babel/plugin-transform-react-jsx-source@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz#34f1779117520a779c054f2cdd9680435b9222b4" + integrity sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" + +"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.10.4", "@babel/plugin-transform-react-jsx@^7.9.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" integrity sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== @@ -823,6 +880,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.10.4" +"@babel/plugin-transform-react-pure-annotations@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz#3eefbb73db94afbc075f097523e445354a1c6501" + integrity sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-regenerator@^7.10.4", "@babel/plugin-transform-regenerator@^7.4.5", "@babel/plugin-transform-regenerator@^7.8.7": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" @@ -837,6 +902,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-runtime@7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.5.tgz#3b39b7b24830e0c2d8ff7a4489fe5cf99fbace86" + integrity sha512-tV4V/FjElJ9lQtyjr5xD2IFFbgY46r7EeVu5a8CpEKT5laheHKSlFeHjpkPppW3PqzGLAuv5k2qZX5LgVZIX5w== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + resolve "^1.8.1" + semver "^5.5.1" + "@babel/plugin-transform-runtime@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" @@ -847,23 +922,20 @@ resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-runtime@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" - integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - resolve "^1.8.1" - semver "^5.5.1" - -"@babel/plugin-transform-shorthand-properties@^7.10.4", "@babel/plugin-transform-shorthand-properties@^7.2.0", "@babel/plugin-transform-shorthand-properties@^7.8.3": +"@babel/plugin-transform-shorthand-properties@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-shorthand-properties@^7.2.0", "@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-spread@^7.10.4", "@babel/plugin-transform-spread@^7.2.0", "@babel/plugin-transform-spread@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" @@ -926,6 +998,76 @@ core-js "^2.6.5" regenerator-runtime "^0.13.4" +"@babel/preset-env@7.10.4", "@babel/preset-env@^7.1.6": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.4.tgz#fbf57f9a803afd97f4f32e4f798bb62e4b2bef5f" + integrity sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw== + dependencies: + "@babel/compat-data" "^7.10.4" + "@babel/helper-compilation-targets" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-async-generator-functions" "^7.10.4" + "@babel/plugin-proposal-class-properties" "^7.10.4" + "@babel/plugin-proposal-dynamic-import" "^7.10.4" + "@babel/plugin-proposal-json-strings" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" + "@babel/plugin-proposal-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread" "^7.10.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.10.4" + "@babel/plugin-proposal-private-methods" "^7.10.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.10.4" + "@babel/plugin-transform-arrow-functions" "^7.10.4" + "@babel/plugin-transform-async-to-generator" "^7.10.4" + "@babel/plugin-transform-block-scoped-functions" "^7.10.4" + "@babel/plugin-transform-block-scoping" "^7.10.4" + "@babel/plugin-transform-classes" "^7.10.4" + "@babel/plugin-transform-computed-properties" "^7.10.4" + "@babel/plugin-transform-destructuring" "^7.10.4" + "@babel/plugin-transform-dotall-regex" "^7.10.4" + "@babel/plugin-transform-duplicate-keys" "^7.10.4" + "@babel/plugin-transform-exponentiation-operator" "^7.10.4" + "@babel/plugin-transform-for-of" "^7.10.4" + "@babel/plugin-transform-function-name" "^7.10.4" + "@babel/plugin-transform-literals" "^7.10.4" + "@babel/plugin-transform-member-expression-literals" "^7.10.4" + "@babel/plugin-transform-modules-amd" "^7.10.4" + "@babel/plugin-transform-modules-commonjs" "^7.10.4" + "@babel/plugin-transform-modules-systemjs" "^7.10.4" + "@babel/plugin-transform-modules-umd" "^7.10.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" + "@babel/plugin-transform-new-target" "^7.10.4" + "@babel/plugin-transform-object-super" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-property-literals" "^7.10.4" + "@babel/plugin-transform-regenerator" "^7.10.4" + "@babel/plugin-transform-reserved-words" "^7.10.4" + "@babel/plugin-transform-shorthand-properties" "^7.10.4" + "@babel/plugin-transform-spread" "^7.10.4" + "@babel/plugin-transform-sticky-regex" "^7.10.4" + "@babel/plugin-transform-template-literals" "^7.10.4" + "@babel/plugin-transform-typeof-symbol" "^7.10.4" + "@babel/plugin-transform-unicode-escapes" "^7.10.4" + "@babel/plugin-transform-unicode-regex" "^7.10.4" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.10.4" + browserslist "^4.12.0" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + "@babel/preset-env@7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58" @@ -1112,76 +1254,6 @@ levenary "^1.1.1" semver "^5.5.0" -"@babel/preset-env@^7.1.6": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.4.tgz#fbf57f9a803afd97f4f32e4f798bb62e4b2bef5f" - integrity sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw== - dependencies: - "@babel/compat-data" "^7.10.4" - "@babel/helper-compilation-targets" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-proposal-async-generator-functions" "^7.10.4" - "@babel/plugin-proposal-class-properties" "^7.10.4" - "@babel/plugin-proposal-dynamic-import" "^7.10.4" - "@babel/plugin-proposal-json-strings" "^7.10.4" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" - "@babel/plugin-proposal-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread" "^7.10.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" - "@babel/plugin-proposal-optional-chaining" "^7.10.4" - "@babel/plugin-proposal-private-methods" "^7.10.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.10.4" - "@babel/plugin-transform-arrow-functions" "^7.10.4" - "@babel/plugin-transform-async-to-generator" "^7.10.4" - "@babel/plugin-transform-block-scoped-functions" "^7.10.4" - "@babel/plugin-transform-block-scoping" "^7.10.4" - "@babel/plugin-transform-classes" "^7.10.4" - "@babel/plugin-transform-computed-properties" "^7.10.4" - "@babel/plugin-transform-destructuring" "^7.10.4" - "@babel/plugin-transform-dotall-regex" "^7.10.4" - "@babel/plugin-transform-duplicate-keys" "^7.10.4" - "@babel/plugin-transform-exponentiation-operator" "^7.10.4" - "@babel/plugin-transform-for-of" "^7.10.4" - "@babel/plugin-transform-function-name" "^7.10.4" - "@babel/plugin-transform-literals" "^7.10.4" - "@babel/plugin-transform-member-expression-literals" "^7.10.4" - "@babel/plugin-transform-modules-amd" "^7.10.4" - "@babel/plugin-transform-modules-commonjs" "^7.10.4" - "@babel/plugin-transform-modules-systemjs" "^7.10.4" - "@babel/plugin-transform-modules-umd" "^7.10.4" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" - "@babel/plugin-transform-new-target" "^7.10.4" - "@babel/plugin-transform-object-super" "^7.10.4" - "@babel/plugin-transform-parameters" "^7.10.4" - "@babel/plugin-transform-property-literals" "^7.10.4" - "@babel/plugin-transform-regenerator" "^7.10.4" - "@babel/plugin-transform-reserved-words" "^7.10.4" - "@babel/plugin-transform-shorthand-properties" "^7.10.4" - "@babel/plugin-transform-spread" "^7.10.4" - "@babel/plugin-transform-sticky-regex" "^7.10.4" - "@babel/plugin-transform-template-literals" "^7.10.4" - "@babel/plugin-transform-typeof-symbol" "^7.10.4" - "@babel/plugin-transform-unicode-escapes" "^7.10.4" - "@babel/plugin-transform-unicode-regex" "^7.10.4" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.10.4" - browserslist "^4.12.0" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - "@babel/preset-flow@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.10.4.tgz#e0d9c72f8cb02d1633f6a5b7b16763aa2edf659f" @@ -1212,6 +1284,19 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" +"@babel/preset-react@7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.10.4.tgz#92e8a66d816f9911d11d4cc935be67adfc82dbcf" + integrity sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.10.4" + "@babel/plugin-transform-react-jsx" "^7.10.4" + "@babel/plugin-transform-react-jsx-development" "^7.10.4" + "@babel/plugin-transform-react-jsx-self" "^7.10.4" + "@babel/plugin-transform-react-jsx-source" "^7.10.4" + "@babel/plugin-transform-react-pure-annotations" "^7.10.4" + "@babel/preset-react@7.9.4": version "7.9.4" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.4.tgz#c6c97693ac65b6b9c0b4f25b948a8f665463014d" @@ -1262,6 +1347,13 @@ pirates "^4.0.0" source-map-support "^0.5.16" +"@babel/runtime@7.10.5", "@babel/runtime@^7.10.2": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.5.tgz#303d8bd440ecd5a491eae6117fd3367698674c5c" + integrity sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@7.3.1": version "7.3.1" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a" @@ -1269,17 +1361,10 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@7.9.2": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" - integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99" - integrity sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" + integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== dependencies: regenerator-runtime "^0.13.4" @@ -1307,6 +1392,21 @@ globals "^11.1.0" lodash "^4.17.13" +"@babel/traverse@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.5.tgz#77ce464f5b258be265af618d8fddf0536f20b564" + integrity sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/parser" "^7.10.5" + "@babel/types" "^7.10.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + "@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.6.1", "@babel/types@^7.7.0", "@babel/types@^7.9.0", "@babel/types@^7.9.5": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee" @@ -1316,6 +1416,15 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15" + integrity sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + "@bahmutov/all-paths@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@bahmutov/all-paths/-/all-paths-1.0.2.tgz#9ae0dcdf9022dd6e5e14d7fda3479e6a330d035b" @@ -1391,30 +1500,6 @@ resolved "https://registry.yarnpkg.com/@cypress/bower-kendo-ui/-/bower-kendo-ui-0.0.2.tgz#62ea93d7f0653c0b91a7a4e5e9ede9d26d5990ea" integrity sha1-YuqT1/BlPAuRp6Tl6e3p0m1ZkOo= -"@cypress/browserify-preprocessor@2.2.4": - version "2.2.4" - resolved "https://registry.yarnpkg.com/@cypress/browserify-preprocessor/-/browserify-preprocessor-2.2.4.tgz#a2ff5a6a06938f7f1e78eb6de0e492641cf8561c" - integrity sha512-kMjkIFe6qka8Tkm9N3BrMB+Nn7WEAHIzEd3gfVoDL17Tr40xyOnKGuMhEkff1scd3RV3bjQxwQ9BQ6kI2nToAQ== - dependencies: - "@babel/core" "7.4.5" - "@babel/plugin-proposal-class-properties" "7.3.0" - "@babel/plugin-proposal-object-rest-spread" "7.3.2" - "@babel/plugin-transform-runtime" "7.2.0" - "@babel/preset-env" "7.4.5" - "@babel/preset-react" "7.0.0" - "@babel/runtime" "7.3.1" - babel-plugin-add-module-exports "1.0.2" - babelify "10.0.0" - bluebird "3.5.3" - browserify "16.2.3" - coffeeify "3.0.1" - coffeescript "1.12.7" - debug "4.1.1" - fs-extra "7.0.1" - lodash.clonedeep "4.5.0" - through2 "^2.0.0" - watchify "3.11.1" - "@cypress/browserify-preprocessor@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@cypress/browserify-preprocessor/-/browserify-preprocessor-3.0.0.tgz#2d1fa6a96ed7130a1b172c540448a5955cbc1264" @@ -1689,6 +1774,27 @@ dependencies: css.escape "^1.5.1" +"@cypress/webpack-batteries-included-preprocessor@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cypress/webpack-batteries-included-preprocessor/-/webpack-batteries-included-preprocessor-2.0.0.tgz#b64883e0bd6fcb5433211a547179a76581e45cb3" + integrity sha512-0LNQ7bhKVDDTF/P5FIP7FQrEbiRSwcWv4Qur7fEQoSHs+06pu0HYtNhIT83nG1X2BCIRmIqGvZGiuJ4ABZrT0w== + dependencies: + "@babel/core" "7.10.5" + "@babel/plugin-proposal-class-properties" "7.10.4" + "@babel/plugin-proposal-object-rest-spread" "7.10.4" + "@babel/plugin-transform-runtime" "7.10.5" + "@babel/preset-env" "7.10.4" + "@babel/preset-react" "7.10.4" + "@babel/runtime" "7.10.5" + babel-loader "8.1.0" + babel-plugin-add-module-exports "1.0.2" + coffee-loader "0.9.0" + coffeescript "1.12.7" + ts-loader "8.0.1" + tsconfig "7.0.0" + tsconfig-paths-webpack-plugin "3.2.0" + webpack "4.43.0" + "@cypress/webpack-preprocessor@5.4.1": version "5.4.1" resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.4.1.tgz#eb58f6cd02932a95653c1a674cfd769da2409806" @@ -1707,6 +1813,15 @@ debug "4.1.1" lodash "4.17.19" +"@cypress/webpack-preprocessor@5.4.3": + version "5.4.3" + resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.4.3.tgz#16cd450f15a7e95523a4e4e48b7ced3e318c4957" + integrity sha512-WomyLH7mtCkRpN6unHUfZcX/tl8lfL3MqSniSvlg6wTtQLmlYM3VPDUQjZ4mywQ+TOE9TkSEQyVeJT7SRksxUg== + dependencies: + bluebird "3.7.1" + debug "4.1.1" + lodash "4.17.19" + "@cypress/what-is-circular@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@cypress/what-is-circular/-/what-is-circular-1.0.1.tgz#c88adb7106a4e1624e403512fc87c18e9700c877" @@ -4029,6 +4144,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/linkify-it@*": version "2.1.0" resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-2.1.0.tgz#ea3dd64c4805597311790b61e872cbd1ed2cd806" @@ -4246,6 +4366,16 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== +"@types/strip-bom@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" + integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I= + +"@types/strip-json-comments@0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" + integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== + "@types/tapable@*": version "1.0.6" resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" @@ -5078,7 +5208,7 @@ any-observable@^0.3.0: resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== -any-promise@^1.0.0, any-promise@^1.1.0: +any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= @@ -6966,11 +7096,6 @@ bluebird@^2.9.30, bluebird@^2.9.33: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= -bluebird@~3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.0.6.tgz#f2488f325782f66d174842f481992e2faba56f38" - integrity sha1-8kiPMleC9m0XSEL0gZkuL6ulbzg= - blueimp-md5@^2.3.0: version "2.16.0" resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.16.0.tgz#9018bb805e4ee05512e0e8cbdb9305eeecbdc87c" @@ -8434,6 +8559,13 @@ coffee-lex@^9.1.5: resolved "https://registry.yarnpkg.com/coffee-lex/-/coffee-lex-9.1.5.tgz#6f46f33df539de3c00831d47bbe115991336aa4e" integrity sha512-94lUMjs1vhlV86vnbCCnnIYzR4oszuO4qJzKUuKOLidiksh/UyQFOzPusjmLJt6vy5CNB0d/KtaceqV84zr46g== +coffee-loader@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/coffee-loader/-/coffee-loader-0.9.0.tgz#6deabd336062ddc6d773da4dfd16367fc7107bd6" + integrity sha512-VSoQ5kWr6Yfjn4RDpVbba2XMs3XG1ZXtLakPRt8dNfUcNU9h+1pocpdUUEd7NK9rLDwrju4yonhxrL8aMr5tww== + dependencies: + loader-utils "^1.0.2" + coffee-script@1.12.5: version "1.12.5" resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.5.tgz#809f4585419112bbfe46a073ad7543af18c27346" @@ -12246,15 +12378,6 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@7.0.1, fs-extra@^7.0.0, fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@8.1.0, fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -12310,6 +12433,15 @@ fs-extra@^6.0.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^7.0.0, fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^9.0.0, fs-extra@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" @@ -22903,21 +23035,6 @@ stream-splicer@^2.0.0: inherits "^2.0.1" readable-stream "^2.0.2" -stream-to-array@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/stream-to-array/-/stream-to-array-2.3.0.tgz#bbf6b39f5f43ec30bc71babcb37557acecf34353" - integrity sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M= - dependencies: - any-promise "^1.1.0" - -stream-to-promise@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stream-to-promise/-/stream-to-promise-1.1.1.tgz#838f5df7c92b8c9ba8fb95d7aa3ac312eec7527f" - integrity sha1-g49d98krjJuo+5XXqjrDEu7HUn8= - dependencies: - bluebird "~3.0.6" - stream-to-array "~2.3.0" - strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -23143,7 +23260,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@2.0.1, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: +strip-json-comments@2.0.1, strip-json-comments@^2.0.0, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= @@ -23915,6 +24032,17 @@ ts-loader@7.0.4: micromatch "^4.0.0" semver "^6.0.0" +ts-loader@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.0.1.tgz#9670dcbce2a8c8506d01a37fee042350d02c8c21" + integrity sha512-I9Nmly0ufJoZRMuAT9d5ijsC2B7oSPvUnOJt/GhgoATlPGYfa17VicDKPcqwUCrHpOkCxr/ybLYwbnS4cOxmvQ== + dependencies: + chalk "^2.3.0" + enhanced-resolve "^4.0.0" + loader-utils "^1.0.2" + micromatch "^4.0.0" + semver "^6.0.0" + ts-node@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-5.0.1.tgz#78e5d1cb3f704de1b641e43b76be2d4094f06f81" @@ -23951,6 +24079,35 @@ ts-node@8.5.4: source-map-support "^0.5.6" yn "^3.0.0" +tsconfig-paths-webpack-plugin@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz#6e70bd42915ad0efb64d3385163f0c1270f3e04d" + integrity sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g== + dependencies: + chalk "^2.3.0" + enhanced-resolve "^4.0.0" + tsconfig-paths "^3.4.0" + +tsconfig-paths@^3.4.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tsconfig@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" + integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== + dependencies: + "@types/strip-bom" "^3.0.0" + "@types/strip-json-comments" "0.0.30" + strip-bom "^3.0.0" + strip-json-comments "^2.0.0" + tslib@^1, tslib@^1.0.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.13.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"