diff --git a/.circleci/config.yml b/.circleci/config.yml index 1c85384a7..32a2d8e1f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,26 +1,43 @@ version: 2 jobs: build: + working_directory: ~/html-reporter docker: - - image: cimg/node:12.18-browsers + - image: cimg/node:16.20-browsers + environment: + CHROME_VERSION: 116 + SERVER_HOST: localhost steps: + - checkout - - run: npm install + - run: npm ci + - run: + name: Build html-reporter + + command: npm run build + - run: + name: Download Chromium + command: >- + cd test/func/docker/browser-utils && + npm ci && + npm run install-chromium - run: name: Download Selenium - command: sudo npm install selenium-standalone@6.17.0 -g + command: npm install selenium-standalone@9.1.1 -g - run: name: Start Selenium - command: selenium-standalone install && selenium-standalone start + command: >- + selenium-standalone install --drivers.chrome.version=$CHROME_VERSION && + selenium-standalone start --drivers.chrome.version=$CHROME_VERSION background: true - run: name: Functional tests - command: npm run test-func + command: npm run e2e - store_artifacts: - path: hermione-report/ - destination: /hermione-report + path: test/func/tests/reports/ + destination: /reports diff --git a/.eslintignore b/.eslintignore index 2417646ed..b48a74c4a 100644 --- a/.eslintignore +++ b/.eslintignore @@ -5,6 +5,7 @@ hot /lib/static/*.min.js /lib/static/data.js /lib/static/sql-wasm.js -/test/func/fixtures/report -/test/func/html-reporter-plugins/*/plugin.js +/test/func/**/report +/test/func/**/reports +/test/func/packages/*/plugin.js /hermione-report diff --git a/.gitignore b/.gitignore index 02378673b..5125047de 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,6 @@ sqlite.db .nyc_output hermione-report -/test/func/fixtures/report +test/func/**/report +test/func/**/reports +test/func/packages/*/plugin.js diff --git a/.hermione.conf.js b/.hermione.conf.js deleted file mode 100644 index 4e3c76dcf..000000000 --- a/.hermione.conf.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./test/func/main/.hermione.main'); diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..1cc7b2bac --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,40 @@ +# Contribution guide + +> This document is currently a work in progress and is not yet comprehensive. +> Additional info will be added over time. + +### Running e2e tests + +End-to-end testing of html-reporter consists of two stages: generating fixture reports using different tools and tests, +then running hermione tests on these reports. + +In order to make e2e/screenshot tests stable and reproducible across different environments, +you need to launch browsers inside a Docker container. + +1. Make sure you have Docker installed. +
How to? + 1. If you want to make a personal open-source contribution, you may use Docker free of charge and follow the [official guide](https://docs.docker.com/get-docker/). + 2. If you are acting on behalf of a company, you may not have access to Docker Desktop. In this case: + - On Linux, you may follow the official installation guide. + - On Mac, you may use [colima](https://github.com/abiosoft/colima) as a replacement for Docker Desktop. + - On Windows, you may use Windows Subsystem for Linux to run the Docker CLI without the Desktop application. +
+ +2. Build and start an image with browsers: + ``` + npm run e2e:build-browsers && npm run e2e:launch-browsers + ``` +3. Run e2e tests: + ```bash + npm run e2e + ``` + +End-to-end tests are divided into multiple workspaces: +- `test/func/packages` — packages needed for generating fixture reports, e.g. test html-reporter plugins +- `test/func/fixtures` — packages to generate fixture reports +- `test/func/tests` — hermione tests that run on fixture reports + +If you want a finer-grained control over the process, the following commands may be useful: +- `npm run e2e:generate-fixtures` — generate fixture reports to run tests on +- `npm run --workspace=test/func/tests gui:plugins` — launch hermione GUI for the `plugins` tests set +- `npm run e2e:test` — run e2e tests only, without building packages or generating fixtures diff --git a/lib/static/components/controls/menu-bar.jsx b/lib/static/components/controls/menu-bar.jsx index 5a577c161..5295169a7 100644 --- a/lib/static/components/controls/menu-bar.jsx +++ b/lib/static/components/controls/menu-bar.jsx @@ -31,7 +31,7 @@ class MenuBar extends Component { } return ( -
+
diff --git a/lib/static/components/controls/report-info.jsx b/lib/static/components/controls/report-info.jsx index 2814d67c2..8ab3abb9a 100644 --- a/lib/static/components/controls/report-info.jsx +++ b/lib/static/components/controls/report-info.jsx @@ -9,13 +9,13 @@ class ReportInfo extends Component { return (
-