Skip to content

Commit 9847a31

Browse files
committed
chore: add pr code coverage to ci (#4643)
1 parent 92aeba1 commit 9847a31

File tree

6 files changed

+121
-56
lines changed

6 files changed

+121
-56
lines changed

ci/partials/code-coverage-diff.yml

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
platform: linux
2+
inputs:
3+
- name: src
4+
- name: pipeline-tasks
5+
outputs: [name: src]
6+
params:
7+
GH_EMAIL: ((pages-operations-github-user-info.email))
8+
GH_USERNAME: ((pages-operations-github-user-info.username))
9+
GH_BOT_GPG_KEY: ((pages-operations-github-user-gpg.private_key))
10+
GH_BOT_SSH_KEY: ((pages-gpg-operations-github-sshkey.private_key))
11+
GH_BOT_GPG_TRUST: ((pages-operations-github-user-gpg-trust))
12+
GH_TOKEN: ((pages-operations-ci-github-token))
13+
run:
14+
dir: src
15+
path: ci/tasks/code-coverage-diff.sh

ci/pipeline.yml

+11
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,17 @@ jobs:
7575
instance_vars:
7676
deploy-env: ((deploy-env))
7777

78+
#@ if/end env == 'dev':
79+
- name: code-coverage-diff
80+
plan:
81+
- get: src
82+
trigger: true
83+
- get: node
84+
- get: pipeline-tasks
85+
- task: code-coverage-diff
86+
image: node
87+
file: src/ci/partials/code-coverage-diff.yml
88+
7889
#@ if/end env == 'staging':
7990
- name: update-release-branch
8091
plan:

ci/tasks/code-coverage-diff.sh

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
source "$(dirname $PWD)/pipeline-tasks/scripts/github-setup.sh"
6+
7+
apt-get install jq -y
8+
9+
branch=$(jq '.[] | select(.name=="head_name") | .value' .git/resource/metadata.json | tr -d '"')
10+
base_sha=$(jq '.[] | select(.name=="base_sha") | .value' .git/resource/metadata.json | tr -d '"')
11+
12+
# generate test coverage
13+
yarn install
14+
cov_cmd() { yarn test:rtl --coverageReporters json-summary --coverageDirectory tmp; }
15+
tot_cmd() { jq '.["total"]["lines"]["pct"]' tmp/coverage-summary.json; }
16+
cov_cmd
17+
newcc=$(tot_cmd)
18+
git checkout $base_sha
19+
cov_cmd
20+
oldcc=$(tot_cmd)
21+
git switch -
22+
23+
diffcc=$(awk -v n1=$newcc -v n2=$oldcc -v OFMT="%.2f" 'BEGIN{print n1-n2}')
24+
25+
gh pr comment $branch -b " \
26+
## :robot: This is an automated code coverage report
27+
Total coverage (lines): **$newcc%**
28+
Coverage diff: **$diffcc%**
29+
"
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import React from 'react';
2+
import { render, screen } from '@testing-library/react';
3+
import '@testing-library/jest-dom';
4+
5+
import FilterIndicator from './FilterIndicator';
6+
7+
describe('<FilterIndicator/>', () => {
8+
it('renders', () => {
9+
const count = 5;
10+
const criteria = "test"
11+
render(
12+
<FilterIndicator count={count} criteria={criteria}/>,
13+
);
14+
15+
const paragraph = screen.getByRole('paragraph');
16+
expect(paragraph)
17+
.toHaveTextContent(`Showing ${count} matching results for ${criteria}.`);
18+
});
19+
});

package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,10 @@
132132
"@playwright/test": "^1.42.1",
133133
"@smithy/util-stream": "^3.1.9",
134134
"@svgr/webpack": "8.1.0",
135-
"@testing-library/dom": "^9.3.1",
136-
"@testing-library/jest-dom": "^5.17.0",
137-
"@testing-library/react": "^14.0.0",
138-
"@testing-library/user-event": "^14.4.3",
135+
"@testing-library/dom": "^10.1.0",
136+
"@testing-library/jest-dom": "^6.4.6",
137+
"@testing-library/react": "^16.0.1",
138+
"@testing-library/user-event": "^14.5.2",
139139
"@types/node": "^20.9.0",
140140
"autoprefixer": "^10.4.16",
141141
"aws-sdk-client-mock": "^4.0.2",

yarn.lock

+43-52
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# yarn lockfile v1
33

44

5-
"@adobe/css-tools@^4.0.1":
5+
"@adobe/css-tools@^4.4.0":
66
version "4.4.0"
77
resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.0.tgz#728c484f4e10df03d5a3acd0d8adcbbebff8ad63"
88
integrity sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==
@@ -3157,45 +3157,41 @@
31573157
"@svgr/plugin-jsx" "8.1.0"
31583158
"@svgr/plugin-svgo" "8.1.0"
31593159

3160-
"@testing-library/dom@^9.0.0", "@testing-library/dom@^9.3.1":
3161-
version "9.3.4"
3162-
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.4.tgz#50696ec28376926fec0a1bf87d9dbac5e27f60ce"
3163-
integrity sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==
3160+
"@testing-library/dom@^10.1.0":
3161+
version "10.4.0"
3162+
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.4.0.tgz#82a9d9462f11d240ecadbf406607c6ceeeff43a8"
3163+
integrity sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==
31643164
dependencies:
31653165
"@babel/code-frame" "^7.10.4"
31663166
"@babel/runtime" "^7.12.5"
31673167
"@types/aria-query" "^5.0.1"
3168-
aria-query "5.1.3"
3168+
aria-query "5.3.0"
31693169
chalk "^4.1.0"
31703170
dom-accessibility-api "^0.5.9"
31713171
lz-string "^1.5.0"
31723172
pretty-format "^27.0.2"
31733173

3174-
"@testing-library/jest-dom@^5.17.0":
3175-
version "5.17.0"
3176-
resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz#5e97c8f9a15ccf4656da00fecab505728de81e0c"
3177-
integrity sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==
3174+
"@testing-library/jest-dom@^6.4.6":
3175+
version "6.6.3"
3176+
resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz#26ba906cf928c0f8172e182c6fe214eb4f9f2bd2"
3177+
integrity sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==
31783178
dependencies:
3179-
"@adobe/css-tools" "^4.0.1"
3180-
"@babel/runtime" "^7.9.2"
3181-
"@types/testing-library__jest-dom" "^5.9.1"
3179+
"@adobe/css-tools" "^4.4.0"
31823180
aria-query "^5.0.0"
31833181
chalk "^3.0.0"
31843182
css.escape "^1.5.1"
3185-
dom-accessibility-api "^0.5.6"
3186-
lodash "^4.17.15"
3183+
dom-accessibility-api "^0.6.3"
3184+
lodash "^4.17.21"
31873185
redent "^3.0.0"
31883186

3189-
"@testing-library/react@^14.0.0":
3190-
version "14.3.1"
3191-
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-14.3.1.tgz#29513fc3770d6fb75245c4e1245c470e4ffdd830"
3192-
integrity sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==
3187+
"@testing-library/react@^16.0.1":
3188+
version "16.0.1"
3189+
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.0.1.tgz#29c0ee878d672703f5e7579f239005e4e0faa875"
3190+
integrity sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==
31933191
dependencies:
31943192
"@babel/runtime" "^7.12.5"
3195-
"@testing-library/dom" "^9.0.0"
3196-
"@types/react-dom" "^18.0.0"
31973193

3198-
"@testing-library/user-event@^14.4.3":
3194+
"@testing-library/user-event@^14.5.2":
31993195
version "14.5.2"
32003196
resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.2.tgz#db7257d727c891905947bd1c1a99da20e03c2ebd"
32013197
integrity sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==
@@ -3322,14 +3318,6 @@
33223318
dependencies:
33233319
"@types/istanbul-lib-report" "*"
33243320

3325-
"@types/jest@*":
3326-
version "29.5.14"
3327-
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5"
3328-
integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==
3329-
dependencies:
3330-
expect "^29.0.0"
3331-
pretty-format "^29.0.0"
3332-
33333321
"@types/jsdom@^20.0.0":
33343322
version "20.0.1"
33353323
resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808"
@@ -3373,13 +3361,6 @@
33733361
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451"
33743362
integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==
33753363

3376-
"@types/react-dom@^18.0.0":
3377-
version "18.3.1"
3378-
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.1.tgz#1e4654c08a9cdcfb6594c780ac59b55aad42fe07"
3379-
integrity sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==
3380-
dependencies:
3381-
"@types/react" "*"
3382-
33833364
"@types/react-redux@^7.1.20":
33843365
version "7.1.34"
33853366
resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.34.tgz#83613e1957c481521e6776beeac4fd506d11bd0e"
@@ -3420,13 +3401,6 @@
34203401
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8"
34213402
integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==
34223403

3423-
"@types/testing-library__jest-dom@^5.9.1":
3424-
version "5.14.9"
3425-
resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz#0fb1e6a0278d87b6737db55af5967570b67cb466"
3426-
integrity sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==
3427-
dependencies:
3428-
"@types/jest" "*"
3429-
34303404
"@types/tough-cookie@*":
34313405
version "4.0.5"
34323406
resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304"
@@ -4000,18 +3974,25 @@ argparse@^2.0.1:
40003974
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
40013975
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
40023976

4003-
aria-query@5.1.3, aria-query@~5.1.3:
4004-
version "5.1.3"
4005-
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e"
4006-
integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==
3977+
aria-query@5.3.0:
3978+
version "5.3.0"
3979+
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e"
3980+
integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==
40073981
dependencies:
4008-
deep-equal "^2.0.5"
3982+
dequal "^2.0.3"
40093983

40103984
aria-query@^5.0.0, aria-query@^5.3.2:
40113985
version "5.3.2"
40123986
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59"
40133987
integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==
40143988

3989+
aria-query@~5.1.3:
3990+
version "5.1.3"
3991+
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e"
3992+
integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==
3993+
dependencies:
3994+
deep-equal "^2.0.5"
3995+
40153996
array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1:
40163997
version "1.0.1"
40173998
resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f"
@@ -5493,6 +5474,11 @@ deprecation@^2.0.0, deprecation@^2.3.1:
54935474
resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
54945475
integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
54955476

5477+
dequal@^2.0.3:
5478+
version "2.0.3"
5479+
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
5480+
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
5481+
54965482
54975483
version "1.2.0"
54985484
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
@@ -5550,11 +5536,16 @@ doctrine@^2.1.0:
55505536
dependencies:
55515537
esutils "^2.0.2"
55525538

5553-
dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9:
5539+
dom-accessibility-api@^0.5.9:
55545540
version "0.5.16"
55555541
resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453"
55565542
integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==
55575543

5544+
dom-accessibility-api@^0.6.3:
5545+
version "0.6.3"
5546+
resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8"
5547+
integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==
5548+
55585549
dom-serializer@^2.0.0:
55595550
version "2.0.0"
55605551
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53"
@@ -6429,7 +6420,7 @@ exit@^0.1.2:
64296420
resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
64306421
integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==
64316422

6432-
expect@^29.0.0, expect@^29.7.0:
6423+
expect@^29.7.0:
64336424
version "29.7.0"
64346425
resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc"
64356426
integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==
@@ -9848,7 +9839,7 @@ pretty-format@^27.0.2:
98489839
ansi-styles "^5.0.0"
98499840
react-is "^17.0.1"
98509841

9851-
pretty-format@^29.0.0, pretty-format@^29.7.0:
9842+
pretty-format@^29.7.0:
98529843
version "29.7.0"
98539844
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812"
98549845
integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==

0 commit comments

Comments
 (0)