Skip to content

Commit

Permalink
Merge branch 'main-backup'
Browse files Browse the repository at this point in the history
  • Loading branch information
Rishabhg71 committed Sep 4, 2023
2 parents 3a56e9a + 0d03f12 commit 7e4ce13
Show file tree
Hide file tree
Showing 36 changed files with 189 additions and 92 deletions.
61 changes: 47 additions & 14 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,30 +93,63 @@ jobs:
local-testing: start
local-identifier: random

- name: Run BrowserStack tests
- name: Run App locally in background
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
env:
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
run: |
npx http-server --silent -p 8099 &
echo -e "\n\e[0;32mTesting on Edge Legacy 18 / Win10..."
npx mocha tests/edge18.bs.runner.js
echo -e "\n\e[0;32mTesting on Firefox Legacy 56 / Win10..."
npx mocha tests/firefox56.bs.runner.js
echo -e "\n\e[0;32mTesting on Firefox 61 / Win10..."
npx mocha tests/firefox61.bs.runner.js
echo -e "\n\e[0;32mTesting on Chrome 58 / Mojave..."
npx mocha tests/chrome58.bs.runner.js
echo -e "\n\e[0;32mTesting on Safari 14 / Big Sur..."
npx mocha tests/safari14.bs.runner.js
run: npx http-server --silent -p 8099 &

- name: Run BrowserStack tests on Firefox Legacy 56 / Win10
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
env:
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
run: npx mocha tests/e2e/runners/firefox/firefox56.bs.runner.js

- name: Run BrowserStack tests on Firefox 70 / Win10 [Gutenberg]
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
env:
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
run: npx mocha tests/e2e/runners/firefox/firefox70.bs.runner.js

- name: Run BrowserStack tests on Chrome 58 / Mojave
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
env:
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
run: npx mocha tests/e2e/runners/chrome/chrome58.bs.runner.js

- name: Run BrowserStack tests on Chrome 60 / Mojave
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
env:
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
run: npx mocha tests/e2e/runners/chrome/chrome60.bs.runner.js

- name: Run BrowserStack tests on Safari 14 / Big Sur
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
env:
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
run: npx mocha tests/e2e/runners/safari/safari14.bs.runner.js

# [DEV] Test on Edge18 are bit flaky, so we are retrying 2 times
- name: Run BrowserStack tests on Edge Legacy 18 / Win10
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
env:
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
run: npx mocha tests/e2e/runners/edge/edge18.bs.runner.js --retries 2


- name: Stop BrowserStackLocal
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
uses: browserstack/github-actions/setup-local@master
with:
local-testing: stop

