Issue number: N/A
---------
<!-- Please do not submit updates to dependencies unless it fixes an
issue. -->
<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->
## What is the current behavior?
<!-- Please describe the current behavior that you are modifying. -->
Screenshots in a branch are currently compared against the screenshots
on `main`. While we ultimately need to compare against ground truths in
`main`, this can cause tests to seemingly fail at random. For example,
this branch was created based on
eb2772c0ce.
However,
381de0b3d3
was added to `main` after the first commit and has new screenshot diffs.
I do not have the latest ground truths for the changed screenshots in
this branch, so the screenshot tests failed in
https://github.com/ionic-team/ionic-framework/actions/runs/4995702351/jobs/8947969061
even though I did not change any component implementations.
## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->
- Test runs in CI now run against the ground truths available in the
branch. When a commit is added to the merge queue, it will be tested
against the latest `main` and any commits ahead of it in the queue. As a
result, if there _is_ a conflict then the test run will fail at that
point and the commit will be removed from the merge queue.
## Does this introduce a breaking change?
- [ ] Yes
- [x] No
<!-- If this introduces a breaking change, please describe the impact
and migration path for existing applications below. -->
## Other information
<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->
Issue number: N/A
---------
<!-- Please do not submit updates to dependencies unless it fixes an
issue. -->
<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->
## What is the current behavior?
<!-- Please describe the current behavior that you are modifying. -->
The generator migration is complete, so we can safely remove the legacy
test infrastructure.
## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->
- Removes the legacy test infrastructure
## Does this introduce a breaking change?
- [ ] Yes
- [x] No
<!-- If this introduces a breaking change, please describe the impact
and migration path for existing applications below. -->
## Other information
<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->
Note: There's still a bit of sharding imbalance that I need to look into
(test runner 17 is a few minutes longer than all the other test
runners), but I will handle that in a separate PR.
Issue number: FW-4092
---------
<!-- Please do not submit updates to dependencies unless it fixes an
issue. -->
<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->
## What is the current behavior?
<!-- Please describe the current behavior that you are modifying. -->
## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->
- Updates the Angular 16 test app to the official dependencies
- Removes the legacy peer dependency install flag (needed during the RC
cycle)
## Does this introduce a breaking change?
- [ ] Yes
- [x] No
<!-- If this introduces a breaking change, please describe the impact
and migration path for existing applications below. -->
## Other information
<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->
Issue number: N/A
---------
<!-- Please do not submit updates to dependencies unless it fixes an
issue. -->
<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->
## What is the current behavior?
<!-- Please describe the current behavior that you are modifying. -->
`set-output` usage is deprecated in favor of environment files.
## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->
- Updates the `test-core-screenshot` workflow to remove `set-output` in
favor of environment files.
## Does this introduce a breaking change?
- [ ] Yes
- [x] No
<!-- If this introduces a breaking change, please describe the impact
and migration path for existing applications below. -->
## Other information
<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->
Issue number: N/A
---------
<!-- Please refer to our contributing documentation for any questions on
submitting a pull request, or let us know here if you need any help:
https://ionicframework.com/docs/building/contributing -->
<!-- Some docs updates need to be made in the `ionic-docs` repo, in a
separate PR. See
https://github.com/ionic-team/ionic-framework/blob/main/.github/CONTRIBUTING.md#modifying-documentation
for details. -->
<!-- Please do not submit updates to dependencies unless it fixes an
issue. -->
<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->
This is the first PR to introduce the infrastructure required to add
test generators to the Ionic Framework project. This PR introduces the
file name changes necessary to support two playwright configs, so I
recommend reviewing the PR by commit:
1e5012cea1
- Created a `playwright.config-legacy.ts` file and updates
`package.json`.
- Running `npm run test.e2e` will run the generator tests, and running
`npm run test.e2e.legacy` will run the legacy tests.
4fe8de7df7
- Updates the GitHub Action scripts to run both the modern and legacy
E2E tests. I added command modifiers to avoid collisions with output
directories.
e8bcfaf926
- Updates `*.e2e.ts` files to have the legacy format name:
`*.e2e-legacy.ts`. This naming scheme is required for the two Playwright
configs to pull in the correct files. When migrating tests to
generators, team members will rename the file to remove the `-legacy`
part.
5bf196c36d
(warning: lots of files!)
- Updates the `*.e2e.ts-snapshots` directories to have the legacy format
name: `*.e2e-legacy.ts-snapshots`. The screenshot directory in
Playwright is generated based on the test file name which is why we are
updating the screenshot directory. When migrating tests to generators,
team members will rename the directory to remove the `-legacy` part.
## Does this introduce a breaking change?
- [ ] Yes
- [x] No
<!-- If this introduces a breaking change, please describe the impact
and migration path for existing applications below. -->
## Other information
<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->
<!-- Please refer to our contributing documentation for any questions on
submitting a pull request, or let us know here if you need any help:
https://ionicframework.com/docs/building/contributing -->
<!-- Some docs updates need to be made in the `ionic-docs` repo, in a
separate PR. See
https://github.com/ionic-team/ionic-framework/blob/main/.github/CONTRIBUTING.md#modifying-documentation
for details. -->
<!-- Please do not submit updates to dependencies unless it fixes an
issue. -->
<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->
## What is the current behavior?
<!-- Please describe the current behavior that you are modifying. -->
<!-- Issues are required for both bug fixes and features. -->
Issue URL: Internal
## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->
- Adds Angular 16 test app
- Introduces version test to validate which major version of Angular is
being tested
## Does this introduce a breaking change?
- [ ] Yes
- [x] No
<!-- If this introduces a breaking change, please describe the impact
and migration path for existing applications below. -->
## Other information
<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->
<!-- Please refer to our contributing documentation for any questions on
submitting a pull request, or let us know here if you need any help:
https://ionicframework.com/docs/building/contributing -->
<!-- Some docs updates need to be made in the `ionic-docs` repo, in a
separate PR. See
https://github.com/ionic-team/ionic-framework/blob/main/.github/CONTRIBUTING.md#modifying-documentation
for details. -->
<!-- Please do not submit updates to dependencies unless it fixes an
issue. -->
<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->
## What is the current behavior?
<!-- Please describe the current behavior that you are modifying. -->
<!-- Issues are required for both bug fixes and features. -->
Unbuilt changes in `core` are not always being caught because the
`api.txt` file is not cached.
Stencil will potentially update both the `src/components.d.ts` and
`api.txt` files when there are built changes to the public API. We need
to check both files when accounting for unbuilt changes.
Example: https://github.com/ionic-team/ionic-framework/pull/25858
This had updates to `api.txt` that were not built.
Built changes PR:
https://github.com/ionic-team/ionic-framework/pull/25933
Example of this change catching `api.txt` changes as intended:
https://github.com/ionic-team/ionic-framework/pull/27165
## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->
- GitHub Actions core build step caches `api.txt`
## Does this introduce a breaking change?
- [ ] Yes
- [x] No
<!-- If this introduces a breaking change, please describe the impact
and migration path for existing applications below. -->
## Other information
<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->
this commit removes the retrieval of stencil source code and building
the library from source. with
24887c0da0
(https://github.com/ionic-team/stencil/pull/4100), stencil now creates
nightly builds from `main@HEAD` of the repository. these pre-built
packages are tagged as "nightly", allowing us to bypass the previously
mentioned build steps and install the package directly
rename stencil-eval to stencil-nightly to better reflect what the
workflow is running. since ionic framework v7.0 has been released,
its feature branch has been removed/merged into `main`. remove
usages of `feature-7.0` in favor of `main`
this commit points the stencil nightly tests at framework v7's feature
branch. stencil 3 (which is now the `HEAD` of the stencil repo's `main`
branch) had breaking changes. framework v7 will use stencil v3, and it
is in this branch that the fixes for the breaking changes have been
applied.
this commit introduces the ability for the ionic framework to run it's
continuous integration (ci) suite using the latest commits in the
[stencil repository](https://github.com/ionic-team/stencil). the motivation
behind this is the ability for both the ionic framework and stencil
teams to have better insight as to whether a new version of stencil
will work correctly in the ionic framework. the intent here is that any
regressions can be caught and rectified by the appropriate team prior
to a release of either piece of software.
the stencil repository currently does not have the ability to publish
a "developer" release, or any other type of release that might otherwise
be considered for a "canary" or "nightly" release. the stencil team is
working towards this goal. however, we believe both teams can benefit
from this type of testing in the mean time. as such, we temporarily build
stencil from source and install the generated tarball in ci. this allows us
to begin to work through the operational issues related to having this
new integration without being reliant on a new publishing pipeline.
the job is introduced as a cron job, that runs in the early hours of the
morning. it closely resembles this repo's build step that runs on every
pr that's opened - with the difference of pulling down the stencil repo,
building the project, and installing the tarball