Skip to content

Commit 4c6ad04

Browse files
authored
Merge pull request #2643 from cdr/add-playwright
feat(testing): add playwright
2 parents 966e9cc + 6685a3e commit 4c6ad04

File tree

5 files changed

+164
-14
lines changed

5 files changed

+164
-14
lines changed

.github/workflows/ci.yaml

+14-3
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,24 @@ jobs:
2222
args: ./ci/steps/lint.sh
2323

2424
test:
25+
needs: linux-amd64
2526
runs-on: ubuntu-latest
2627
steps:
2728
- uses: actions/checkout@v1
28-
- name: Run ./ci/steps/test.sh
29-
uses: ./ci/images/debian10
29+
- name: Download release packages
30+
uses: actions/download-artifact@v2
3031
with:
31-
args: ./ci/steps/test.sh
32+
name: release-packages
33+
path: ./release-packages
34+
- name: Untar code-server file
35+
run: |
36+
cd release-packages && tar -xzf code-server*-linux-amd64.tar.gz
37+
- uses: microsoft/playwright-github-action@v1
38+
- name: Install dependencies and run tests
39+
run: |
40+
node ./release-packages/code-server*-linux-amd64 &
41+
yarn --frozen-lockfile
42+
yarn test
3243
3344
release:
3445
runs-on: ubuntu-latest

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ node-*
1414
/plugins
1515
/lib/coder-cloud-agent
1616
.home
17-
coverage
17+
coverage

test/e2e.test.ts

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { chromium, Page, Browser } from "playwright"
2+
3+
let browser: Browser
4+
let page: Page
5+
6+
beforeAll(async () => {
7+
browser = await chromium.launch()
8+
})
9+
afterAll(async () => {
10+
await browser.close()
11+
})
12+
beforeEach(async () => {
13+
page = await browser.newPage()
14+
})
15+
afterEach(async () => {
16+
await page.close()
17+
})
18+
19+
it("should see the login page", async () => {
20+
await page.goto("http://localhost:8080")
21+
// It should send us to the login page
22+
expect(await page.title()).toBe("code-server login")
23+
})

test/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"@types/supertest": "^2.0.10",
88
"jest": "^26.6.3",
99
"node-fetch": "^2.6.1",
10+
"playwright": "^1.8.0",
1011
"supertest": "^6.1.1",
1112
"ts-jest": "^26.4.4"
1213
}

test/yarn.lock

+125-10
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,13 @@
606606
dependencies:
607607
"@types/yargs-parser" "*"
608608

609+
"@types/yauzl@^2.9.1":
610+
version "2.9.1"
611+
resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af"
612+
integrity sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==
613+
dependencies:
614+
"@types/node" "*"
615+
609616
abab@^2.0.3:
610617
version "2.0.5"
611618
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
@@ -629,6 +636,13 @@ acorn@^7.1.1:
629636
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
630637
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
631638

639+
agent-base@6:
640+
version "6.0.2"
641+
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
642+
integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
643+
dependencies:
644+
debug "4"
645+
632646
ajv@^6.12.3:
633647
version "6.12.6"
634648
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
@@ -881,6 +895,11 @@ [email protected]:
881895
dependencies:
882896
node-int64 "^0.4.0"
883897

898+
buffer-crc32@~0.2.3:
899+
version "0.2.13"
900+
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
901+
integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
902+
884903
[email protected], buffer-from@^1.0.0:
885904
version "1.1.1"
886905
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
@@ -1028,6 +1047,11 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
10281047
dependencies:
10291048
delayed-stream "~1.0.0"
10301049

1050+
commander@^6.1.0:
1051+
version "6.2.1"
1052+
resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
1053+
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
1054+
10311055
component-emitter@^1.2.1, component-emitter@^1.3.0:
10321056
version "1.3.0"
10331057
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
@@ -1113,20 +1137,20 @@ data-urls@^2.0.0:
11131137
whatwg-mimetype "^2.3.0"
11141138
whatwg-url "^8.0.0"
11151139

1140+
debug@4, debug@^4.1.0, debug@^4.1.1:
1141+
version "4.3.1"
1142+
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
1143+
integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
1144+
dependencies:
1145+
ms "2.1.2"
1146+
11161147
debug@^2.2.0, debug@^2.3.3:
11171148
version "2.6.9"
11181149
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
11191150
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
11201151
dependencies:
11211152
ms "2.0.0"
11221153

1123-
debug@^4.1.0, debug@^4.1.1:
1124-
version "4.3.1"
1125-
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
1126-
integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
1127-
dependencies:
1128-
ms "2.1.2"
1129-
11301154
decamelize@^1.2.0:
11311155
version "1.2.0"
11321156
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
@@ -1362,6 +1386,17 @@ extglob@^2.0.4:
13621386
snapdragon "^0.8.1"
13631387
to-regex "^3.0.1"
13641388

1389+
extract-zip@^2.0.1:
1390+
version "2.0.1"
1391+
resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
1392+
integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
1393+
dependencies:
1394+
debug "^4.1.1"
1395+
get-stream "^5.1.0"
1396+
yauzl "^2.10.0"
1397+
optionalDependencies:
1398+
"@types/yauzl" "^2.9.1"
1399+
13651400
13661401
version "1.3.0"
13671402
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
@@ -1399,6 +1434,13 @@ fb-watchman@^2.0.0:
13991434
dependencies:
14001435
bser "2.1.1"
14011436

