From 00855de60a76045b6d93b563a175940017aa6679 Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Thu, 20 Feb 2020 12:35:28 -0600 Subject: [PATCH] Add navigation test specific for Safari 10 (#10616) * Add testing in Safari 10.1 on merge * Add nav test specific for Safari 10 --- .github/workflows/build_test_deploy.yml | 21 ++++++++++- .../production-nav/pages/another.js | 9 +++++ .../integration/production-nav/pages/index.js | 9 +++++ .../production-nav/test/index.test.js | 37 +++++++++++++++++++ test/lib/next-webdriver.js | 9 ++++- yarn.lock | 27 +------------- 6 files changed, 85 insertions(+), 27 deletions(-) create mode 100644 test/integration/production-nav/pages/another.js create mode 100644 test/integration/production-nav/pages/index.js create mode 100644 test/integration/production-nav/test/index.test.js diff --git a/.github/workflows/build_test_deploy.yml b/.github/workflows/build_test_deploy.yml index e38d430f6ac9cd9..6059e757d9cd970 100644 --- a/.github/workflows/build_test_deploy.yml +++ b/.github/workflows/build_test_deploy.yml @@ -82,8 +82,8 @@ jobs: runs-on: ubuntu-latest needs: build env: - NEXT_TELEMETRY_DISABLED: 1 BROWSERSTACK: true + NEXT_TELEMETRY_DISABLED: 1 SKIP_LOCAL_SELENIUM_SERVER: true BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }} BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }} @@ -95,6 +95,25 @@ jobs: key: ${{ github.sha }} - run: '[[ -z "$BROWSERSTACK_ACCESS_KEY" ]] && echo "Skipping for PR" || yarn testsafari --forceExit test/integration/production/' + testSafariOld: + name: Test Safari 10.1 (nav) + runs-on: ubuntu-latest + needs: [build, testSafari] + env: + BROWSERSTACK: true + LEGACY_SAFARI: true + NEXT_TELEMETRY_DISABLED: 1 + SKIP_LOCAL_SELENIUM_SERVER: true + BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }} + BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }} + steps: + - uses: actions/cache@v1 + id: restore-build + with: + path: '.' + key: ${{ github.sha }} + - run: '[[ -z "$BROWSERSTACK_ACCESS_KEY" ]] && echo "Skipping for PR" || yarn testsafari --forceExit test/integration/production-nav/' + publishRelease: name: Potentially publish release runs-on: ubuntu-latest diff --git a/test/integration/production-nav/pages/another.js b/test/integration/production-nav/pages/another.js new file mode 100644 index 000000000000000..d027b27d1f43303 --- /dev/null +++ b/test/integration/production-nav/pages/another.js @@ -0,0 +1,9 @@ +import Link from 'next/link' + +export default () => ( + <> + + Index + + +) diff --git a/test/integration/production-nav/pages/index.js b/test/integration/production-nav/pages/index.js new file mode 100644 index 000000000000000..3730194ebce1632 --- /dev/null +++ b/test/integration/production-nav/pages/index.js @@ -0,0 +1,9 @@ +import Link from 'next/link' + +export default () => ( + <> + + Another + + +) diff --git a/test/integration/production-nav/test/index.test.js b/test/integration/production-nav/test/index.test.js new file mode 100644 index 000000000000000..c1217a6ca6f0946 --- /dev/null +++ b/test/integration/production-nav/test/index.test.js @@ -0,0 +1,37 @@ +/* eslint-env jest */ +/* global jasmine */ +import { + nextBuild, + findPort, + nextStart, + killApp, + waitFor, +} from 'next-test-utils' +import webdriver from 'next-webdriver' +import { join } from 'path' + +const appDir = join(__dirname, '../') +let appPort +let app +jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000 * 60 * 1 + +describe('Production Usage', () => { + beforeAll(async () => { + await nextBuild(appDir) + appPort = await findPort() + app = await nextStart(appDir, appPort) + }) + afterAll(() => killApp(app)) + + it('should navigate forward and back correctly', async () => { + const browser = await webdriver(appPort, '/') + await browser.eval('window.beforeNav = true') + await browser.elementByCss('#to-another').click() + // waitForElement doesn't seem to work properly in safari 10 + await waitFor(2000) + expect(await browser.eval('window.beforeNav')).toBe(true) + await browser.elementByCss('#to-index').click() + await waitFor(2000) + expect(await browser.eval('window.beforeNav')).toBe(true) + }) +}) diff --git a/test/lib/next-webdriver.js b/test/lib/next-webdriver.js index bd6d975a50ef032..9e286b83601bd4d 100644 --- a/test/lib/next-webdriver.js +++ b/test/lib/next-webdriver.js @@ -15,6 +15,7 @@ const { BROWSERSTACK_ACCESS_KEY, HEADLESS, CHROME_BIN, + LEGACY_SAFARI, } = process.env let capabilities = {} @@ -37,6 +38,12 @@ if (isBrowserStack) { os_version: 'Mojave', browser: 'Safari', } + const safariLegacyOpts = { + os: 'OS X', + os_version: 'Sierra', + browserName: 'Safari', + browser_version: '10.1', + } const ieOpts = { os: 'Windows', os_version: '10', @@ -60,7 +67,7 @@ if (isBrowserStack) { ...sharedOpts, ...(isIE ? ieOpts : {}), - ...(isSafari ? safariOpts : {}), + ...(isSafari ? (LEGACY_SAFARI ? safariLegacyOpts : safariOpts) : {}), ...(isFirefox ? firefoxOpts : {}), } } diff --git a/yarn.lock b/yarn.lock index 7c4f10a73953ee5..4b158e74baf6a57 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4145,7 +4145,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.8.3, browserslist@^4.0.0, browserslist@^4.3.6, browserslist@^4.6.0, browserslist@^4.6.4, browserslist@^4.8.0, browserslist@^4.8.2, browserslist@^4.8.3: +browserslist@4.8.3, browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6, browserslist@^4.0.0, browserslist@^4.3.6, browserslist@^4.6.0, browserslist@^4.6.4, browserslist@^4.8.0, browserslist@^4.8.2, browserslist@^4.8.3: version "4.8.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.3.tgz#65802fcd77177c878e015f0e3189f2c4f627ba44" integrity sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg== @@ -4154,14 +4154,6 @@ browserslist@4.8.3, browserslist@^4.0.0, browserslist@^4.3.6, browserslist@^4.6. electron-to-chromium "^1.3.322" node-releases "^1.1.44" -browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: - version "1.7.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" - integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= - dependencies: - caniuse-db "^1.0.30000639" - electron-to-chromium "^1.2.7" - browserstack-local@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/browserstack-local/-/browserstack-local-1.4.0.tgz#d979cac056f57b9af159b3bcd7fdc09b4354537c" @@ -4465,21 +4457,11 @@ caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634: resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001023.tgz#f856f71af16a5a44e81f1fcefc1673912a43da72" integrity sha512-EnlshvE6oAum+wWwKmJNVaoqJMjIc0bLUy4Dj77VVnz1o6bzSPr1Ze9iPy6g5ycg1xD6jGU6vBmo7pLEz2MbCQ== -caniuse-db@^1.0.30000639: - version "1.0.30001028" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001028.tgz#729740f97ff3d86fdda1591a509aaa80073d79e9" - integrity sha512-GftV9qo57Glfh93TvXeLjQ74ubAwh1oicEKJMq3HAuavmcwfhpUJNQ7g8aqjUGCjJ3anpizh/ok1wr4oL9PIVA== - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001012, caniuse-lite@^1.0.30001017, caniuse-lite@^1.0.30001019: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001012, caniuse-lite@^1.0.30001017, caniuse-lite@^1.0.30001019, caniuse-lite@^1.0.30001020: version "1.0.30001019" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001019.tgz#857e3fccaad2b2feb3f1f6d8a8f62d747ea648e1" integrity sha512-6ljkLtF1KM5fQ+5ZN0wuyVvvebJxgJPTmScOMaFuQN2QuOzvRJnWSKfzQskQU5IOU4Gap3zasYPIinzwUjoj/g== -caniuse-lite@^1.0.30001020: - version "1.0.30001028" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001028.tgz#f2241242ac70e0fa9cda55c2776d32a0867971c2" - integrity sha512-Vnrq+XMSHpT7E+LWoIYhs3Sne8h9lx9YJV3acH3THNCwU/9zV93/ta4xVfzTtnqd3rvnuVpVjE3DFqf56tr3aQ== - capitalize@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capitalize/-/capitalize-1.0.0.tgz#dc802c580aee101929020d2ca14b4ca8a0ae44be" @@ -6271,11 +6253,6 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -electron-to-chromium@^1.2.7: - version "1.3.355" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.355.tgz#ff805ed8a3d68e550a45955134e4e81adf1122ba" - integrity sha512-zKO/wS+2ChI/jz9WAo647xSW8t2RmgRLFdbUb/77cORkUTargO+SCj4ctTHjBn2VeNFrsLgDT7IuDVrd3F8mLQ== - electron-to-chromium@^1.3.322: version "1.3.327" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.327.tgz#516f28b4271727004362b4ac814494ae64d9dde7"