diff --git a/lib/gui/app/app.ts b/lib/gui/app/app.ts index 5457909c984..59a9ce0f0f7 100644 --- a/lib/gui/app/app.ts +++ b/lib/gui/app/app.ts @@ -130,14 +130,18 @@ observe(() => { function setDrives(drives: Dictionary) { // prevent setting drives while flashing otherwise we might lose some while we unmount them - if (!flashState.isFlashing()) { - availableDrives.setDrives(values(drives)); - } + availableDrives.setDrives(values(drives)); } // Spawning the child process without privileges to get the drives list // TODO: clean up this mess of exports -export let requestMetadata: any; +export let requestMetadata: (params: any) => Promise; +export let startScanner: () => void = () => { + console.log('stopScanner is not yet set'); +}; +export let stopScanner: () => void = () => { + console.log('stopScanner is not yet set'); +}; // start the api and spawn the child process spawnChildAndConnect({ @@ -147,6 +151,18 @@ spawnChildAndConnect({ // start scanning emit('scan', {}); + // make startScanner available for the end of flash + startScanner = () => { + console.log('startScanner'); + emit('scan', {}); + }; + + // make stopScanner available for the start of flash + stopScanner = () => { + console.log('stopScanner'); + emit('scan', {}); + }; + // make the sourceMetada awaitable to be used on source selection requestMetadata = async (params: any): Promise => { emit('sourceMetadata', JSON.stringify(params)); diff --git a/lib/gui/app/components/flash-another/flash-another.tsx b/lib/gui/app/components/flash-another/flash-another.tsx index c2246317a79..85a732e7da7 100644 --- a/lib/gui/app/components/flash-another/flash-another.tsx +++ b/lib/gui/app/components/flash-another/flash-another.tsx @@ -25,7 +25,11 @@ export interface FlashAnotherProps { export const FlashAnother = (props: FlashAnotherProps) => { return ( - + {i18next.t('flash.another')} ); diff --git a/lib/gui/app/components/source-selector/source-selector.tsx b/lib/gui/app/components/source-selector/source-selector.tsx index c41eb7cd9ad..06686808b58 100644 --- a/lib/gui/app/components/source-selector/source-selector.tsx +++ b/lib/gui/app/components/source-selector/source-selector.tsx @@ -640,6 +640,7 @@ export class SourceSelector extends React.Component< {!flashing && !imageLoading && ( this.reselectSource()} diff --git a/lib/gui/app/modules/progress-status.ts b/lib/gui/app/modules/progress-status.ts index 02ec22301c0..b04956347b6 100644 --- a/lib/gui/app/modules/progress-status.ts +++ b/lib/gui/app/modules/progress-status.ts @@ -34,8 +34,6 @@ export function fromFlashState({ status: string; position?: string; } { - console.log(i18next.t('progress.starting')); - if (type === undefined) { return { status: i18next.t('progress.starting') }; } else if (type === 'decompressing') { diff --git a/lib/gui/app/pages/main/Flash.tsx b/lib/gui/app/pages/main/Flash.tsx index 25aa42603ba..0e87359435d 100644 --- a/lib/gui/app/pages/main/Flash.tsx +++ b/lib/gui/app/pages/main/Flash.tsx @@ -122,8 +122,6 @@ async function flashImageToDrive( errorMessage = messages.error.genericFlashError(error); } return errorMessage; - } finally { - availableDrives.setDrives([]); } return ''; diff --git a/lib/util/api.ts b/lib/util/api.ts index 0fe1e40246e..f2ce0b88e9a 100644 --- a/lib/util/api.ts +++ b/lib/util/api.ts @@ -24,7 +24,7 @@ import { toJSON } from '../shared/errors'; import { GENERAL_ERROR, SUCCESS } from '../shared/exit-codes'; import type { WriteOptions } from './types/types'; import { write, cleanup } from './child-writer'; -import { startScanning } from './scanner'; +import { startScanning, stopScanning } from './scanner'; import { getSourceMetadata } from './source-metadata'; import type { DrivelistDrive } from '../shared/drive-constraints'; import type { SourceMetadata } from '../shared/typings/source-selector'; @@ -222,6 +222,11 @@ function setup(): Promise { startScanning(); }, + stopScan: () => { + log('Stop scan requested'); + stopScanning(); + }, + // route `cancel` from client cancel: () => onAbort(GENERAL_ERROR), diff --git a/lib/util/scanner.ts b/lib/util/scanner.ts index 323d1ea938d..5f3a57a2d4f 100644 --- a/lib/util/scanner.ts +++ b/lib/util/scanner.ts @@ -172,12 +172,15 @@ const COMPUTE_MODULE_DESCRIPTIONS: Dictionary = { }; const startScanning = () => { - driveScanner.on('attach', (drive) => addDrive(drive)); - driveScanner.on('detach', (drive) => removeDrive(drive)); + driveScanner.on('attach', addDrive); + driveScanner.on('detach', removeDrive); driveScanner.start(); }; const stopScanning = () => { + driveScanner.removeListener('attach', addDrive); + driveScanner.removeListener('detach', removeDrive); + availableDrives = []; driveScanner.stop(); }; diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 64171f1377e..e9415a2ba0f 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -76,11 +76,11 @@ "string-replace-loader": "3.1.0", "style-loader": "3.3.3", "ts-loader": "^9.5.1", - "ts-node": "^10.9.2", + "ts-node-dev": "^2.0.0", "tslib": "2.6.2", "typescript": "^5.3.3", "url-loader": "4.1.1", - "wdio-electron-service": "^6.4.1", + "wdio-electron-service": "^6.5.0", "xvfb-maybe": "^0.2.1" }, "engines": { @@ -5798,6 +5798,18 @@ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true }, + "node_modules/@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", + "dev": true + }, + "node_modules/@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, "node_modules/@types/styled-components": { "version": "5.1.34", "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.34.tgz", @@ -6133,9 +6145,9 @@ } }, "node_modules/@vitest/spy": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.5.2.tgz", - "integrity": "sha512-xCcPvI8JpCtgikT9nLpHPL1/81AYqZy1GCy4+MCHBE7xi8jgsYkULpW5hrx5PGLgOQjUpb6fd15lqcriJ40tfQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", + "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", "dev": true, "dependencies": { "tinyspy": "^2.2.0" @@ -9485,6 +9497,18 @@ "node": ">= 0.6" } }, + "node_modules/convert-hrtime": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -11435,6 +11459,15 @@ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" }, + "node_modules/dynamic-dedupe": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", + "integrity": "sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==", + "dev": true, + "dependencies": { + "xtend": "^4.0.0" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -13672,15 +13705,16 @@ } }, "node_modules/find-versions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", - "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz", + "integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==", "dev": true, "dependencies": { - "semver-regex": "^4.0.5" + "semver-regex": "^4.0.5", + "super-regex": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -14071,6 +14105,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function-timeout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.1.tgz", + "integrity": "sha512-6yPMImFFuaMPNaTMTBuolA8EanHJWF5Vju0NHpObRURT105J6x1Mf2a7J4P7Sqk2xDxv24N5L0RatEhTBhNmdA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/function.prototype.name": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", @@ -22630,9 +22676,9 @@ } }, "node_modules/read-package-up/node_modules/type-fest": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.17.0.tgz", - "integrity": "sha512-9flrz1zkfLRH3jO3bLflmTxryzKMxVa7841VeMgBaNQGY6vH4RCcpN/sQLB7mQQYh1GZ5utT2deypMuCy4yicw==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.18.2.tgz", + "integrity": "sha512-+suCYpfJLAe4OXS6+PPXjW3urOS4IoP9waSiLuXfLgqZODKw/aWwASvzqE886wA0kQgGy0mIWyhd87VpqIy6Xg==", "dev": true, "engines": { "node": ">=16" @@ -25116,6 +25162,22 @@ "node": ">= 8.0" } }, + "node_modules/super-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", + "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", + "dev": true, + "dependencies": { + "function-timeout": "^1.0.1", + "time-span": "^5.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supercluster": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz", @@ -25470,6 +25532,21 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, + "node_modules/time-span": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", + "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", + "dev": true, + "dependencies": { + "convert-hrtime": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", @@ -25636,6 +25713,15 @@ "node": "*" } }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, "node_modules/trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -25765,6 +25851,72 @@ } } }, + "node_modules/ts-node-dev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-2.0.0.tgz", + "integrity": "sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.1", + "dynamic-dedupe": "^0.3.0", + "minimist": "^1.2.6", + "mkdirp": "^1.0.4", + "resolve": "^1.0.0", + "rimraf": "^2.6.1", + "source-map-support": "^0.5.12", + "tree-kill": "^1.2.2", + "ts-node": "^10.4.0", + "tsconfig": "^7.0.0" + }, + "bin": { + "ts-node-dev": "lib/bin.js", + "tsnd": "lib/bin.js" + }, + "engines": { + "node": ">=0.8.0" + }, + "peerDependencies": { + "node-notifier": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/ts-node-dev/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ts-node-dev/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/ts-node/node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -25774,6 +25926,36 @@ "node": ">=0.3.1" } }, + "node_modules/tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "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" + } + }, + "node_modules/tsconfig/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tsconfig/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -26841,9 +27023,9 @@ } }, "node_modules/wdio-electron-service": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/wdio-electron-service/-/wdio-electron-service-6.4.1.tgz", - "integrity": "sha512-mYF3ZXuQc9BJlWK89taFMJy5bTKEjjU/ISR//D48lMnSksUhIy7NMPhGf6rob7EaU5XCzgLvqXbpX2ZviNk2YQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/wdio-electron-service/-/wdio-electron-service-6.5.0.tgz", + "integrity": "sha512-8W+3ZoAvQOgqr6rOsKtL5h4dq8Cyj5+J24kzwOUykjZVFSljj7suvpvfFqYaPEQMGXLVMXlhwX/RCWEJt0c2Rg==", "dev": true, "dependencies": { "@vitest/spy": "^1.2.0", @@ -26852,7 +27034,7 @@ "debug": "^4.3.4", "electron-to-chromium": "^1.4.630", "fast-copy": "^3.0.1", - "find-versions": "^5.1.0", + "find-versions": "^6.0.0", "node-fetch": "^3.3.2", "read-package-up": "^11.0.0" }, diff --git a/package.json b/package.json index e91235286f9..f095fe10900 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "test": "echo 'Only use custom tests; if you want to test locally, use `npm run wdio`' && exit 0", "package": "electron-forge package", "start": "electron-forge start", + "dev:util": "ETCHER_TERMINATE_TIMEOUT=0 ts-node-dev --respawn --transpile-only --no-notify --no-deps --prefer-ts-exts --files -- ./lib/util/api.ts", "make": "electron-forge make", "wdio:unit": "xvfb-maybe wdio run ./wdio.conf.ts --suite gui --suite shared", "wdio:e2e": "xvfb-maybe wdio run ./wdio.conf.ts --suite e2e", @@ -100,11 +101,11 @@ "string-replace-loader": "3.1.0", "style-loader": "3.3.3", "ts-loader": "^9.5.1", - "ts-node": "^10.9.2", + "ts-node-dev": "^2.0.0", "tslib": "2.6.2", "typescript": "^5.3.3", "url-loader": "4.1.1", - "wdio-electron-service": "^6.4.1", + "wdio-electron-service": "^6.5.0", "xvfb-maybe": "^0.2.1" }, "hostDependencies": { diff --git a/tests/e2e/e2e-common.ts b/tests/e2e/e2e-common.ts index 7b6b5870681..0d71d0a6dca 100644 --- a/tests/e2e/e2e-common.ts +++ b/tests/e2e/e2e-common.ts @@ -1,8 +1,6 @@ import { browser } from '@wdio/globals'; const prepare = () => { - browser.pause(1000); - browser.refresh(); browser.pause(2000); }; @@ -41,6 +39,23 @@ const itShouldGetTheFlashCompletedScreen = () => { const flashResultsText = await flashResults.getText(); expect(flashResultsText).toBe('Flash Completed!'); + }); +}; + +const itShouldGetBackToHomeScreen = () => { + it('should get back to the "Home" screen', async () => { + const flashAnotherButton = $('[data-testid="flash-another-button"]'); + + await flashAnotherButton.waitForClickable({ timeout: 10000 }); + await flashAnotherButton.click(); + + const changeSource = $('[data-testid="change-image-button"]'); + + await changeSource.waitForClickable({ timeout: 10000 }); + await changeSource.click(); + + // const flashResultsText = await flashResults.getText(); + // expect(flashResultsText).toBe('Flash Completed!'); // we're good; // now we should check the content of the image but we can do that outside wdio @@ -52,4 +67,5 @@ export { itShouldSelectVirtualTarget, itShouldStartFlashing, itShouldGetTheFlashCompletedScreen, + itShouldGetBackToHomeScreen, }; diff --git a/tests/e2e/e2e-flash-from-file.spec.ts b/tests/e2e/e2e-flash-from-file.spec.ts index 47cee9ae9c6..e58017a45bf 100644 --- a/tests/e2e/e2e-flash-from-file.spec.ts +++ b/tests/e2e/e2e-flash-from-file.spec.ts @@ -1,16 +1,17 @@ import '@wdio/globals'; import { - // prepare, + prepare, itShouldSelectVirtualTarget, itShouldStartFlashing, itShouldGetTheFlashCompletedScreen, + itShouldGetBackToHomeScreen, } from './e2e-common'; describe('Flash From File E2E Test', () => { - // before(prepare); + before(prepare); it('should select a file as source', async () => { - const flashFromFileButton = $('button[data-testid="flash-from-file"]'); + const flashFromFileButton = $('button[data-testid="flash-another-button"]'); await flashFromFileButton.waitForClickable({ timeout: 10000 }); await flashFromFileButton.click(); }); @@ -18,4 +19,5 @@ describe('Flash From File E2E Test', () => { itShouldSelectVirtualTarget(); itShouldStartFlashing(); itShouldGetTheFlashCompletedScreen(); + itShouldGetBackToHomeScreen(); }); diff --git a/tests/e2e/e2e-flash-from-url.spec.ts b/tests/e2e/e2e-flash-from-url.spec.ts index 70123f19edc..7f87c42207a 100644 --- a/tests/e2e/e2e-flash-from-url.spec.ts +++ b/tests/e2e/e2e-flash-from-url.spec.ts @@ -4,6 +4,7 @@ import { itShouldSelectVirtualTarget, itShouldStartFlashing, itShouldGetTheFlashCompletedScreen, + itShouldGetBackToHomeScreen, } from './e2e-common'; describe('Flash From URL E2E test', () => { @@ -26,4 +27,5 @@ describe('Flash From URL E2E test', () => { itShouldSelectVirtualTarget(); itShouldStartFlashing(); itShouldGetTheFlashCompletedScreen(); + itShouldGetBackToHomeScreen(); }); diff --git a/wdio.conf.ts b/wdio.conf.ts index 45049f8c01d..b5e1cc7345b 100644 --- a/wdio.conf.ts +++ b/wdio.conf.ts @@ -58,6 +58,7 @@ export const config: Options.Testrunner = { // CI needs to runs e2e tests and other tests sequencially 'ci': [ [ + './tests/e2e/e2e-flash-from-url.spec.ts', './tests/e2e/e2e-flash-from-file.spec.ts', './tests/gui/**/*.spec.ts', './tests/shared/**/*.spec.ts',