From 437aaac6d241d88da5e6263eb3dd01a88862c58a Mon Sep 17 00:00:00 2001 From: George Gevoian <85144792+georgegevoian@users.noreply.github.com> Date: Tue, 3 Sep 2024 11:36:49 -0400 Subject: [PATCH] Pin browser tests to Chrome 127 (#1187) --- .github/workflows/docker_latest.yml | 3 +++ .github/workflows/main.yml | 4 ++-- app/client/ui/PageWidgetPicker.ts | 4 ++-- package.json | 14 +++++++------- test/test_env.sh | 12 ++++++++++++ test/test_under_docker.sh | 4 ++-- 6 files changed, 28 insertions(+), 13 deletions(-) create mode 100755 test/test_env.sh diff --git a/.github/workflows/docker_latest.yml b/.github/workflows/docker_latest.yml index 52d75de6..eb2e2e95 100644 --- a/.github/workflows/docker_latest.yml +++ b/.github/workflows/docker_latest.yml @@ -123,6 +123,9 @@ jobs: if: ${{ !inputs.disable_tests }} run: yarn run build:prod + - name: Install Google Chrome for Testing + run: ./test/test_env.sh node_modules/selenium-webdriver/bin/linux/selenium-manager + - name: Run tests if: ${{ !inputs.disable_tests }} run: TEST_IMAGE=${{ env.DOCKER_HUB_OWNER }}/${{ matrix.image.name }}:${{ env.TAG }} VERBOSE=1 DEBUG=1 MOCHA_WEBDRIVER_HEADLESS=1 yarn run test:docker diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 547e8599..ab83a5cc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -69,9 +69,9 @@ jobs: - name: Build Node.js code run: yarn run build:prod - - name: Install chromedriver + - name: Install Google Chrome for Testing if: contains(matrix.tests, ':nbrowser-') || contains(matrix.tests, ':smoke:') || contains(matrix.tests, ':stubs:') - run: ./node_modules/selenium-webdriver/bin/linux/selenium-manager --driver chromedriver + run: ./test/test_env.sh ./node_modules/selenium-webdriver/bin/linux/selenium-manager - name: Run smoke test if: contains(matrix.tests, ':smoke:') diff --git a/app/client/ui/PageWidgetPicker.ts b/app/client/ui/PageWidgetPicker.ts index 3df337ba..dbd7cf84 100644 --- a/app/client/ui/PageWidgetPicker.ts +++ b/app/client/ui/PageWidgetPicker.ts @@ -1,5 +1,6 @@ import {BehavioralPromptsManager} from 'app/client/components/BehavioralPromptsManager'; import {GristDoc} from 'app/client/components/GristDoc'; +import {FocusLayer} from 'app/client/lib/FocusLayer'; import {makeT} from 'app/client/lib/localization'; import {reportError} from 'app/client/models/AppModel'; import {ColumnRec, TableRec, ViewSectionRec} from 'app/client/models/DocModel'; @@ -260,8 +261,7 @@ export function buildPageWidgetPicker( dom.create(PageWidgetSelect, value, tables, columns, onSaveCB, behavioralPromptsManager, options), - // gives focus and binds keydown events - (elem: any) => { setTimeout(() => elem.focus(), 0); }, + elem => { FocusLayer.create(ctl, {defaultFocusElem: elem, pauseMousetrap: true}); }, onKeyDown({ Escape: () => ctl.close(), Enter: () => isValid() && onSaveCB() diff --git a/package.json b/package.json index 3ade1983..8af932ae 100644 --- a/package.json +++ b/package.json @@ -14,13 +14,13 @@ "install:python3": "buildtools/prepare_python3.sh", "build:prod": "buildtools/build.sh", "start:prod": "sandbox/run.sh", - "test": "GRIST_SESSION_COOKIE=grist_test_cookie GRIST_TEST_LOGIN=1 TEST_SUPPORT_API_KEY=api_key_for_support TEST_CLEAN_DATABASE=true LANGUAGE=en_US mocha ${DEBUG:+-b --no-exit} --slow 8000 $([ -z $DEBUG ] && echo --forbid-only) -g \"${GREP_TESTS}\" '_build/test/common/*.js' '_build/test/client/*.js' '_build/test/nbrowser/*.js' '_build/test/nbrowser_with_stubs/**/*.js' '_build/test/server/**/*.js' '_build/test/gen-server/**/*.js'", - "test:nbrowser": "TEST_SUITE=nbrowser TEST_SUITE_FOR_TIMINGS=nbrowser TIMINGS_FILE=test/timings/nbrowser.txt GRIST_SESSION_COOKIE=grist_test_cookie GRIST_TEST_LOGIN=1 TEST_SUPPORT_API_KEY=api_key_for_support TEST_CLEAN_DATABASE=true LANGUAGE=en_US mocha ${DEBUG:+-b --no-exit} $([ -z $DEBUG ] && echo --forbid-only) -g \"${GREP_TESTS}\" --slow 8000 -R test/xunit-file '_build/test/nbrowser/**/*.js'", - "test:stubs": "GRIST_SESSION_COOKIE=grist_test_cookie GRIST_TEST_LOGIN=1 TEST_SUPPORT_API_KEY=api_key_for_support TEST_CLEAN_DATABASE=true LANGUAGE=en_US mocha ${DEBUG:+-b --no-exit} $([ -z $DEBUG ] && echo --forbid-only) -g \"${GREP_TESTS}\" --slow 8000 -R test/xunit-file '_build/test/nbrowser_with_stubs/**/*.js'", - "test:client": "GRIST_SESSION_COOKIE=grist_test_cookie mocha ${DEBUG:+'-b'} '_build/test/client/**/*.js'", - "test:common": "GRIST_SESSION_COOKIE=grist_test_cookie mocha ${DEBUG:+'-b'} '_build/test/common/**/*.js'", - "test:server": "TEST_CLEAN_DATABASE=true TEST_SUITE=server TEST_SUITE_FOR_TIMINGS=server TIMINGS_FILE=test/timings/server.txt GRIST_SESSION_COOKIE=grist_test_cookie mocha ${DEBUG:+'-b'} -g \"${GREP_TESTS}\" -R test/xunit-file '_build/test/server/**/*.js' '_build/test/gen-server/**/*.js'", - "test:smoke": "LANGUAGE=en_US mocha _build/test/nbrowser/Smoke.js", + "test": "GRIST_TEST_LOGIN=1 ./test/test_env.sh mocha ${DEBUG:+-b --no-exit} --slow 8000 $([ -z $DEBUG ] && echo --forbid-only) -g \"${GREP_TESTS}\" '_build/test/common/*.js' '_build/test/client/*.js' '_build/test/nbrowser/*.js' '_build/test/nbrowser_with_stubs/**/*.js' '_build/test/server/**/*.js' '_build/test/gen-server/**/*.js'", + "test:nbrowser": "GRIST_TEST_LOGIN=1 TEST_SUITE=nbrowser TEST_SUITE_FOR_TIMINGS=nbrowser TIMINGS_FILE=test/timings/nbrowser.txt ./test/test_env.sh mocha ${DEBUG:+-b --no-exit} $([ -z $DEBUG ] && echo --forbid-only) -g \"${GREP_TESTS}\" --slow 8000 -R test/xunit-file '_build/test/nbrowser/**/*.js'", + "test:stubs": "GRIST_TEST_LOGIN=1 ./test/test_env.sh mocha ${DEBUG:+-b --no-exit} $([ -z $DEBUG ] && echo --forbid-only) -g \"${GREP_TESTS}\" --slow 8000 -R test/xunit-file '_build/test/nbrowser_with_stubs/**/*.js'", + "test:client": "./test/test_env.sh mocha ${DEBUG:+'-b'} '_build/test/client/**/*.js'", + "test:common": "./test/test_env.sh mocha ${DEBUG:+'-b'} '_build/test/common/**/*.js'", + "test:server": "TEST_SUITE=server TEST_SUITE_FOR_TIMINGS=server TIMINGS_FILE=test/timings/server.txt ./test/test_env.sh mocha ${DEBUG:+'-b'} -g \"${GREP_TESTS}\" -R test/xunit-file '_build/test/server/**/*.js' '_build/test/gen-server/**/*.js'", + "test:smoke": "./test/test_env.sh mocha _build/test/nbrowser/Smoke.js", "test:docker": "./test/test_under_docker.sh", "test:python": "sandbox_venv3/bin/python sandbox/grist/runtests.py ${GREP_TESTS:+discover -p \"test*${GREP_TESTS}*.py\"}", "cli": "NODE_PATH=_build:_build/stubs:_build/ext node _build/app/server/companion.js", diff --git a/test/test_env.sh b/test/test_env.sh new file mode 100755 index 00000000..3dbc5122 --- /dev/null +++ b/test/test_env.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +export GRIST_SESSION_COOKIE="grist_test_cookie" +export LANGUAGE="en_US" +export SE_BROWSER="chrome" +export SE_BROWSER_VERSION="127" +export SE_DRIVER="chrome-driver" +export SE_DRIVER_VERSION="127.0.6533.119" +export TEST_CLEAN_DATABASE="true" +export TEST_SUPPORT_API_KEY="api_key_for_support" + +exec "$@" diff --git a/test/test_under_docker.sh b/test/test_under_docker.sh index 6663691d..7314f249 100755 --- a/test/test_under_docker.sh +++ b/test/test_under_docker.sh @@ -14,6 +14,8 @@ trap 'cleanup' EXIT trap 'echo "Exiting on SIGINT"; exit 1' INT trap 'echo "Exiting on SIGTERM"; exit 1' TERM +source $(dirname $0)/test_env.sh + PORT=8585 DOCKER_CONTAINER=grist-core-test DOCKER_PID="" @@ -65,8 +67,6 @@ fi TEST_ADD_SAMPLES=1 TEST_ACCOUNT_PASSWORD=not-needed \ HOME_URL=http://localhost:8585 \ - GRIST_SESSION_COOKIE=grist_test_cookie \ GRIST_TEST_LOGIN=1 \ NODE_PATH=_build:_build/stubs \ - LANGUAGE=en_US \ $MOCHA _build/test/deployment/*.js --slow 6000 -g "${GREP_TESTS:-}" "$@"