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 |
|
Each time I get back to this issue I have to look up all moving parts, so for future reference an overview of all moving parts:
@digitalrisedorset Could you verify that I included all moving parts? |
Yes, @michielgerritsen that's essentially it. The moving parts are currently:
At the moment the pipeline gets as far as running Playwright. The new blocker appears to be the Magento environment itself rather than the Playwright integration. In particular, the sample data don't seem to be available due to invalid permissions, so the PLP/PDP tests return 404s. I think the next step is to understand the correct way for the CI environment to prepare a Magento instance with sample data rather than continuing to tweak the Playwright side. |
|
Looking at the pipeline, it's currently failing on permission errors. @damienwebdev I think Docker is in the game here as well. Any insight on how to call |
|
@michielgerritsen we don't have any standard way to run We do something like this in https://github.com/graycoreio/github-actions-magento2/blob/main/setup-install/action.yml#L21 Perhaps a new action action for You can test out whether or not that's the issue by using |
|
Hi both, thanks for jumping in to help move this E2E project forward. Even if we resolve the current environment issues, we should first agree on how we expect E2E to run in CI over the long term. My understanding is that running the full Playwright suite with all supported Magento versions will eventually hit CI timeout limits. It also means that debugging failures could become increasingly complex as different Magento versions, themes and sample data introduce different behaviours. As I mentioned during our last weekly meetup, I wonder whether we should first focus on a much smaller Playwright focus to answer to some design questions:
I think answering these questions first will give us a much clearer target and reduce the risk of investing time in a pipeline that we later need to redesign. |
Having said that, and I think I've stated this before, but the Elgentos suite isn't the best example to get started with. Let's start with a few basic tests before. As you can see, that's hard enough already. Once that is running, we can look into getting the test suite up on something better. |
|
Thanks, I read you have a strong experience with Playwright, I wonder if it
makes sense for us to split the work slightly differently for now.
Rather than both spending time on the Playwright side, I’m happy to focus
on getting the CI environment into the right shape (nginx, running
bin/magento commands in the container, permissions, sample data, etc.), so
that have the hosting sorted
Between me and Damien we can get this hosting cleared.
…On Tue, 30 Jun 2026 at 20:51, Michiel Gerritsen ***@***.***> wrote:
*michielgerritsen* left a comment (graycoreio/github-actions-magento2#279)
<#279 (comment)>
-
*Can we run Playwright in chunks so that the CI remains reliable?*
Yes, that's no issue and I have experience with that. See this action
<https://github.com/mollie/magento2/actions/runs/28430606638> for
example, it divides the tests over three runners and merges the results
when done. But I have seen runners that go well over an hour; that ain't an
issue.
-
*How flexible should the Playwright configuration be to accommodate
differences between supported Magento versions?*
Let's focus on having it run on the latest version for now, then we
can work on that later.
-
*Is running Playwright directly in CI the right long-term model for
Mage-OS, given the number of Magento versions we want to support?*
It is. I also have experience with running in Cypress, Playwright is
the better option by a wide margin.
Having said that, and I think I've stated this before, but the Elgentos
suite isn't the best example to get started with. Let's start with a few
basic tests before. As you can see, that's hard enough already. Once that
is running, we can look into getting the test suite up on something better.
—
Reply to this email directly, view it on GitHub
<#279?email_source=notifications&email_token=BHVLMT5YPULENN2YNDX5KNL5CQK5NA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIOBUG4ZTQNRWGMZKM4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJLDGN5XXIZLSL5RWY2LDNM#issuecomment-4847386632>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BHVLMT3LCFR7SCIRPI2S2ML5CQK5NAVCNFSNUABFKJSXA33TNF2G64TZHM2TANZTGI2TOOBYHNEXG43VMU5TINBXGUZTMNZSHA32C5QC>
.
Triage notifications, keep track of coding agent tasks and review pull
requests on the go with GitHub Mobile for iOS
<https://github.com/notifications/mobile/ios/BHVLMT6BSAQ47TPEKLL5JAT5CQK5NA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIOBUG4ZTQNRWGMZKM4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJKTGN5XXIZLSL5UW64Y>
and Android
<https://github.com/notifications/mobile/android/BHVLMT5VCS2WI3VQ7VX7MD35CQK5NA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIOBUG4ZTQNRWGMZKM4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJLTGN5XXIZLSL5QW4ZDSN5UWI>.
Download it today!
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
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.