tests-windows:
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
runs-on: windows-latest
Expand Down
20 changes: 10 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@
"prebuild-src": "del-cli dist",
"build-src": "rollup --config --file dist/www/js/bundle.js",
"del-dist": "del-cli dist",
"test": "testcafe all ./tests/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
"test-unit-browsers": "testcafe firefox:headless,chrome:headless,edge:headless ./tests/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
"test-unit-firefox": "testcafe firefox:headless ./tests/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
"test-unit-chrome": "testcafe chrome:headless ./tests/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
"test-unit-edge": "testcafe edge:headless ./tests/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
"test-unit-mac": "testcafe safari ./tests/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
"test": "testcafe all ./tests/unit/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
"test-unit-browsers": "testcafe firefox:headless,chrome:headless,edge:headless ./tests/unit/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
"test-unit-firefox": "testcafe firefox:headless ./tests/unit/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
"test-unit-chrome": "testcafe chrome:headless ./tests/unit/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
"test-unit-edge": "testcafe edge:headless ./tests/unit/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
"test-unit-mac": "testcafe safari ./tests/unit/initTestCafe.js --app \"http-server --silent -p 8080 .\"",
"web-server": "http-server -p 8080 .",
"test-e2e": "npm run test-e2e-firefox && npm run test-e2e-chrome && npm run test-e2e-edge && npm run test-e2e-iemode",
"test-e2e-firefox": "npx start-server-and-test 'http-server --silent' 8080 'npx mocha ./tests/firefox.e2e.runner.js'",
"test-e2e-chrome": "npx start-server-and-test 'http-server --silent' 8080 'npx mocha ./tests/chromium.e2e.runner.js'",
"test-e2e-edge": "npx start-server-and-test 'http-server --silent' 8080 'npx mocha ./tests/microsoftEdge.e2e.runner.js'",
"test-e2e-iemode": "npx start-server-and-test 'http-server --silent' 8080 'npx mocha ./tests/ieMode.e2e.runner.js'"
"test-e2e-firefox": "npx start-server-and-test 'http-server --silent' 8080 'npx mocha ./tests/e2e/runners/firefox/firefox.e2e.runner.js'",
"test-e2e-chrome": "npx start-server-and-test 'http-server --silent' 8080 'npx mocha ./tests/e2e/runners/chrome/chromium.e2e.runner.js'",
"test-e2e-edge": "npx start-server-and-test 'http-server --silent' 8080 'npx mocha ./tests/e2e/runners/edge/microsoftEdge.e2e.runner.js'",
"test-e2e-iemode": "npx start-server-and-test 'http-server --silent' 8080 'npx mocha ./tests/e2e/runners/edge/ieMode.e2e.runner.js'"
},
"engines": {
"node": ">=10"
Expand Down
4 changes: 2 additions & 2 deletions tests/paths.js → tests/e2e/paths.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

import path from 'path';

const rayCharlesBaseFile = path.resolve('./tests/wikipedia_en_ray_charles_2015-06.zimaa');
const gutenbergRoBaseFile = path.resolve('./tests/gutenberg_ro_all_2023-08.zim');
const rayCharlesBaseFile = path.resolve('./tests/zims/legacy-ray-charles/wikipedia_en_ray_charles_2015-06.zimaa');
const gutenbergRoBaseFile = path.resolve('./tests/zims/gutenberg-ro/gutenberg_ro_all_2023-08.zim');
const downloadDir = path.resolve('./tests/');

export default {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Builder } from 'selenium-webdriver';
import legacyRayCharles from './legacy-ray_charles.e2e.spec.js';
import legacyRayCharles from '../../spec/legacy-ray_charles.e2e.spec.js';

/* eslint-disable camelcase */

Expand Down Expand Up @@ -29,9 +29,8 @@ async function loadChromeDriver () {
return driver;
};

const driver_chrome = await loadChromeDriver();

// Maximize the window so that full browser state is visible in the screenshots
// await driver_chrome.manage().window().maximize(); // Not supported in this version / Selenium

legacyRayCharles.runTests(driver_chrome);
// make sure to use await running tests or we are charged unnecessarily on Browserstack
await legacyRayCharles.runTests(await loadChromeDriver());
41 changes: 41 additions & 0 deletions tests/e2e/runners/chrome/chrome60.bs.runner.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { Builder } from 'selenium-webdriver';
import { Options } from 'selenium-webdriver/chrome.js';
import gutenbergRo from '../../spec/gutenberg_ro.e2e.spec.js';
import paths from '../../paths.js';

/* eslint-disable camelcase */

// Input capabilities
const capabilities = {
'bstack:options': {
os: 'OS X',
osVersion: 'Mojave',
browserVersion: '60.0',
projectName: 'BStack Project Name: Kiwix JS e2e tests',
buildName: 'BStack Build Name: Chrome 58 on Mojave',
local: true,
localIdentifier: process.env.BROWSERSTACK_LOCAL_IDENTIFIER,
userName: process.env.BROWSERSTACK_USERNAME,
accessKey: process.env.BROWSERSTACK_ACCESS_KEY,
seleniumVersion: '3.141.59'
},
browserName: 'Chrome'
};

async function loadChromeDriver () {
const options = new Options()
options.setUserPreferences({ 'download.default_directory': paths.downloadDir });

const driver = await new Builder()
// .forBrowser('edge')
.usingServer('https://hub-cloud.browserstack.com/wd/hub')
.withCapabilities(capabilities)
.build();
return driver;
};

// Maximize the window so that full browser state is visible in the screenshots
// await driver_chrome.manage().window().maximize(); // Not supported in this version / Selenium

// make sure to use await running tests or we are charged unnecessarily on Browserstack
await gutenbergRo.runTests(await loadChromeDriver());
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Builder } from 'selenium-webdriver';
import { Options } from 'selenium-webdriver/chrome.js';
import legacyRayCharles from './legacy-ray_charles.e2e.spec.js';
import gutenbergRo from './gutenberg_ro.e2e.spec.js';
import paths from './paths.js';
import legacyRayCharles from '../../spec/legacy-ray_charles.e2e.spec.js';
import gutenbergRo from '../../spec/gutenberg_ro.e2e.spec.js';
import paths from '../../paths.js';

/* eslint-disable camelcase */

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Builder } from 'selenium-webdriver';
import legacyRayCharles from './legacy-ray_charles.e2e.spec.js';
import legacyRayCharles from '../../spec/legacy-ray_charles.e2e.spec.js';
import gutenbergRo from '../../spec/gutenberg_ro.e2e.spec.js';

/* eslint-disable camelcase */

Expand Down Expand Up @@ -29,12 +30,13 @@ async function loadEdgeLegacyDriver () {
.usingServer('https://hub-cloud.browserstack.com/wd/hub')
.withCapabilities(capabilities)
.build();
// Maximize the window so that full browser state is visible in the screenshots
await driver.manage().window().maximize();
return driver;
};

