feat!: add generic e2e support to check-store workflow#279
feat!: add generic e2e support to check-store workflow#279digitalrisedorset wants to merge 28 commits into
Conversation
|
So, what I'd like to see is that we can run this against a store even if that store doesn't have the e2e tests installed. So |
@damienwebdev I've pushed a follow-up commit. The workflow now:
I think this gets us much closer to the flow we discussed earlier today. Could you take another look when you have a moment? I suspect these changes might need tuning from where we are but this structure should be what we are aiming at. Once it works, I'll start 2 new activties:
|
|
@damienwebdev I've removed the guards you mentioned. I understand this is so that we can discover fully the E2E execution path and identify what still needs to be wired up. I imagine we may reinstate some of these guards once E2E tests are fully integrated. |
|
@Vinai asked two things:
|
@Vinai , @damienwebdev My thoughts were that MageOS would own the E2E tests and the execution environment (Node, Playwright version, dependency installation, etc.) would be a separate concern. |
…igger e2e tests steps
0b25c7f to
4bdd58b
Compare
|
Thanks for the continued work on this. E2e test code is now running. Before I re-review, I need to see a green run of the Here's how to run it on
Two notes:
Once you have a green run, link it here and I'll pick the review back up. |
thanks @damienwebdev for your support through this CI pipeline work. Today, I tracked down the issue preventing me from running the workflow in my fork. My fork was significantly behind upstream, so the Check Store workflow was not available. After syncing the fork, I was able to run Check Store Test successfully in my own fork as requested. |
|
@digitalrisedorset a few points I noticed after looking at this PR. Failing testsThe tests are failing because of this error: Playwright is a bit weird in the sense that an If you are only running Chromium browser, which is most cases is sufficient, you can also only install Chromium, which saves a bunch of seconds of not having to download and install webkit/firefox/safari/?: ArtifactI would recommend adding a step to upload the artifact: Double-check the path, but that uploads a report where you can trace back exactly what the browser did, how the page looked, what was clicked on, etc, etc. As if you would run it locally. Playwright defaultsI always update the The reporter:
If there are two failed tests, quit running tests. When you have like 50 tests, and the first few are already failing, there is usually no value in running them all. |
Thanks @michielgerritsen for the suggestions, I have added these along with some other attempts today, I hope we have moved forward. Here's where I am now:
The browser now starts correctly and the tests execute, so we've moved past the infrastructure issues. The current failure is a bin/magento sampledata:deploy
composer update
bin/magento setup:upgrade
bin/magento indexer:reindexbut the step appears to complete almost instantly, which doesn't seem right, so I suspect the sample data may not actually be available. I'm going to pause here for now rather than continue debugging blindly. I think we've made good progress on getting the E2E framework into the pipeline, and I'd rather understand the environment issue properly before spending more time chasing it. Thanks again for your help! |
|
@damienwebdev , @michielgerritsen thanks both for your support. The Playwright tests are failing because the sample data are not being installed. Now, this goes slightly beyond the initial scope that I was having in focus. Since changing permissions and magento settings is security sensitive and likely requires other parts of the system to be adjusted, I was wondering if you could take a look at the error in the workflow and advise as to what may be the best place to change |
PR Checklist
Please check if your PR fulfills the following requirements:
PR Type
What kind of change does this PR introduce?
What is the current behavior?
check-store.yamlcurrently supports:There is currently no generic mechanism for executing optional store-defined E2E test suites within the reusable workflow.
Fixes: N/A
What is the new behavior?
Adds optional
e2e-testsupport tocheck-store.yaml.The workflow now:
package.jsonexistsnpm run test:e2eThis keeps E2E implementation details owned by the consuming store while allowing Mage-OS CI orchestration to execute generic Node-based E2E suites.
A minimal TypeScript-based E2E fixture was also added to validate the orchestration flow.
Does this PR introduce a breaking change?
Other information
This intentionally keeps the E2E contract lightweight and framework-agnostic for now.
The workflow orchestrates execution but does not enforce:
This allows consuming stores to define their own E2E implementation details while reusing the existing Mage-OS orchestration and Magento service bootstrapping.