-
Notifications
You must be signed in to change notification settings - Fork 843
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
Add combined Jest+Cypress code coverage reports #5262
Conversation
-into a single json & html report
- Ignore new `.nyc_output` dir generated by cypress/istanbul - Improve Jest config collectCoverageFrom !ignores: - DRY out component+services folder patterns with a {,} glob - Ignore new Cypress .spec files and .testenv files for jest coverage - eslintignore the cypress folder, since they're all .js anyway and it has a decent amount of idiosyncracies + cleanup unused eslint-disable + cleanup cypress comment boilerplate + remove unused paths from webpack config
2eddfa3
to
ff885b1
Compare
ff885b1
to
6716e63
Compare
Preview documentation changes for this PR: https://eui.elastic.co/pr_5262/ |
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.
Changes LGTM, looks like we want to pull the nyc config to a js file before merging?
I ran |
Preview documentation changes for this PR: https://eui.elastic.co/pr_5262/ |
Yes, that's documented in both in the new wiki docs I added and the script itself: eui/scripts/combine-coverage.sh Lines 4 to 5 in 52b1244
Not realistically. That would literally require running every single jest test and cypress test which would result in the command potentially taking over 30 minutes. All the combine script does is combine the existing coverage reports that already exist in your local Additionally, making the command agnostic allows devs to only run coverage for specific tests that they're developing on (e.g. if you're working on just the It's fairly manual, but this PR at least gets us in the right direction. IMO, I think the most helpful dev QOL step from here would be to add some kind of |
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.
Thanks for the clarification! It would help if I read the docs before trying to use the thing 😅
No worries!! Also whoops, I just realized I mashed auto merge without an actual approval, super sorry y'all 🙈 I'm totally out of wack this morning and somehow mistook Chandler's comment for an approval, my bad! |
My last comment was an approval! All good ✅ |
* Install Cypress code coverage dependencies * Set up required babel+istanbul config * Set up Cypress code coverage config @see https://github.com/cypress-io/code-coverage#instrument-unit-tests * Add script for combining cypress & jest code coverage -into a single json & html report * Misc cleanup/ignores - Ignore new `.nyc_output` dir generated by cypress/istanbul - Improve Jest config collectCoverageFrom !ignores: - DRY out component+services folder patterns with a {,} glob - Ignore new Cypress .spec files and .testenv files for jest coverage - eslintignore the cypress folder, since they're all .js anyway and it has a decent amount of idiosyncracies + cleanup unused eslint-disable + cleanup cypress comment boilerplate + remove unused paths from webpack config * Add wiki documentation * [PR feedback] Move nyc config to own file * [PR feedback] Switch combine coverage script to .sh
* Install Cypress code coverage dependencies * Set up required babel+istanbul config * Set up Cypress code coverage config @see https://github.com/cypress-io/code-coverage#instrument-unit-tests * Add script for combining cypress & jest code coverage -into a single json & html report * Misc cleanup/ignores - Ignore new `.nyc_output` dir generated by cypress/istanbul - Improve Jest config collectCoverageFrom !ignores: - DRY out component+services folder patterns with a {,} glob - Ignore new Cypress .spec files and .testenv files for jest coverage - eslintignore the cypress folder, since they're all .js anyway and it has a decent amount of idiosyncracies + cleanup unused eslint-disable + cleanup cypress comment boilerplate + remove unused paths from webpack config * Add wiki documentation * [PR feedback] Move nyc config to own file * [PR feedback] Switch combine coverage script to .sh
* Provide rows for datagrid cells to be owned by * changelog * undoing things * working except virtualized container * working row wrapper implementation * Create datagrid row elements on-demand and render cells via portals * Provide rows for datagrid cells to be owned by * changelog * undoing things * working except virtualized container * working row wrapper implementation * Create datagrid row elements on-demand and render cells via portals * Small style cleanup * updated changelog * fixing a bad changelog merge * oh that style was important * Update src/components/datagrid/body/data_grid_row_manager.ts Co-authored-by: Constance <constancecchen@users.noreply.github.com> * Update src/components/datagrid/data_grid_types.ts Co-authored-by: Constance <constancecchen@users.noreply.github.com> * Ensure unique ID in combobox with prepended or appended labels (#5229) * Making an explicit check for ID prop in EUI Combobox * Checking for a user-passed ID prop * If no user-passed ID, we'll use the `rootId()` class method to set one * Prepend and append props need an ID to relate label to the input * Adding example for Combobox with prepended label * Confirmed the label `for` attribute is referencing input `id` * Added styles to round the edges of the child `<div>` when we prepend a label * Bumped package.json * Adding CHANGELOG entry and bumping version * Update combo_box.tsx * Updating styles to match other forms with prepend and apppend. * Finishing Combobox CSS and test updates * Simplified the Amsterdam overrides for prepended / appended labels * Added conditional classes to `combo_box.tsx` * Added unit tests for user passed ID, prepended and appended classes * Reordering props in child component. * Final adjustment to ID check in ComboBox * Final updates to styling and documentation * Added CSS rules for compressed, prepend and append border radius * Updated the Display Toggles to include append * Removed a duplicated instruction paragraph * Simplified the logic for a unique ID in combobox.ts * Adding Combobox unique ID to master changelog * Updated Form Control Layout SCSS * The borders were still rounded with prepend and append enabled * Added two more rules to make borders square for full height and compressed * Move to _combo_box.scss Co-authored-by: cchaos <caroline.horn@elastic.co> * update i18ntokens * 40.0.0 * Updated documentation. * Add combined Jest+Cypress code coverage reports (#5262) * Install Cypress code coverage dependencies * Set up required babel+istanbul config * Set up Cypress code coverage config @see https://github.com/cypress-io/code-coverage#instrument-unit-tests * Add script for combining cypress & jest code coverage -into a single json & html report * Misc cleanup/ignores - Ignore new `.nyc_output` dir generated by cypress/istanbul - Improve Jest config collectCoverageFrom !ignores: - DRY out component+services folder patterns with a {,} glob - Ignore new Cypress .spec files and .testenv files for jest coverage - eslintignore the cypress folder, since they're all .js anyway and it has a decent amount of idiosyncracies + cleanup unused eslint-disable + cleanup cypress comment boilerplate + remove unused paths from webpack config * Add wiki documentation * [PR feedback] Move nyc config to own file * [PR feedback] Switch combine coverage script to .sh * [EuiMarkdownEditor] Add `remark-breaks` and line break plugin (#5272) * Add remark-breaks and line break plugin to MarkdownEditor * Update changelog * [Docs] Separated out Borders to its own page & [EuiTableRowCell] fixes (#5283) * Moved Border tokens to its own page * Figured out a way to get subsections in the sidenav working * Added the new `_values` under `customizing/` * [EuiTableRowCell] Actually support `valign` property manually * [EuiTable*] Fixing some props and mobile options * Slightly better responsive table styles * Fix CL from #5272 * [Docs] Update EuiDatePicker types (#5318) * omit unsupported types * resolve console errors * CL * [Cypress] Add flakey test retries + harden intermittent context menu failures (#5317) * Add Cypress failed test retries to CI run mode * Increase cy.wait on flaky context menu tests (just in case) * More hardening * [Docs] Fix Colors guidelines (#5316) * use useJsonVars * use variable * Update dependency @elastic/charts to ^38.1.0 (#5321) * PR feedback * Added a cypress test for datagrid row rendering * Revert changes(?) to docs/ * revert changelog reformats * re-ignore a couple datagrid example pages when running a11y tests * Alternate way to know if the datagrid cells have rendered * PR feedback * changelog Co-authored-by: Constance <constancecchen@users.noreply.github.com> Co-authored-by: Trevor Pierce <1Copenut@users.noreply.github.com> Co-authored-by: cchaos <caroline.horn@elastic.co> Co-authored-by: ian moersen <ian@union.io> Co-authored-by: Caroline Horn <549577+cchaos@users.noreply.github.com> Co-authored-by: Greg Thompson <thompson.glowe@gmail.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Summary
While working on #5261, I wanted to calculate combined coverage to make sure I wasn't losing any uncovered lines when converting the focus behavior tests to Cypress. This PR adds a Cypress code coverage plugin and then a
yarn combine-test-coverage
script that combines our Cypress+Jest output into a single HTML report. It additionally adds wiki documentation for how to access our HTML code coverage reports.I recommend following along by commit, as I added some misc. cleanup as part of this PR as well.
Example
I cherry-picked #5261 into this branch locally to get an example of how updating a subsection of Jest tests to Cypress would affect final combined coverage. Coverage remained approximately the same (with a 1% increase from adding Cypress!)
Before with just Jest coverage
After
Jest coverage:
Cypress coverage:
Combined coverage:
QAing locally
yarn
to install new dependenciesyarn test-unit --coverage
to generate Jest coverage reportsyarn test-cypress
which will automatically generate Cypress coverage reportsyarn combine-test-coverage
, which should automatically open the main coverage report HTML page in your browserResources
Reference links to the resources I used while I was setting this up:
Checklist
N/A, internal/dev-only change