const driver_edge_legacy = await loadEdgeLegacyDriver();
await legacyRayCharles.runTests(driver_edge_legacy);

// Maximize the window so that full browser state is visible in the screenshots
await driver_edge_legacy.manage().window().maximize();

legacyRayCharles.runTests(driver_edge_legacy);
const driver_edge_gutenberg = await loadEdgeLegacyDriver();
await gutenbergRo.runTests(driver_edge_gutenberg);
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Builder } from 'selenium-webdriver';
import { Options } from 'selenium-webdriver/ie.js';
import legacyRayCharles from './legacy-ray_charles.e2e.spec.js';
import gutenbergRo from './gutenberg_ro.e2e.spec.js';
import legacyRayCharles from '../../spec/legacy-ray_charles.e2e.spec.js';
import gutenbergRo from '../../spec/gutenberg_ro.e2e.spec.js';

/* eslint-disable camelcase */

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Builder } from 'selenium-webdriver';
import { Options } from 'selenium-webdriver/edge.js';
import legacyRayCharles from './legacy-ray_charles.e2e.spec.js';
import gutenbergRo from './gutenberg_ro.e2e.spec.js';
import legacyRayCharles from '../../spec/legacy-ray_charles.e2e.spec.js';
import gutenbergRo from '../../spec/gutenberg_ro.e2e.spec.js';
/* eslint-disable camelcase */

async function loadMSEdgeDriver () {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Builder } from 'selenium-webdriver';
import firefox from 'selenium-webdriver/firefox.js';
import legacyRayCharles from './legacy-ray_charles.e2e.spec.js';
import gutenbergRo from './gutenberg_ro.e2e.spec.js';
import paths from './paths.js';
import legacyRayCharles from '../../spec/legacy-ray_charles.e2e.spec.js';
import gutenbergRo from '../../spec/gutenberg_ro.e2e.spec.js';
import paths from '../../paths.js';

/* eslint-disable camelcase */

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Builder } from 'selenium-webdriver';
import legacyRayCharles from './legacy-ray_charles.e2e.spec.js';
import legacyRayCharles from '../../spec/legacy-ray_charles.e2e.spec.js';

/* eslint-disable camelcase */

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import { Builder } from 'selenium-webdriver';
import legacyRayCharles from './legacy-ray_charles.e2e.spec.js';

import gutenbergRo from '../../spec/gutenberg_ro.e2e.spec.js';
/* eslint-disable camelcase */

// Input capabilities
const capabilities = {
'bstack:options': {
os: 'Windows',
osVersion: '10',
browserVersion: '61.0',
browserVersion: '70.0',
projectName: 'BStack Project Name: Kiwix JS e2e tests',
buildName: 'BStack Build Name: Firefox 61',
local: true,
Expand All @@ -26,14 +25,13 @@ async function loadFirefoxDriver () {
.usingServer('https://hub-cloud.browserstack.com/wd/hub')
.withCapabilities(capabilities)
.build();
// Maximize the window so that full browser state is visible in the screenshots
await driver.manage().window().maximize();
return driver;
};

const driver_fx = await loadFirefoxDriver();

// Maximize the window so that full browser state is visible in the screenshots
await driver_fx.manage().window().maximize();
const driver_gutenberg_fx = await loadFirefoxDriver();

// Run test in SW mode only
console.log('Running tests in Service Worker mode only for this browser version');
legacyRayCharles.runTests(driver_fx, ['serviceworker']);
await gutenbergRo.runTests(driver_gutenberg_fx);
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Builder } from 'selenium-webdriver';
import legacyRayCharles from './legacy-ray_charles.e2e.spec.js';
import legacyRayCharles from '../../spec/legacy-ray_charles.e2e.spec.js';
import gutenbergRo from '../../spec/gutenberg_ro.e2e.spec.js';

/* eslint-disable camelcase */

Expand All @@ -26,13 +27,16 @@ async function loadSafariDriver () {
.usingServer('https://hub-cloud.browserstack.com/wd/hub')
.withCapabilities(capabilities)
.build();
// Maximize the window so that full browser state is visible in the screenshots
await driver.manage().window().maximize();
return driver;
};

const driver_safari = await loadSafariDriver();
const driver_legacy_safari = await loadSafariDriver();

// Maximize the window so that full browser state is visible in the screenshots
await driver_safari.manage().window().maximize();
// Browserstack Safari does not support Service Workers
console.log('Running tests in jQuery mode only for this browser version')
legacyRayCharles.runTests(driver_safari, ['jquery']);
await legacyRayCharles.runTests(driver_legacy_safari, ['jquery']);

const driver_gutenberg_safari = await loadSafariDriver();
await gutenbergRo.runTests(driver_gutenberg_safari, ['jquery']);
Loading

0 comments on commit 7e4ce13

Please sign in to comment.