Skip to content

Commit 36af403

Browse files
Rajgupta36arkid15r
andauthored
Added End-to-End Testing (#931)
* setup e2e test and added test cases for home page * rm default workflow * update workflow * cleanup * added dockerfile and update workflows * pre-commit * update paths and cleanup * update tests and workflows * update dockerfile * formatting * Update code * Update naming --------- Co-authored-by: Arkadii Yakovets <arkadii.yakovets@owasp.org>
1 parent 0b21982 commit 36af403

43 files changed

Lines changed: 457 additions & 80 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/run-ci-cd.yaml

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,8 @@ jobs:
151151
run: |
152152
docker run -e DJANGO_CONFIGURATION=Test ${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-backend:latest pytest
153153
154-
run-frontend-tests:
155-
name: Run frontend tests
154+
run-frontend-unit-tests:
155+
name: Run frontend unit tests
156156
needs:
157157
- pre-commit
158158
runs-on: ubuntu-latest
@@ -163,19 +163,45 @@ jobs:
163163
- name: Set up Docker buildx
164164
uses: docker/setup-buildx-action@v3
165165

166-
- name: Build frontend test image
166+
- name: Build frontend unit-testing image
167167
uses: docker/build-push-action@v6
168168
with:
169-
cache-from: type=registry,ref=${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend:cache
169+
cache-from: type=registry,ref=${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend-unit:cache
170170
context: frontend
171-
file: frontend/docker/Dockerfile.test
171+
file: frontend/docker/Dockerfile.unit.test
172172
load: true
173173
platforms: linux/amd64
174-
tags: ${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend:latest
174+
tags: ${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend-unit:latest
175175

176-
- name: Run frontend tests
176+
- name: Run frontend unit tests
177177
run: |
178-
docker run --env-file frontend/.env.example ${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend:latest npm run test
178+
docker run --env-file frontend/.env.example ${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend-unit:latest npm run test:unit
179+
180+
run-frontend-e2e-tests:
181+
name: Run frontend e2e tests
182+
needs:
183+
- pre-commit
184+
runs-on: ubuntu-latest
185+
steps:
186+
- name: Check out repository
187+
uses: actions/checkout@v4
188+
189+
- name: Set up Docker buildx
190+
uses: docker/setup-buildx-action@v3
191+
192+
- name: Build frontend end-to-end testing image
193+
uses: docker/build-push-action@v6
194+
with:
195+
cache-from: type=registry,ref=${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend-e2e:cache
196+
context: frontend
197+
file: frontend/docker/Dockerfile.e2e.test
198+
load: true
199+
platforms: linux/amd64
200+
tags: ${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend-e2e:latest
201+
202+
- name: Run frontend end-to-end tests
203+
run: |
204+
docker run --env-file frontend/.env.example ${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend-e2e:latest npm run test:e2e
179205
180206
build-docker-staging-images:
181207
name: Build Docker Staging Images
@@ -186,7 +212,8 @@ jobs:
186212
needs:
187213
- code-ql
188214
- run-backend-tests
189-
- run-frontend-tests
215+
- run-frontend-e2e-tests
216+
- run-frontend-unit-tests
190217
runs-on: ubuntu-latest
191218
steps:
192219
- name: Check out repository
@@ -327,7 +354,8 @@ jobs:
327354
needs:
328355
- code-ql
329356
- run-backend-tests
330-
- run-frontend-tests
357+
- run-frontend-e2e-tests
358+
- run-frontend-unit-tests
331359
runs-on: ubuntu-latest
332360
steps:
333361
- name: Check out repository

.github/workflows/update-nest-test-images.yaml

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Update Nest test images
1+
name: Update Nest Test Images
22

33
on:
44
schedule:
@@ -37,16 +37,27 @@ jobs:
3737
push: true
3838
tags: ${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-backend:latest
3939

40-
- name: Update frontend test image
40+
- name: Update frontend unit test image
4141
uses: docker/build-push-action@v6
4242
with:
43-
cache-from: type=registry,ref=${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend:cache
44-
cache-to: type=registry,ref=${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend:cache,mode=max
43+
cache-from: type=registry,ref=${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend-unit:cache
44+
cache-to: type=registry,ref=${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend-unit:cache,mode=max
4545
context: frontend
46-
file: frontend/docker/Dockerfile.test
46+
file: frontend/docker/Dockerfile.unit.test
47+
platforms: linux/amd64
48+
push: true
49+
tags: ${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend-unit:latest
50+
51+
- name: Update frontend end-to-end test image
52+
uses: docker/build-push-action@v6
53+
with:
54+
cache-from: type=registry,ref=${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend-e2e:cache
55+
cache-to: type=registry,ref=${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend-e2e:cache,mode=max
56+
context: frontend
57+
file: frontend/docker/Dockerfile.e2e.test
4758
platforms: linux/amd64
4859
push: true
49-
tags: ${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend:latest
60+
tags: ${{ env.DOCKERHUB_USERNAME }}/owasp-nest-test-frontend-e2e:latest
5061

5162
- name: Update schema test image
5263
uses: docker/build-push-action@v6

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,15 @@ venv/
1919
backend/.venv
2020
backend/staticfiles
2121
frontend/.npm
22+
frontend/blob-report/
2223
frontend/coverage
2324
frontend/dist
2425
frontend/node_modules
2526
frontend/npm-debug.log*
27+
frontend/playwright-report/
28+
frontend/playwright/.cache/
2629
frontend/pnpm-debug.log*
30+
frontend/test-results/
2731
frontend/yarn-debug.log*
2832
frontend/yarn-error.log*
2933
schema/.venv

cspell/custom-dict.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ lxml
3737
markdownit
3838
markercluster
3939
mastg
40+
mcr
4041
mern
4142
millify
4243
mpim

frontend/Makefile

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,17 @@ lint-frontend-code:
1717
shell-frontend:
1818
@CMD="/bin/sh" $(MAKE) exec-frontend-command-it
1919

20-
test-frontend:
21-
@docker build -f frontend/docker/Dockerfile.test frontend -t nest-test-frontend
22-
@docker run --env-file frontend/.env.example nest-test-frontend npm run test
20+
test-frontend: \
21+
test-frontend-e2e \
22+
test-frontend-unit
23+
24+
test-frontend-e2e:
25+
@docker build -f frontend/docker/Dockerfile.e2e.test frontend -t nest-test-frontend-e2e
26+
@docker run --env-file frontend/.env.example nest-test-frontend-e2e npm run test:e2e
27+
28+
test-frontend-unit:
29+
@docker build -f frontend/docker/Dockerfile.unit.test frontend -t nest-test-frontend-unit
30+
@docker run --env-file frontend/.env.example nest-test-frontend-unit npm run test:unit
2331

2432
update-frontend-dependencies:
2533
@CMD="npm update" $(MAKE) exec-frontend-command-it
Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
export const mockHomeData = {
2+
data: {
3+
recentProjects: [
4+
{
5+
name: 'Project 1',
6+
type: 'CODE',
7+
createdAt: null,
8+
key: 'project-1',
9+
openIssuesCount: 12,
10+
repositoriesCount: 2,
11+
__typename: 'ProjectNode',
12+
},
13+
{
14+
name: 'Project 2',
15+
type: 'DOCUMENTATION',
16+
createdAt: null,
17+
key: 'project-2',
18+
openIssuesCount: 5,
19+
repositoriesCount: 1,
20+
__typename: 'ProjectNode',
21+
},
22+
{
23+
name: 'Project 3',
24+
type: 'CODE',
25+
createdAt: null,
26+
key: 'project-3',
27+
openIssuesCount: 8,
28+
repositoriesCount: 3,
29+
__typename: 'ProjectNode',
30+
},
31+
{
32+
name: 'Project 4',
33+
type: 'DOCUMENTATION',
34+
createdAt: null,
35+
key: 'project-4',
36+
openIssuesCount: 3,
37+
repositoriesCount: 1,
38+
__typename: 'ProjectNode',
39+
},
40+
{
41+
name: 'Project 5',
42+
type: 'CODE',
43+
createdAt: null,
44+
key: 'project-5',
45+
openIssuesCount: 15,
46+
repositoriesCount: 2,
47+
__typename: 'ProjectNode',
48+
},
49+
],
50+
recentChapters: [
51+
{
52+
name: 'Chapter 1',
53+
createdAt: '2025-02-20T14:30:00+00:00',
54+
suggestedLocation: '',
55+
region: 'Region 1',
56+
key: 'chapter-1',
57+
topContributors: [],
58+
__typename: 'ChapterNode',
59+
},
60+
{
61+
name: 'Chapter 2',
62+
createdAt: '2025-02-19T09:15:00+00:00',
63+
suggestedLocation: '',
64+
region: 'Region 2',
65+
key: 'chapter-2',
66+
topContributors: [],
67+
__typename: 'ChapterNode',
68+
},
69+
{
70+
name: 'Chapter 3',
71+
createdAt: '2025-02-18T11:45:00+00:00',
72+
suggestedLocation: '',
73+
region: 'Region 3',
74+
key: 'chapter-3',
75+
topContributors: [],
76+
__typename: 'ChapterNode',
77+
},
78+
{
79+
name: 'Chapter 4',
80+
createdAt: '2025-02-17T13:20:00+00:00',
81+
suggestedLocation: '',
82+
region: 'Region 4',
83+
key: 'chapter-4',
84+
topContributors: [],
85+
__typename: 'ChapterNode',
86+
},
87+
{
88+
name: 'Chapter 5',
89+
createdAt: '2025-02-16T16:40:00+00:00',
90+
suggestedLocation: '',
91+
region: 'Region 5',
92+
key: 'chapter-5',
93+
topContributors: [
94+
{
95+
name: '',
96+
__typename: 'RepositoryContributorNode',
97+
},
98+
],
99+
__typename: 'ChapterNode',
100+
},
101+
],
102+
topContributors: [
103+
{
104+
name: 'Contributor 1',
105+
login: 'contributor1',
106+
contributionsCount: 15423,
107+
avatarUrl: 'https://avatars.githubusercontent.com/u/1?v=4',
108+
repositoryName: 'Repository 1',
109+
repositoryUrl: 'https://github.com/contributor1/repository1',
110+
__typename: 'RepositoryContributorNode',
111+
},
112+
{
113+
name: 'Contributor 2',
114+
login: 'contributor2',
115+
contributionsCount: 8956,
116+
avatarUrl: 'https://avatars.githubusercontent.com/u/2?v=4',
117+
repositoryName: 'Repository 2',
118+
repositoryUrl: 'https://github.com/contributor2/repository2',
119+
__typename: 'RepositoryContributorNode',
120+
},
121+
],
122+
recentIssues: [
123+
{
124+
commentsCount: 5,
125+
createdAt: '2025-02-23T18:45:30+00:00',
126+
number: 1,
127+
title: 'Issue 1',
128+
author: {
129+
avatarUrl: 'https://avatars.githubusercontent.com/u/1?v=4',
130+
name: 'Author 1',
131+
__typename: 'UserNode',
132+
},
133+
__typename: 'IssueNode',
134+
},
135+
{
136+
commentsCount: 2,
137+
createdAt: '2025-02-25T18:45:30+00:00',
138+
number: 1,
139+
title: 'Issue 2',
140+
author: {
141+
avatarUrl: 'https://avatars.githubusercontent.com/u/2?v=4',
142+
name: 'Author 2',
143+
__typename: 'UserNode',
144+
},
145+
__typename: 'IssueNode',
146+
},
147+
],
148+
recentReleases: [
149+
{
150+
author: null,
151+
isPreRelease: true,
152+
name: 'Release 1',
153+
publishedAt: '2025-02-22T10:15:00+00:00',
154+
tagName: 'v1',
155+
__typename: 'ReleaseNode',
156+
},
157+
{
158+
author: null,
159+
isPreRelease: false,
160+
name: 'Release 2',
161+
publishedAt: '2025-02-24T10:15:00+00:00',
162+
tagName: 'v3',
163+
__typename: 'ReleaseNode',
164+
},
165+
],
166+
statsOverview: {
167+
activeChaptersStats: 100,
168+
activeProjectsStats: 100,
169+
contributorsStats: 1000,
170+
countriesStats: 100,
171+
__typename: 'StatsNode',
172+
},
173+
},
174+
}

0 commit comments

Comments
 (0)