Skip to content

Commit 602a661

Browse files
committed
ci: add e2e vercel test action
This commit adds several end-to-end tests that can be used to test whether the Vercel Preview deployment successfully returns the cards.
1 parent fe1ca87 commit 602a661

File tree

5 files changed

+79
-0
lines changed

5 files changed

+79
-0
lines changed

.github/workflows/e2e-test.yml

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Test Deployment
2+
on:
3+
deployment_status:
4+
5+
jobs:
6+
preview:
7+
if:
8+
github.event_name == 'deployment_status' &&
9+
github.event.deployment_status.state == 'success'
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v3
13+
- name: Install dependencies
14+
run: npm ci
15+
env:
16+
CI: true
17+
- name: Run end-to-end tests.
18+
run: npm run test:e2e
19+
env:
20+
VERCEL_PREVIEW_URL: ${{ github.event.deployment_status.target_url }}

jest.config.js

+6
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,10 @@ export default {
33
transform: {},
44
testEnvironment: "jsdom",
55
coverageProvider: "v8",
6+
testPathIgnorePatterns: ["<rootDir>/node_modules/", "<rootDir>/tests/e2e/"],
7+
modulePathIgnorePatterns: ["<rootDir>/node_modules/", "<rootDir>/tests/e2e/"],
8+
coveragePathIgnorePatterns: [
9+
"<rootDir>/node_modules/",
10+
"<rootDir>/tests/E2E/",
11+
],
612
};

jest.e2e.config.js

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export default {
2+
clearMocks: true,
3+
transform: {},
4+
testEnvironment: "jsdom",
5+
coverageProvider: "v8",
6+
testMatch: ["<rootDir>/tests/e2e/**/*.test.js"],
7+
};

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage",
99
"test:watch": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch",
1010
"test:update:snapshot": "node --experimental-vm-modules node_modules/jest/bin/jest.js -u",
11+
"test:e2e": "node --experimental-vm-modules node_modules/jest/bin/jest.js --config jest.e2e.config.js",
1112
"theme-readme-gen": "node scripts/generate-theme-doc",
1213
"preview-theme": "node scripts/preview-theme",
1314
"generate-langs-json": "node scripts/generate-langs-json",

tests/e2e/e2e.test.js

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* @file Contains end-to-end tests for the vercel preview instance.
3+
*/
4+
import { describe } from "@jest/globals";
5+
import axios from "axios";
6+
import dotenv from "dotenv";
7+
dotenv.config();
8+
9+
describe("Fetch Cards", () => {
10+
let VERCEL_PREVIEW_URL;
11+
12+
beforeAll(() => {
13+
VERCEL_PREVIEW_URL = process.env.VERCEL_PREVIEW_URL;
14+
});
15+
16+
test("retrieve stats card", async () => {
17+
expect(VERCEL_PREVIEW_URL).toBeDefined();
18+
await expect(
19+
axios.get(`${VERCEL_PREVIEW_URL}/api?username=anuraghazra`),
20+
).resolves.not.toThrow();
21+
});
22+
23+
test("retrieve language card", async () => {
24+
expect(VERCEL_PREVIEW_URL).toBeDefined();
25+
await expect(
26+
axios.get(`${VERCEL_PREVIEW_URL}/api/top-langs/?username=anuraghazra`),
27+
).resolves.not.toThrow();
28+
});
29+
30+
test("retrieve WakaTime card", async () => {
31+
expect(VERCEL_PREVIEW_URL).toBeDefined();
32+
await expect(
33+
axios.get(`${VERCEL_PREVIEW_URL}/api/wakatime?username=willianrod`),
34+
).resolves.not.toThrow();
35+
});
36+
37+
test("retrieve repo card", async () => {
38+
expect(VERCEL_PREVIEW_URL).toBeDefined();
39+
await expect(
40+
axios.get(
41+
`${VERCEL_PREVIEW_URL}/api/pin/?username=anuraghazra&repo=github-readme-stats`,
42+
),
43+
).resolves.not.toThrow();
44+
});
45+
});

0 commit comments

Comments
 (0)