1437+
fd-slicer@~1.1.0:
1438+
version "1.1.0"
1439+
resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
1440+
integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
1441+
dependencies:
1442+
pend "~1.2.0"
1443+
14021444
fill-range@^4.0.0:
14031445
version "4.0.0"
14041446
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
@@ -1501,7 +1543,7 @@ get-stream@^4.0.0:
15011543
dependencies:
15021544
pump "^3.0.0"
15031545

1504-
get-stream@^5.0.0:
1546+
get-stream@^5.0.0, get-stream@^5.1.0:
15051547
version "5.2.0"
15061548
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
15071549
integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
@@ -1634,6 +1676,14 @@ http-signature@~1.2.0:
16341676
jsprim "^1.2.2"
16351677
sshpk "^1.7.0"
16361678

1679+
https-proxy-agent@^5.0.0:
1680+
version "5.0.0"
1681+
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
1682+
integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
1683+
dependencies:
1684+
agent-base "6"
1685+
debug "4"
1686+
16371687
human-signals@^1.1.1:
16381688
version "1.1.1"
16391689
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
@@ -2266,6 +2316,11 @@ jest@^26.6.3:
22662316
import-local "^3.0.2"
22672317
jest-cli "^26.6.3"
22682318

2319+
jpeg-js@^0.4.2:
2320+
version "0.4.3"
2321+
resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.3.tgz#6158e09f1983ad773813704be80680550eff977b"
2322+
integrity sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==
2323+
22692324
js-tokens@^4.0.0:
22702325
version "4.0.0"
22712326
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -2782,6 +2837,11 @@ path-parse@^1.0.6:
27822837
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
27832838
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
27842839

2840+
pend@~1.2.0:
2841+
version "1.2.0"
2842+
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
2843+
integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
2844+
27852845
performance-now@^2.1.0:
27862846
version "2.1.0"
27872847
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
@@ -2806,6 +2866,29 @@ pkg-dir@^4.2.0:
28062866
dependencies:
28072867
find-up "^4.0.0"
28082868

2869+
playwright@^1.8.0:
2870+
version "1.8.0"
2871+
resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.8.0.tgz#8eca2250967ee892b9fdfec44e2358455ab0f8e3"
2872+
integrity sha512-urMJDLX92KawbkWKrt3chVVBPQsuuNwlS5St7I5YQENXAEItoyUqX7FjiYaoPgXifKqe1+BKC+7pBAq1QUkgSw==
2873+
dependencies:
2874+
commander "^6.1.0"
2875+
debug "^4.1.1"
2876+
extract-zip "^2.0.1"
2877+
https-proxy-agent "^5.0.0"
2878+
jpeg-js "^0.4.2"
2879+
mime "^2.4.6"
2880+
pngjs "^5.0.0"
2881+
progress "^2.0.3"
2882+
proper-lockfile "^4.1.1"
2883+
proxy-from-env "^1.1.0"
2884+
rimraf "^3.0.2"
2885+
ws "^7.3.1"
2886+
2887+
pngjs@^5.0.0:
2888+
version "5.0.0"
2889+
resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb"
2890+
integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==
2891+
28092892
posix-character-classes@^0.1.0:
28102893
version "0.1.1"
28112894
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
@@ -2826,6 +2909,11 @@ pretty-format@^26.0.0, pretty-format@^26.6.2:
28262909
ansi-styles "^4.0.0"
28272910
react-is "^17.0.1"
28282911

2912+
progress@^2.0.3:
2913+
version "2.0.3"
2914+
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
2915+
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
2916+
28292917
prompts@^2.0.1:
28302918
version "2.4.0"
28312919
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7"
@@ -2834,6 +2922,20 @@ prompts@^2.0.1:
28342922
kleur "^3.0.3"
28352923
sisteransi "^1.0.5"
28362924

2925+
proper-lockfile@^4.1.1:
2926+
version "4.1.2"
2927+
resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f"
2928+
integrity sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==
2929+
dependencies:
2930+
graceful-fs "^4.2.4"
2931+
retry "^0.12.0"
2932+
signal-exit "^3.0.2"
2933+
2934+
proxy-from-env@^1.1.0:
2935+
version "1.1.0"
2936+
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
2937+
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
2938+
28372939
psl@^1.1.28:
28382940
version "1.8.0"
28392941
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
@@ -3000,7 +3102,12 @@ ret@~0.1.10:
30003102
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
30013103
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
30023104

3003-
rimraf@^3.0.0:
3105+
retry@^0.12.0:
3106+
version "0.12.0"
3107+
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
3108+
integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
3109+
3110+
rimraf@^3.0.0, rimraf@^3.0.2:
30043111
version "3.0.2"
30053112
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
30063113
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
@@ -3699,7 +3806,7 @@ write-file-atomic@^3.0.0:
36993806
signal-exit "^3.0.2"
37003807
typedarray-to-buffer "^3.1.5"
37013808

3702-
ws@^7.2.3:
3809+
ws@^7.2.3, ws@^7.3.1:
37033810
version "7.4.2"
37043811
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd"
37053812
integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==
@@ -3753,3 +3860,11 @@ yargs@^15.4.1:
37533860
which-module "^2.0.0"
37543861
y18n "^4.0.0"
37553862
yargs-parser "^18.1.2"
3863+
3864+
yauzl@^2.10.0:
3865+
version "2.10.0"
3866+
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
3867+
integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
3868+
dependencies:
3869+
buffer-crc32 "~0.2.3"
3870+
fd-slicer "~1.1.0"

0 commit comments

Comments
 (0)