From 02c461ff638439c06b04ac047486e6920ca5ad63 Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Tue, 29 Sep 2026 17:25:14 +0200 Subject: [PATCH] fixed nightwatch tests, upgraded chromedriver --- nightwatch.json | 73 +++++++++++++++++++++++++++++-------------- package-lock.json | 9 +++--- package.json | 2 +- test/web/testembed.js | 23 ++++++++++++++ 4 files changed, 79 insertions(+), 28 deletions(-) diff --git a/nightwatch.json b/nightwatch.json index ebbc53e2..1f6638a8 100644 --- a/nightwatch.json +++ b/nightwatch.json @@ -1,34 +1,61 @@ { - src_folders : ["test/web"], - - test_settings: { - default: { - launch_url: 'https://sehugg.github.io/8bitworkshop/' - }, + "src_folders": ["test/web"], - safari: { - desiredCapabilities : { - browserName : 'safari', - alwaysMatch: { - acceptInsecureCerts: false - } + "test_settings": { + "default": { + "launch_url": "http://localhost:8000/", + "desiredCapabilities": { + "browserName": "chrome" }, - webdriver: { - port: 4445, - start_process: true, - server_path: '/usr/bin/safaridriver-doesntwork' + "webdriver": { + "start_process": true, + "server_path": "node_modules/.bin/chromedriver", + "port": 9515 + }, + "screenshots": { + "enabled": true, + "path": "", + "on_failure": true, + "on_error": true } }, - firefox: { - desiredCapabilities : { - browserName : 'firefox' + "chrome": { + "desiredCapabilities": { + "browserName": "chrome", + "chromeOptions": { + "args": ["--headless=new", "--no-sandbox", "--disable-gpu", "--window-size=1280,1024"] + } }, + "webdriver": { + "start_process": true, + "server_path": "node_modules/.bin/chromedriver", + "port": 9515 + } + }, - webdriver: { - start_process: true, - port: 4444, - server_path: require('geckodriver').path + "safari": { + "desiredCapabilities": { + "browserName": "safari", + "alwaysMatch": { + "acceptInsecureCerts": false + } + }, + "webdriver": { + "port": 4445, + "start_process": true, + "server_path": "/usr/bin/safaridriver-doesntwork" + } + }, + + "firefox": { + "desiredCapabilities": { + "browserName": "firefox" + }, + "webdriver": { + "start_process": true, + "port": 4444, + "server_path": "node_modules/.bin/geckodriver" } } } diff --git a/package-lock.json b/package-lock.json index e587ba31..a375c286 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "atob": "^2.1.x", "binaryen": "^101.0.0", "btoa": "^1.2.x", + "chromedriver": "^154.0.0", "clipboard": "^2.0.6", "codemirror": "^6.0.2", "dompurify": "^3.1.7", @@ -65,7 +66,7 @@ "typescript-formatter": "^7.2.2" }, "optionalDependencies": { - "chromedriver": "^151.0.5", + "chromedriver": "^154.0.0", "heapdump": "^0.3.15", "jsfuzz": "^1.0.14", "nightwatch": "^3.12.2" @@ -2604,9 +2605,9 @@ } }, "node_modules/chromedriver": { - "version": "151.0.5", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-151.0.5.tgz", - "integrity": "sha512-oPI/VtTeLePbkTOI5o4yvEOlcdpmqEdqQNLZbyu5ha6kpDQYfDRuliisDiph29hBK/UzHSmOyZFKX1mE3efYOQ==", + "version": "154.0.0", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-154.0.0.tgz", + "integrity": "sha512-kn+ENZ2lEPAmeDTNNBbVw6Xt4KAr6M4EFcgeV4lUREgJWHVZBu4fFc+OFivtuf5Q9jM/qSmAcQ3MdWtdOE6mVA==", "hasInstallScript": true, "license": "Apache-2.0", "optional": true, diff --git a/package.json b/package.json index d89dade4..752dda44 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "typescript-formatter": "^7.2.2" }, "optionalDependencies": { - "chromedriver": "^151.0.5", + "chromedriver": "^154.0.0", "heapdump": "^0.3.15", "jsfuzz": "^1.0.14", "nightwatch": "^3.12.2" diff --git a/test/web/testembed.js b/test/web/testembed.js index 01c0078e..c571fa87 100644 --- a/test/web/testembed.js +++ b/test/web/testembed.js @@ -64,6 +64,29 @@ exports['test embed IDE in iframe'] = function(browser) { */ } +exports['test narrow tab layout'] = function(browser) { + + // below the 760px breakpoint the panes become tabs (see ide/layout.ts) + browser.windowSize('current', 600, 900) + .url(IDEURL + QS) + .waitForElementNotVisible('#compile_spinner', time=10000) + .waitForElementNotVisible('#error_alert') + .waitForElementVisible('#mobiletabs') + .click('.mobiletab[data-tab="emulator"]') + .waitForElementVisible('#emuscreen') + .waitForElementVisible('.emuvideo') + .click('.mobiletab[data-tab="editor"]') + .waitForElementVisible('#workspace') + .waitForElementNotVisible('#emuscreen') + + // widening the window should restore the side-by-side panes + browser.windowSize('current', 1280, 1024) + .waitForElementNotVisible('#mobiletabs') + .waitForElementVisible('#workspace') + .waitForElementVisible('#emuscreen') + .waitForElementVisible('.emuvideo') +} + exports['test standalone player'] = function(browser) { browser.url(PLAY_C64)