Skip to content

Commit b845522

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 b845522

File tree

5 files changed

+80
-1
lines changed

5 files changed

+80
-1
lines changed

Diff for: .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 }}

Diff for: 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
};

Diff for: 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: "node",
5+
coverageProvider: "v8",
6+
testMatch: ["<rootDir>/tests/e2e/**/*.test.js"],
7+
};

Diff for: package.json

+2-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",
@@ -17,7 +18,7 @@
1718
"author": "Anurag Hazra",
1819
"license": "MIT",
1920
"devDependencies": {
20-
"@actions/core": "^1.2.4",
21+
"@actions/core": "^1.9.1",
2122
"@actions/github": "^4.0.0",
2223
"@testing-library/dom": "^8.17.1",
2324
"@testing-library/jest-dom": "^5.16.5",

Diff for: 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=willianrod`),
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=willianrod`),
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)