Skip to content

Commit 826dbfd

Browse files
authored
Web: add unit tests using Jest (#782)
1 parent e0a3d53 commit 826dbfd

11 files changed

+18974
-6331
lines changed

.github/workflows/build.yml

+64-2
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,32 @@ jobs:
135135
with:
136136
name: mwdb-web-tests-image
137137
path: mwdb-web-tests-image
138+
build_frontend_unit_test:
139+
name: Build frontend unit test image
140+
runs-on: ubuntu-latest
141+
env:
142+
DOCKER_BUILDKIT: 1
143+
steps:
144+
- name: Check out repository
145+
uses: actions/checkout@v3
146+
- name: Set up QEMU
147+
uses: docker/setup-qemu-action@v2
148+
- name: Set up Docker Buildx
149+
uses: docker/setup-buildx-action@v2
150+
- name: Build and push mwdb-web-unit-tests image
151+
uses: docker/build-push-action@v4
152+
with:
153+
file: ./deploy/docker/Dockerfile-web-unit-test
154+
tags: |
155+
certpl/mwdb-web-unit-tests:${{ github.sha }}
156+
cache-from: |
157+
type=registry,ref=certpl/mwdb-web-unit-tests:buildcache
158+
outputs: type=docker,dest=./mwdb-web-unit-tests-image
159+
- name: Upload unit test image
160+
uses: actions/upload-artifact@v3
161+
with:
162+
name: mwdb-web-unit-tests-image
163+
path: mwdb-web-unit-tests-image
138164
test_backend_e2e:
139165
needs: [build_core, build_frontend, build_backend_e2e]
140166
name: Perform backend e2e tests
@@ -211,8 +237,31 @@ jobs:
211237
with:
212238
name: mwdb-e2e-web-videos
213239
path: artifacts
240+
test_frontend_unit:
241+
needs: [ build_frontend_unit_test ]
242+
name: Perform frontend unit tests
243+
runs-on: ubuntu-latest
244+
env:
245+
DOCKER_BUILDKIT: 1
246+
steps:
247+
- name: Check out repository
248+
uses: actions/checkout@v3
249+
- name: Download all artifacts
250+
uses: actions/download-artifact@v3
251+
- name: Import images
252+
run: |
253+
docker load --input ./mwdb-web-unit-tests-image/mwdb-web-unit-tests-image
254+
docker tag certpl/mwdb-web-unit-tests:$GITHUB_SHA certpl/mwdb-web-unit-tests:latest
255+
- name: Setup configuration
256+
run: |
257+
chmod +x gen_vars.sh
258+
./gen_vars.sh test
259+
- name: Perform tests
260+
run: |
261+
docker-compose -f docker-compose-unit-test.yml up -d
262+
docker-compose -f docker-compose-unit-test.yml logs -f -t
214263
push_images:
215-
needs: [test_backend_e2e, test_frontend_e2e]
264+
needs: [test_backend_e2e, test_frontend_e2e, test_frontend_unit]
216265
name: Push images on Docker Hub
217266
runs-on: ubuntu-latest
218267
if: ${{ github.event_name == 'push' }}
@@ -266,7 +315,7 @@ jobs:
266315
type=registry,ref=certpl/mwdb-web:buildcache,mode=max
267316
push: true
268317
push_test_images:
269-
needs: [test_backend_e2e, test_frontend_e2e]
318+
needs: [test_backend_e2e, test_frontend_e2e, test_frontend_unit]
270319
name: Push test images on Docker Hub
271320
runs-on: ubuntu-latest
272321
if: ${{ github.event_name == 'push' }}
@@ -310,3 +359,16 @@ jobs:
310359
cache-to: |
311360
type=registry,ref=certpl/mwdb-web-tests:buildcache,mode=max
312361
push: true
362+
- name: Build and push mwdb-web-unit-tests image
363+
uses: docker/build-push-action@v4
364+
with:
365+
file: ./deploy/docker/Dockerfile-web-unit-test
366+
context: mwdb/web
367+
tags: |
368+
certpl/mwdb-web-unit-tests:${{ github.sha }}
369+
certpl/mwdb-web-unit-tests:master
370+
cache-from: |
371+
type=registry,ref=certpl/mwdb-web-unit-tests:buildcache
372+
cache-to: |
373+
type=registry,ref=certpl/mwdb-web-unit-tests:buildcache,mode=max
374+
push: true
+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
FROM node:16-alpine AS build
2+
3+
LABEL maintainer="[email protected]"
4+
5+
COPY ./mwdb/web/ ./
6+
RUN npm install
7+
8+
CMD ["npm", "test"]

docker-compose-unit-test.yml

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Docker Compose file for mwdb-core unit test
2+
3+
version: "3.3"
4+
services:
5+
web-unit-tests:
6+
build:
7+
context: .
8+
dockerfile: deploy/docker/Dockerfile-web-unit-test
9+
container_name: mwdb_core_unit_web_tests
10+
image: certpl/mwdb-web-unit-tests

mwdb/web/babel.config.js

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = {
2+
presets: [
3+
"@babel/preset-env",
4+
["@babel/preset-react", { runtime: "automatic" }],
5+
],
6+
};

mwdb/web/jest.config.js

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
testEnvironment: "jsdom",
3+
};

0 commit comments

Comments
 (0)