-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Cypress] Remove Joomla command line client tool dependency #44656
base: 5.2-dev
Are you sure you want to change the base?
Conversation
With the `SefPlugin.cy.js` test specification, the Joomla command line client tool was added to the Joomla system tests for the first time. This is an additional complexity and dependency. Especially if the test environment is containerised and Cypress container has no PHP installed. And PHP version needs to be 8.1 and additional modules like `php-simplexml` are needed. And with the Docker access rights, `configuration.php` must be opened for writing (`chmod 644`). And then there is the locally running Cypress GUI to be configured... Therefore switched from using the Joomla command line client tool to using the existing `config_setParameter` Cypress command. The original creator of [44253](joomla#44253) could not know as it is not documented (will be solved with another PR and together with enabling `mod_rewrite` and the `AllowOverride All` needed configuration). Since sometimes the first SEF test failed when the entire Joomla System Tests was performed, the following was implemented: * The operations of the `writeRelativeFile` Cypress task are wrapped in a Promise to ensure that they are only resolved when everything is done * The `config_setParameter` Cypress custom command to return a Cypress chainable * Chaining has been implemented everywhere in `SefPlugin.cy.js` For this test spec the Cypress best practice to use `beforeEach` to ensure tests is added to run independently from one another (and needed for other places in the Joomla System Tests – one more PR). As a small side effect the SEF test spec with 9 tests runs faster, e.g. 3 instead of 18 seconds before. Tested with own target Joomla 5.2-dev three times the single test spec on: * Intel macOS 15.2 using Apache/MariaDB * Apple Silicon macOS 15.2 using Apache/MariaDB * Windows 11 24H2 using Laragon/Apache/MySQL ``` npx cypress run --spec tests/System/integration/plugins/system/sef/SefPlugin.cy.js ``` And once the overall test suite: ``` npm run cypress:run ```
I have tested this item ✅ successfully on 0595b79 This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/44656. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tests are working on my local test environment
* wait for the task to complete and chain it. | ||
*/ | ||
return cy.task('writeRelativeFile', { path: 'configuration.php', content }).then((result) => { | ||
cy.log(result); // Log success message for debugging |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@@ -36,24 +36,29 @@ function deleteRelativePath(relativePath, config) { | |||
* @returns null |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
return type changed to Promise
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the hint, it looks right as one more change and I will test it and adopt the function header, but I'm running out of time these days, come back soon ...
Testing the CLI application is also not a bad idea ... now there is also a PR for it #44683 |
Yes and can we implement this outside Joomla System Tests? |
Summary of Changes
Refactoring of the Cypress test for SEF to replace the dependency on the Joomla command line client tool with Cypress custom commands.
With the
SefPlugin.cy.js
Cypress test, the Joomla command line client tool was added to the Joomla System Tests for the first time. This is an additional complexity and dependency. Especially if the test environment is containerised and Cypress container has no PHP installed. And PHP version needs to be 8.1 and additional modules likephp-simplexml
are needed. And with the Docker access rights,configuration.php
must be opened for writing (chmod 644
). And then there is the locally running Cypress GUI to be configured...Therefore switched from using the Joomla command line client tool to using the existing
config_setParameter
Cypress custom command. The original creator of 44253 could not know as it is not documented (will be solved with another PR #44660, together with the description for configuring the now required enablemod_rewrite
andAllowOverride All
).Since sometimes the first SEF test failed when the entire Joomla System Tests was performed after refactoring, the following was implemented:
writeRelativeFile
Cypress task are wrapped in a Promise to ensure that they are only resolved when everything is doneconfig_setParameter
Cypress custom command to return a Cypress chainableSefPlugin.cy.js
The Cypress best practice of using
beforeEach
is used to ensure that the tests can be run independently (this is still needed for other places in the Joomla system tests - another PR).As a small side effect the SEF test spec with 9 tests runs faster, e.g. 3 instead of 18 seconds before.
Testing Instructions
And once the overall test suite:
Three times the single test spec on:
And once the overall test suite:
Actual result BEFORE applying this Pull Request
Joomla System Tests require Joomla command line client
Expected result AFTER applying this Pull Request
Joomla System Tests doesn't require Joomla command line client
Link to documentations
Please select:
Documentation link for docs.joomla.org:
No documentation changes for docs.joomla.org needed
Pull Request link for manual.joomla.org:
No documentation changes for manual.joomla.org needed
Related PR for adopting Joomla System Tests GitHub will follow