cypress_test/README | 54 +++++++++++++++++++++++++++++++++++++----- cypress_test/package.json | 1 cypress_test/plugins/index.js | 26 ++++++++++++++------ 3 files changed, 68 insertions(+), 13 deletions(-)
New commits: commit 12307480999dcde066ca4ce1d9ee2b699d9a906b Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Mon Jul 20 14:23:45 2020 +0200 Commit: Tamás Zolnai <tamas.zol...@collabora.com> CommitDate: Mon Jul 20 18:16:04 2020 +0200 cypress: document used npm packages. Change-Id: I13d3fd4add5993351e5d5e72a984e4aff522b748 Reviewed-on: https://gerrit.libreoffice.org/c/online/+/99072 Tested-by: Jenkins Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Tamás Zolnai <tamas.zol...@collabora.com> diff --git a/cypress_test/README b/cypress_test/README index 9fd00f446..fcf3cc0ed 100644 --- a/cypress_test/README +++ b/cypress_test/README @@ -1,9 +1,9 @@ Cypress based test framework for LibreOffice Online -==================================================== +=================================================== Installation ------------------- +------------ You need to have run configure with the --enable-cypress option. @@ -17,7 +17,7 @@ https://docs.cypress.io/guides/guides/continuous-integration.html#Dependencies Running tests ------------------- +------------- All tests are part of the make check build. So you can just execute it from the root folder or under the @@ -57,7 +57,7 @@ cypress_test/integration_tests/mobile/: Running one specific test ------------------- +------------------------- To run one test case of a test suite you can use Mocha's 'only' feature. Just replace the it(...) function with @@ -79,7 +79,7 @@ Or open the test suite in the interactive test runner: make run-mobile spec=writer/apply_font_spec.js Openning interactive test runner ----------------------------------- +-------------------------------- Cypress has an interactive test runner application which runs the test in the browser. So you can see the result of @@ -130,7 +130,7 @@ directory or you should avoid symlinks in the path of the build directory. Code coverage ------------- +------------- We use nyc to instrument the code and then cypress code coverage plugin is used to generate coverage numbers. This workflow @@ -148,3 +148,45 @@ doing a clean build is a good idea (e.g. make clean). See also this link: https://docs.cypress.io/guides/tooling/code-coverage.html + +Used Packages +------------- + +- cypress: + Cypress integration test framework. + +- cypress-failed-log: + This package makes cypress to dump test logs to the command line + when a test fails. You can write things to this log by calling + cy.log() in the test code. + +- cypress-log-to-output: + This one can be used to dump console.error() messages to the command + line. To enable this functionality you need to set ENABLE_CONSOLE_LOG + environment variable. e.g. `ENABLE_CONSOLE_LOG="1" make check-mobile`. + +- cypress-select-tests: + We can filter out tests or test suites before execution using this + package. Now, it is used to filter out tests based on the core's version. + See plugins/blacklists.js. + +- cypress-wait-until: + Introduces cy.waitUntil() command which can be used as a while loop. + We can't write loops in a cypress test otherwise. It's useful when + the cypress tools can't be used to wait on something. + +- eslint: + A JS linter tool for identifying patterns in JavaScript code. We use this + to make sure code conventions are met. Run by make check and make run-*. + +- eslint-plugin-cypress-rules: + This is our own eslint plugin to catch cypress specific patterns in the + test code. + +- get-port-cli: + Used by the build system to find an available port to use as loolwsd's + communication port. + +- wait-on: + Used by the build system to wait on loolwsd server to start before + tests are started. commit 86f2db47a492a24e99bb7a68bc98b81105b7642e Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Mon Jul 20 13:46:15 2020 +0200 Commit: Tamás Zolnai <tamas.zol...@collabora.com> CommitDate: Mon Jul 20 18:15:55 2020 +0200 cypress: add an option to dump only console.error() messages. With the ENABLE_LOGGING flag we get all errors coming from the browser, which is a lot. So I introduce ENABLE_CONSOLE_LOG flag now, which dumps only console.error() messages, so we can debug the client code easier when we run a test in headless mode. It will be useful for multi-user tests, where we can't use the interactive test runner, because we need to run more users at the same time. Change-Id: Icfa62412b83e37398c54e9ac7b4120d76a87fb92 Reviewed-on: https://gerrit.libreoffice.org/c/online/+/99071 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Tested-by: Jenkins Reviewed-by: Tamás Zolnai <tamas.zol...@collabora.com> diff --git a/cypress_test/package.json b/cypress_test/package.json index b44155035..176b2ea0d 100644 --- a/cypress_test/package.json +++ b/cypress_test/package.json @@ -7,6 +7,7 @@ "cypress": "4.9.0", "cypress-failed-log": "2.7.0", "cypress-file-upload": "4.0.7", + "cypress-log-to-output": "1.0.8", "cypress-select-tests": "1.5.7", "cypress-wait-until": "1.7.1", "eslint": "6.8.0", diff --git a/cypress_test/plugins/index.js b/cypress_test/plugins/index.js index eb1837120..a6b1771cb 100644 --- a/cypress_test/plugins/index.js +++ b/cypress_test/plugins/index.js @@ -13,13 +13,25 @@ function plugin(on, config) { failed: require('cypress-failed-log/src/failed')() }); - on('before:browser:launch', function(browser, launchOptions) { - if (browser.family === 'chromium' && process.env.ENABLE_LOGGING) { - launchOptions.args.push('--enable-logging=stderr'); - launchOptions.args.push('--v=2'); - return launchOptions; - } - }); + if (process.env.ENABLE_CONSOLE_LOG) { + require('cypress-log-to-output').install(on, function(type, event) { + if (event.level === 'error' || event.type === 'error') { + return true; + } + + return false; + }); + } + + if (process.env.ENABLE_LOGGING) { + on('before:browser:launch', function(browser, launchOptions) { + if (browser.family === 'chromium') { + launchOptions.args.push('--enable-logging=stderr'); + launchOptions.args.push('--v=2'); + return launchOptions; + } + }); + } on('file:preprocessor', selectTests(config, pickTests)); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits