This is experimental repository for compiling the Agama integration tests and bundling all dependencies into a single file.
- Puppeteer and it's dependencies are not needed on the Live ISO
- The tests can use additional libraries if needed, they do not need to depend on the Live ISO content
- The used Puppeteer version is not bound to the Live ISO (it only needs to be compatible with the included Firefox browser), the version update is simple
- The builtin Node.js test runner supports the Test Anything Protocol (TAP), already supported by openQA
First install the needed NPM packages:
npm ci
To compile the source test files run:
npm run build
This compiles the sources into the dist
subdirectory.
To generate the target files without optimizations run this command:
npm run devel
In this case the generated files are a bit bigger.
To rebuild the tests during development automatically you can run:
npm run watch
This builds the tests in development mode to have faster builds.
The generated test is executable, simply run it (this connects to the locally running Agama instance, to use a remote one see the options below):
./dist/test_root_password.js
If you copy the test to different machine do not forget to also copy the
vendor.js
file and *.map
files if you want to get backtrace locations in the
original source code. To use the map files use the --enable-source-maps
node
option:
node --enable-source-maps ./dist/test_root_password.js
To use the TAP output format, use the --test-reporter
Node.js option:
node --test-reporter=tap ./dist/test_root_password.cjs
Alternatively it is possible to implement own test reporter.
The test currently accepts several optional arguments, run
./dist/test_root_password.js --help
:
Usage: test_root_password [options]
Run a simple Agama integration test
Options:
-u, --url <url> Agama server URL (default: "http://localhost")
-p, --password <password> Agama login password (default: "linux")
-b, --browser <browser> Browser used for running the test (choices:
"firefox", "chrome", "chromium", default:
"firefox")
-h, --headed Run the browser in headed mode with UI (the
default is headless mode)
-d, --delay <miliseconds> Delay between the browser actions, useful in
headed mode (default: 0)
-c, --continue Continue the test after a failure (the default is
abort on error)
--help display help for command
Full example for running the browser in the English locale, using local Chrome browser in headed mode and connecting to a remote Agama instance:
LC_ALL=en_US.UTF-8 ./dist/test_root_password.js -h -b chrome -u https://agama.local
- It uses the Node.js built-in testing framework and the runner instead of Mocha.js (or any similar framework) which needs a special test runner that cannot be bundled into the generated file by Webpack.