diff --git a/.github/file-filters.yml b/.github/file-filters.yml new file mode 100644 index 000000000..80b7482d9 --- /dev/null +++ b/.github/file-filters.yml @@ -0,0 +1,46 @@ +# These file filter patterns are used by the action https://github.com/dorny/paths-filter + +# more differentiated filters for admin interface, which might be used later +# admin_locales: &admin_locales +# - 'admin/src/locales/**' +# - 'admin/scripts/sort*' + +# admin_stylelinting: &admin_stylelinting +# - 'admin/{components,layouts,pages}/**/*.{scss,vue}' +# - 'admin/.stylelintrc.js' + +# admin_linting: &admin_linting +# - 'admin/.eslint*' +# - 'admin/babel.config.js' +# - 'admin/package.json' +# - 'admin/**/*.{js,vue}' +# - *admin_locales + +# admin_unit_testing: &admin_unit_testing +# - 'admin/package.json' +# - 'admin/{jest,vue}.config.js' +# - 'admin/{public,run,test}/**/*' +# - 'admin/src/!(locales)/**/*' + +# admin_docker_building: &admin_docker_building +# - 'admin/.dockerignore' +# - 'admin/Dockerfile' +# - *admin_unit_testing + +admin: &admin + - 'admin/**/*' + +dht_node: &dht_node + - 'dht-node/**/*' + +docker: &docker + - 'docker-compose.*' + +federation: &federation + - 'federation/**/*' + +frontend: &frontend + - 'frontend/**/*' + +nginx: &nginx + - 'nginx/**/*' \ No newline at end of file diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml new file mode 100644 index 000000000..d1dd2851a --- /dev/null +++ b/.github/workflows/e2e-test.yml @@ -0,0 +1,58 @@ +name: Gradido End-to-End Test CI + +on: push + +jobs: + end-to-end-tests: + name: End-to-End Tests + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Boot up test system | docker-compose mariadb + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach mariadb + + - name: Boot up test system | docker-compose database + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database + + - name: Boot up test system | docker-compose backend + run: | + cd backend + cp .env.test_e2e .env + cd .. + docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps backend + + - name: Sleep for 10 seconds + run: sleep 10s + + - name: Boot up test system | seed backend + run: | + sudo chown runner:docker -R * + cd database + yarn && yarn dev_reset + cd ../backend + yarn && yarn seed + cd .. + + - name: Boot up test system | docker-compose frontends + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps frontend admin nginx + + - name: Boot up test system | docker-compose mailserver + run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mailserver + + - name: Sleep for 15 seconds + run: sleep 15s + + - name: End-to-end tests | run tests + id: e2e-tests + run: | + cd e2e-tests/ + yarn + yarn run cypress run + - name: End-to-end tests | if tests failed, upload screenshots + if: ${{ failure() && steps.e2e-tests.conclusion == 'failure' }} + uses: actions/upload-artifact@v3 + with: + name: cypress-screenshots + path: /home/runner/work/gradido/gradido/e2e-tests/cypress/screenshots/ diff --git a/.github/workflows/test-admin-interface.yml b/.github/workflows/test-admin-interface.yml new file mode 100644 index 000000000..a163af4e9 --- /dev/null +++ b/.github/workflows/test-admin-interface.yml @@ -0,0 +1,84 @@ +name: Gradido Admin Interface Test CI + +on: push + +jobs: + # only (but most important) job from this workflow required for pull requests + # check results serve as run conditions for all other jobs here + files-changed: + name: Detect File Changes - Admin Interface + runs-on: ubuntu-latest + outputs: + admin: ${{ steps.changes.outputs.admin }} + steps: + - uses: actions/checkout@v3.3.0 + + - name: Check for admin interface file changes + uses: dorny/paths-filter@v2.11.1 + id: changes + with: + token: ${{ github.token }} + filters: .github/file-filters.yml + list-files: shell + + + build_test: + if: needs.files-changed.outputs.admin == 'true' + name: Docker Build Test - Admin Interface + needs: files-changed + runs-on: ubuntu-latest + steps: + + - name: Checkout code + uses: actions/checkout@v3 + + - name: Admin Interface | Build 'test' image + run: docker build --target test -t "gradido/admin:test" admin/ --build-arg NODE_ENV="test" + + unit_test: + if: needs.files-changed.outputs.admin == 'true' + name: Unit Tests - Admin Interface + needs: files-changed + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Admin Interface | Unit tests + run: cd admin && yarn && yarn run test + + lint: + if: needs.files-changed.outputs.admin == 'true' + name: Lint - Admin Interface + needs: files-changed + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Admin Interface | Lint + run: cd admin && yarn && yarn run lint + + stylelint: + if: needs.files-changed.outputs.admin == 'true' + name: Stylelint - Admin Interface + needs: files-changed + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Admin Interface | Stylelint + run: cd admin && yarn && yarn run stylelint + + locales: + if: needs.files-changed.outputs.admin == 'true' + name: Locales - Admin Interface + needs: files-changed + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Admin Interface | Locales + run: cd admin && yarn && yarn run locales diff --git a/.github/workflows/test-nginx.yml b/.github/workflows/test-nginx.yml new file mode 100644 index 000000000..146e7a117 --- /dev/null +++ b/.github/workflows/test-nginx.yml @@ -0,0 +1,32 @@ +name: Gradido Nginx Test CI + +on: push + +jobs: + files-changed: + name: Detect File Changes - Nginx + runs-on: ubuntu-latest + outputs: + nginx: ${{ steps.changes.outputs.nginx }} + steps: + - uses: actions/checkout@v3.3.0 + + - name: Check for nginx file changes + uses: dorny/paths-filter@v2.11.1 + id: changes + with: + token: ${{ github.token }} + filters: .github/file-filters.yml + list-files: shell + + build_test_nginx: + name: Docker Build Test - Nginx + if: needs.files-changed.outputs.nginx == 'true' + needs: files-changed + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: nginx | Build 'test' image + run: docker build -t "gradido/nginx:test" nginx/ diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a02aa4b5b..0fcedb4ce 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,57 +3,6 @@ name: gradido test CI on: push jobs: - ############################################################################## - # JOB: DOCKER BUILD TEST FRONTEND ############################################ - ############################################################################## - build_test_frontend: - name: Docker Build Test - Frontend - runs-on: ubuntu-latest - #needs: [nothing] - steps: - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v3 - ########################################################################## - # FRONTEND ############################################################### - ########################################################################## - - name: Frontend | Build `test` image - run: | - docker build --target test -t "gradido/frontend:test" frontend/ - docker save "gradido/frontend:test" > /tmp/frontend.tar - - name: Upload Artifact - uses: actions/upload-artifact@v3 - with: - name: docker-frontend-test - path: /tmp/frontend.tar - - ############################################################################## - # JOB: DOCKER BUILD TEST ADMIN INTERFACE ##################################### - ############################################################################## - build_test_admin: - name: Docker Build Test - Admin Interface - runs-on: ubuntu-latest - steps: - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v3 - ########################################################################## - # ADMIN INTERFACE ######################################################## - ########################################################################## - - name: Admin | Build `test` image - run: | - docker build --target test -t "gradido/admin:test" admin/ --build-arg NODE_ENV="test" - docker save "gradido/admin:test" > /tmp/admin.tar - - name: Upload Artifact - uses: actions/upload-artifact@v3 - with: - name: docker-admin-test - path: /tmp/admin.tar - ############################################################################## # JOB: DOCKER BUILD TEST BACKEND ############################################# ############################################################################## @@ -132,139 +81,6 @@ jobs: name: docker-mariadb-test path: /tmp/mariadb.tar - ############################################################################## - # JOB: DOCKER BUILD TEST NGINX ############################################### - ############################################################################## - build_test_nginx: - name: Docker Build Test - Nginx - runs-on: ubuntu-latest - steps: - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v3 - ########################################################################## - # BUILD NGINX DOCKER IMAGE ############################################### - ########################################################################## - - name: nginx | Build `test` image - run: | - docker build -t "gradido/nginx:test" nginx/ - docker save "gradido/nginx:test" > /tmp/nginx.tar - - name: Upload Artifact - uses: actions/upload-artifact@v3 - with: - name: docker-nginx-test - path: /tmp/nginx.tar - - ############################################################################## - # JOB: LOCALES FRONTEND ###################################################### - ############################################################################## - locales_frontend: - name: Locales - Frontend - runs-on: ubuntu-latest - steps: - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v3 - ########################################################################## - # LOCALES FRONTEND ####################################################### - ########################################################################## - - name: Frontend | Locales - run: cd frontend && yarn && yarn run locales - - ############################################################################## - # JOB: LINT FRONTEND ######################################################### - ############################################################################## - lint_frontend: - name: Lint - Frontend - runs-on: ubuntu-latest - steps: - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v3 - ########################################################################## - # LINT FRONTEND ########################################################## - ########################################################################## - - name: Frontend | Lint - run: cd frontend && yarn && yarn run lint - - ############################################################################## - # JOB: STYLELINT FRONTEND #################################################### - ############################################################################## - stylelint_frontend: - name: Stylelint - Frontend - runs-on: ubuntu-latest - steps: - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v3 - ########################################################################## - # STYLELINT FRONTEND ##################################################### - ########################################################################## - - name: Frontend | Stylelint - run: cd frontend && yarn && yarn run stylelint - - ############################################################################## - # JOB: LINT ADMIN INTERFACE ################################################## - ############################################################################## - lint_admin: - name: Lint - Admin Interface - runs-on: ubuntu-latest - steps: - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v3 - ########################################################################## - # LINT ADMIN INTERFACE ################################################### - ########################################################################## - - name: Admin Interface | Lint - run: cd admin && yarn && yarn run lint - - ############################################################################## - # JOB: STYLELINT ADMIN INTERFACE ############################################# - ############################################################################## - stylelint_admin: - name: Stylelint - Admin Interface - runs-on: ubuntu-latest - steps: - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v3 - ########################################################################## - # STYLELINT ADMIN INTERFACE ############################################## - ########################################################################## - - name: Admin Interface | Stylelint - run: cd admin && yarn && yarn run stylelint - - ############################################################################## - # JOB: LOCALES ADMIN ######################################################### - ############################################################################## - locales_admin: - name: Locales - Admin Interface - runs-on: ubuntu-latest - steps: - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v3 - ########################################################################## - # LOCALES FRONTEND ####################################################### - ########################################################################## - - name: Admin | Locales - run: cd admin && yarn && yarn run locales - ############################################################################## # JOB: LINT BACKEND ########################################################## ############################################################################## @@ -281,7 +97,7 @@ jobs: # LINT BACKEND ########################################################### ########################################################################## - name: backend | Lint - run: cd backend && yarn && yarn run lint + run: cd database && yarn && cd ../backend && yarn && yarn run lint ############################################################################## # JOB: LOCALES BACKEND ####################################################### @@ -319,68 +135,6 @@ jobs: - name: Database | Lint run: cd database && yarn && yarn run lint - ############################################################################## - # JOB: UNIT TEST FRONTEND ################################################### - ############################################################################## - unit_test_frontend: - name: Unit tests - Frontend - runs-on: ubuntu-latest - steps: - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v3 - ########################################################################## - # UNIT TESTS FRONTEND #################################################### - ########################################################################## - - name: Frontend | Unit tests - run: | - cd frontend && yarn && yarn run test - cp -r ./coverage ../ - ########################################################################## - # COVERAGE CHECK FRONTEND ################################################ - ########################################################################## - - name: frontend | Coverage check - uses: webcraftmedia/coverage-check-action@master - with: - report_name: Coverage Frontend - type: lcov - result_path: ./frontend/coverage/lcov.info - min_coverage: 95 - token: ${{ github.token }} - - ############################################################################## - # JOB: UNIT TEST ADMIN INTERFACE ############################################# - ############################################################################## - unit_test_admin: - name: Unit tests - Admin Interface - runs-on: ubuntu-latest - steps: - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v3 - ########################################################################## - # UNIT TESTS ADMIN INTERFACE ############################################# - ########################################################################## - - name: Admin Interface | Unit tests - run: | - cd admin && yarn && yarn run test - cp -r ./coverage ../ - ########################################################################## - # COVERAGE CHECK ADMIN INTERFACE ######################################### - ########################################################################## - - name: Admin Interface | Coverage check - uses: webcraftmedia/coverage-check-action@master - with: - report_name: Coverage Admin Interface - type: lcov - result_path: ./admin/coverage/lcov.info - min_coverage: 97 - token: ${{ github.token }} - ############################################################################## # JOB: UNIT TEST BACKEND #################################################### ############################################################################## @@ -415,20 +169,7 @@ jobs: - name: backend | docker-compose database run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database - name: backend Unit tests | test - run: | - cd database && yarn && yarn build && cd ../backend && yarn && yarn test - cp -r ./coverage ../ - ########################################################################## - # COVERAGE CHECK BACKEND ################################################# - ########################################################################## - - name: backend | Coverage check - uses: webcraftmedia/coverage-check-action@master - with: - report_name: Coverage Backend - type: lcov - result_path: ./backend/coverage/lcov.info - min_coverage: 81 - token: ${{ github.token }} + run: cd database && yarn && yarn build && cd ../backend && yarn && yarn test ########################################################################## # DATABASE MIGRATION TEST UP + RESET ##################################### @@ -452,108 +193,3 @@ jobs: run: docker-compose -f docker-compose.yml run -T database yarn up - name: database | reset run: docker-compose -f docker-compose.yml run -T database yarn reset - - ############################################################################## - # JOB: END-TO-END TESTS ##################################################### - ############################################################################## - end-to-end-tests: - name: End-to-End Tests - runs-on: ubuntu-latest - needs: [build_test_mariadb, build_test_database_up, build_test_admin, build_test_frontend, build_test_nginx] - steps: - ########################################################################## - # CHECKOUT CODE ########################################################## - ########################################################################## - - name: Checkout code - uses: actions/checkout@v3 - ########################################################################## - # DOWNLOAD DOCKER IMAGES ################################################# - ########################################################################## - - name: Download Docker Image (Mariadb) - uses: actions/download-artifact@v3 - with: - name: docker-mariadb-test - path: /tmp - - name: Load Docker Image (Mariadb) - run: docker load < /tmp/mariadb.tar - - name: Download Docker Image (Database Up) - uses: actions/download-artifact@v3 - with: - name: docker-database-test_up - path: /tmp - - name: Load Docker Image (Database Up) - run: docker load < /tmp/database_up.tar - - name: Download Docker Image (Frontend) - uses: actions/download-artifact@v3 - with: - name: docker-frontend-test - path: /tmp - - name: Load Docker Image (Frontend) - run: docker load < /tmp/frontend.tar - - name: Download Docker Image (Admin Interface) - uses: actions/download-artifact@v3 - with: - name: docker-admin-test - path: /tmp - - name: Load Docker Image (Admin Interface) - run: docker load < /tmp/admin.tar - - name: Download Docker Image (Nginx) - uses: actions/download-artifact@v3 - with: - name: docker-nginx-test - path: /tmp - - name: Load Docker Image (Nginx) - run: docker load < /tmp/nginx.tar - - ########################################################################## - # BOOT UP THE TEST SYSTEM ################################################ - ########################################################################## - - name: Boot up test system | docker-compose mariadb - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach mariadb - - - name: Boot up test system | docker-compose database - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database - - - name: Boot up test system | docker-compose backend - run: | - cd backend - cp .env.test_e2e .env - cd .. - docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps backend - - - name: Sleep for 10 seconds - run: sleep 10s - - - name: Boot up test system | seed backend - run: | - sudo chown runner:docker -R * - cd database - yarn && yarn dev_reset - cd ../backend - yarn && yarn seed - cd .. - - - name: Boot up test system | docker-compose frontends - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps frontend admin nginx - - - name: Boot up test system | docker-compose mailserver - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mailserver - - - name: Sleep for 15 seconds - run: sleep 15s - - ########################################################################## - # END-TO-END TESTS ####################################################### - ########################################################################## - - name: End-to-end tests | run tests - id: e2e-tests - run: | - cd e2e-tests/ - yarn - yarn run cypress run --spec cypress/e2e/User.Authentication.feature,cypress/e2e/User.Authentication.ResetPassword.feature,cypress/e2e/User.Registration.feature - - name: End-to-end tests | if tests failed, upload screenshots - if: ${{ failure() && steps.e2e-tests.conclusion == 'failure' }} - uses: actions/upload-artifact@v3 - with: - name: cypress-screenshots - path: /home/runner/work/gradido/gradido/e2e-tests/cypress/screenshots/ diff --git a/.github/workflows/test_dht-node.yml b/.github/workflows/test_dht-node.yml index 4ac475351..a57f09399 100644 --- a/.github/workflows/test_dht-node.yml +++ b/.github/workflows/test_dht-node.yml @@ -3,17 +3,38 @@ name: Gradido DHT Node Test CI on: push jobs: + # only (but most important) job from this workflow required for pull requests + # check results serve as run conditions for all other jobs here + files-changed: + name: Detect File Changes - DHT Node + runs-on: ubuntu-latest + outputs: + dht_node: ${{ steps.changes.outputs.dht_node }} + docker: ${{ steps.changes.outputs.docker }} + steps: + - uses: actions/checkout@v3.3.0 + + - name: Check for frontend file changes + uses: dorny/paths-filter@v2.11.1 + id: changes + with: + token: ${{ github.token }} + filters: .github/file-filters.yml + list-files: shell + ############################################################################## # JOB: DOCKER BUILD TEST ##################################################### ############################################################################## build: name: Docker Build Test - DHT Node + if: needs.files-changed.outputs.dht_node == 'true' || needs.files-changed.outputs.docker == 'true' + needs: files-changed runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - - name: Build `test` image + - name: Build 'test' image run: | docker build --target test -t "gradido/dht-node:test" -f dht-node/Dockerfile . docker save "gradido/dht-node:test" > /tmp/dht-node.tar @@ -29,30 +50,24 @@ jobs: ############################################################################## lint: name: Lint - DHT Node + if: needs.files-changed.outputs.dht_node == 'true' + needs: files-changed runs-on: ubuntu-latest - needs: [build] steps: - name: Checkout code uses: actions/checkout@v3 - - - name: Download Docker Image - uses: actions/download-artifact@v3 - with: - name: docker-dht-node-test - path: /tmp - - name: Load Docker Image - run: docker load < /tmp/dht-node.tar - name: Lint - run: docker run --rm gradido/dht-node:test yarn run lint + run: cd dht-node && yarn && yarn run lint ############################################################################## # JOB: UNIT TEST ############################################################# ############################################################################## unit_test: name: Unit Tests - DHT Node + if: needs.files-changed.outputs.dht_node == 'true' || needs.files-changed.outputs.docker == 'true' + needs: [files-changed, build] runs-on: ubuntu-latest - needs: [build] steps: - name: Checkout code uses: actions/checkout@v3 @@ -83,16 +98,4 @@ jobs: #- name: Unit tests # run: cd database && yarn && yarn build && cd ../dht-node && yarn && yarn test - name: Unit tests - run: | - docker run --env NODE_ENV=test --env DB_HOST=mariadb --network gradido_internal-net -v ~/coverage:/app/coverage --rm gradido/dht-node:test yarn run test - cp -r ~/coverage ./coverage - - - name: Coverage check - uses: webcraftmedia/coverage-check-action@master - with: - report_name: Coverage DHT Node - type: lcov - #result_path: ./dht-node/coverage/lcov.info - result_path: ./coverage/lcov.info - min_coverage: 79 - token: ${{ github.token }} + run: docker run --env NODE_ENV=test --env DB_HOST=mariadb --network gradido_internal-net --rm gradido/dht-node:test yarn run test diff --git a/.github/workflows/test_federation.yml b/.github/workflows/test_federation.yml index ab943eedd..fc29a1bf8 100644 --- a/.github/workflows/test_federation.yml +++ b/.github/workflows/test_federation.yml @@ -3,11 +3,32 @@ name: Gradido Federation Test CI on: push jobs: + # only (but most important) job from this workflow required for pull requests + # check results serve as run conditions for all other jobs here + files-changed: + name: Detect File Changes - Federation + runs-on: ubuntu-latest + outputs: + docker: ${{ steps.changes.outputs.docker }} + federation: ${{ steps.changes.outputs.federation }} + steps: + - uses: actions/checkout@v3.3.0 + + - name: Check for frontend file changes + uses: dorny/paths-filter@v2.11.1 + id: changes + with: + token: ${{ github.token }} + filters: .github/file-filters.yml + list-files: shell + ############################################################################## # JOB: DOCKER BUILD TEST ##################################################### ############################################################################## build: name: Docker Build Test - Federation + if: needs.files-changed.outputs.docker == 'true' || needs.files-changed.outputs.federation == 'true' + needs: files-changed runs-on: ubuntu-latest steps: - name: Checkout code @@ -29,30 +50,24 @@ jobs: ############################################################################## lint: name: Lint - Federation + if: needs.files-changed.outputs.federation == 'true' + needs: files-changed runs-on: ubuntu-latest - needs: [build] steps: - name: Checkout code uses: actions/checkout@v3 - - - name: Download Docker Image - uses: actions/download-artifact@v3 - with: - name: docker-federation-test - path: /tmp - - name: Load Docker Image - run: docker load < /tmp/federation.tar - name: Lint - run: docker run --rm gradido/federation:test yarn run lint + run: cd federation && yarn && yarn run lint ############################################################################## # JOB: UNIT TEST ############################################################# ############################################################################## unit_test: name: Unit Tests - Federation + if: needs.files-changed.outputs.docker == 'true' || needs.files-changed.outputs.federation == 'true' + needs: [files-changed, build] runs-on: ubuntu-latest - needs: [build] steps: - name: Checkout code uses: actions/checkout@v3 @@ -84,15 +99,4 @@ jobs: # run: cd database && yarn && yarn build && cd ../dht-node && yarn && yarn test - name: Unit tests run: | - docker run --env NODE_ENV=test --env DB_HOST=mariadb --network gradido_internal-net -v ~/coverage:/app/coverage --rm gradido/federation:test yarn run test - cp -r ~/coverage ./coverage - - - name: Coverage check - uses: webcraftmedia/coverage-check-action@master - with: - report_name: Coverage Federation - type: lcov - #result_path: ./federation/coverage/lcov.info - result_path: ./coverage/lcov.info - min_coverage: 72 - token: ${{ github.token }} + docker run --env NODE_ENV=test --env DB_HOST=mariadb --network gradido_internal-net --rm gradido/federation:test yarn run test diff --git a/.github/workflows/test_frontend.yml b/.github/workflows/test_frontend.yml new file mode 100644 index 000000000..6dd527079 --- /dev/null +++ b/.github/workflows/test_frontend.yml @@ -0,0 +1,84 @@ +name: Gradido Frontend Test CI + +on: push + +jobs: + # only (but most important) job from this workflow required for pull requests + # check results serve as run conditions for all other jobs here + files-changed: + name: Detect File Changes - Frontend + runs-on: ubuntu-latest + outputs: + frontend: ${{ steps.changes.outputs.frontend }} + steps: + - uses: actions/checkout@v3.3.0 + + - name: Check for frontend file changes + uses: dorny/paths-filter@v2.11.1 + id: changes + with: + token: ${{ github.token }} + filters: .github/file-filters.yml + list-files: shell + + + build_test: + if: needs.files-changed.outputs.frontend == 'true' + name: Docker Build Test - Frontend + needs: files-changed + runs-on: ubuntu-latest + steps: + + - name: Checkout code + uses: actions/checkout@v3 + + - name: Frontend | Build 'test' image + run: docker build --target test -t "gradido/frontend:test" frontend/ --build-arg NODE_ENV="test" + + unit_test: + if: needs.files-changed.outputs.frontend == 'true' + name: Unit Tests - Frontend + needs: files-changed + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Frontend | Unit tests + run: cd frontend && yarn && yarn run test + + lint: + if: needs.files-changed.outputs.frontend == 'true' + name: Lint - Frontend + needs: files-changed + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Frontend | Lint + run: cd frontend && yarn && yarn run lint + + stylelint: + if: needs.files-changed.outputs.frontend == 'true' + name: Stylelint - Frontend + needs: files-changed + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Frontend | Stylelint + run: cd frontend && yarn && yarn run stylelint + + locales: + if: needs.files-changed.outputs.frontend == 'true' + name: Locales - Frontend + needs: files-changed + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Frontend | Locales + run: cd frontend && yarn && yarn run locales diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bfc66e39..8dc91f2fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,76 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [1.19.1](https://github.com/gradido/gradido/compare/1.19.0...1.19.1) + +- fix(frontend): admin question clickable [`#2810`](https://github.com/gradido/gradido/pull/2810) +- refactor(frontend): change b-img to b-icon send [`#2809`](https://github.com/gradido/gradido/pull/2809) +- fix(admin): update openCreation in case of tab open. [`#2806`](https://github.com/gradido/gradido/pull/2806) +- fix(admin): english language for contributions in admin [`#2804`](https://github.com/gradido/gradido/pull/2804) +- refactor(admin): event buttons for myself turned off in open contributions [`#2760`](https://github.com/gradido/gradido/pull/2760) +- fix(admin): contribution page [`#2794`](https://github.com/gradido/gradido/pull/2794) +- fix(frontend): info.svg [`#2798`](https://github.com/gradido/gradido/pull/2798) +- fix(backend): add relation messages to database query [`#2795`](https://github.com/gradido/gradido/pull/2795) +- fix(admin): header and menu [`#2793`](https://github.com/gradido/gradido/pull/2793) +- fix(frontend): send gdd - change first submit button text to 'Check Now' [`#2774`](https://github.com/gradido/gradido/pull/2774) +- refactor(frontend): creations generated by link NL [`#2771`](https://github.com/gradido/gradido/pull/2771) +- refactor(frontend): creations generated by link (FR) + (NL) [`#2770`](https://github.com/gradido/gradido/pull/2770) +- refactor(frontend): update German locales [`#2765`](https://github.com/gradido/gradido/pull/2765) +- refactor(backend): use find contributions helper for list contributions [`#2762`](https://github.com/gradido/gradido/pull/2762) + +#### [1.19.0](https://github.com/gradido/gradido/compare/1.18.2...1.19.0) + +> 7 March 2023 + +- chore(release): version 1.19.0 [`#2786`](https://github.com/gradido/gradido/pull/2786) +- fix(frontend): change contribution design [`#2731`](https://github.com/gradido/gradido/pull/2731) +- refactor(frontend): commnity navbar- & unauthenticated b-gradido styles [`#2732`](https://github.com/gradido/gradido/pull/2732) +- fix(database): change downwards migration to delete entries with last_announced_at IS NULL [`#2767`](https://github.com/gradido/gradido/pull/2767) +- feat(admin): deleted contributions visible [`#2759`](https://github.com/gradido/gradido/pull/2759) +- feat(other): e2e test user story user registration [`#2753`](https://github.com/gradido/gradido/pull/2753) +- refactor(frontend): style and design changes to a contribution [`#2648`](https://github.com/gradido/gradido/pull/2648) +- test(backend): add tests that ``sendContributionDeleted`` and ``sendContributionDenied`` are called [`#2740`](https://github.com/gradido/gradido/pull/2740) +- fix(backend): set email tls true in test [`#2763`](https://github.com/gradido/gradido/pull/2763) +- refactor(frontend): add visible event an answer question [`#2750`](https://github.com/gradido/gradido/pull/2750) +- refactor(frontend): style sidebar, add icons [`#2737`](https://github.com/gradido/gradido/pull/2737) +- fix(backend): possible flaky test [`#2761`](https://github.com/gradido/gradido/pull/2761) +- fix(backend): emails – adjust namings of menus to new design [`#2756`](https://github.com/gradido/gradido/pull/2756) +- ci(other): rename dht node and federation workflow jobs for better branch protection maintenance [`#2743`](https://github.com/gradido/gradido/pull/2743) +- refactor(backend): combine logic for `listTransactionLinks` & `listTransactionLinksAdmin` [`#2706`](https://github.com/gradido/gradido/pull/2706) +- refactor(backend): remove admin create contributions [`#2724`](https://github.com/gradido/gradido/pull/2724) +- refactor(frontend): remove .vue as imports [`#2725`](https://github.com/gradido/gradido/pull/2725) +- feat(federation): add dht-node to deployment scripts [`#2729`](https://github.com/gradido/gradido/pull/2729) +- fix(frontend): change fetchPolicy, add scripts.update [`#2718`](https://github.com/gradido/gradido/pull/2718) +- refactor(backend): list unconfirmed contribution to admin list all contribution [`#2666`](https://github.com/gradido/gradido/pull/2666) +- refactor(frontend): community routes [`#2721`](https://github.com/gradido/gradido/pull/2721) +- test(backend): authentication tests for TransactionLinkResolver [`#2705`](https://github.com/gradido/gradido/pull/2705) +- refactor(backend): use LogError on errors [`#2679`](https://github.com/gradido/gradido/pull/2679) +- refactor(backend): use LogError on encryptorUtils [`#2678`](https://github.com/gradido/gradido/pull/2678) +- refactor(backend): use LogError on creations [`#2677`](https://github.com/gradido/gradido/pull/2677) +- refactor(other): decrease docker build dependencies in test workflow [`#2719`](https://github.com/gradido/gradido/pull/2719) +- refactor(backend): unit test for the method denyContribution [`#2639`](https://github.com/gradido/gradido/pull/2639) +- refactor(frontend): logo inserted with better quality. [`#2646`](https://github.com/gradido/gradido/pull/2646) +- feat(federation): harmonize and sync modules and data of federation [`#2665`](https://github.com/gradido/gradido/pull/2665) +- feat(federation): add docker and github-workflow files [`#2680`](https://github.com/gradido/gradido/pull/2680) +- feat(other): e2e test user authentication reset password [`#2644`](https://github.com/gradido/gradido/pull/2644) +- refactor(admin): add tabs for all statusus on contributions [`#2623`](https://github.com/gradido/gradido/pull/2623) +- feat(federation): implement a graphql client to request getpublickey [`#2511`](https://github.com/gradido/gradido/pull/2511) +- refactor(frontend): style refactor mobil auth area [`#2643`](https://github.com/gradido/gradido/pull/2643) +- refactor(backend): use LogError on TransactionResolver [`#2676`](https://github.com/gradido/gradido/pull/2676) +- refactor(backend): event protocol rework [`#2691`](https://github.com/gradido/gradido/pull/2691) +- refactor(backend): use LogError on TransactionLinkResolver [`#2673`](https://github.com/gradido/gradido/pull/2673) +- fix(frontend): simple disabled function on submit send [`#2647`](https://github.com/gradido/gradido/pull/2647) +- refactor(frontend): missing message on old transactions [`#2660`](https://github.com/gradido/gradido/pull/2660) +- refactor(admin): remove overview and multi creation menu entry [`#2661`](https://github.com/gradido/gradido/pull/2661) +- feat(other): add locales check to backend and integrate it to test workflow [`#2693`](https://github.com/gradido/gradido/pull/2693) +- refactor(other): add linting rules like in backend modul [`#2695`](https://github.com/gradido/gradido/pull/2695) +- refactor(backend): use LogError on contributionResolver [`#2669`](https://github.com/gradido/gradido/pull/2669) + #### [1.18.2](https://github.com/gradido/gradido/compare/1.18.1...1.18.2) +> 10 February 2023 + +- chore(release): version 1.18.2 [`#2700`](https://github.com/gradido/gradido/pull/2700) - fix(admin): deny contribution button to left [`#2699`](https://github.com/gradido/gradido/pull/2699) #### [1.18.1](https://github.com/gradido/gradido/compare/1.18.0...1.18.1) diff --git a/README.md b/README.md index 3d086018e..87b4f44e5 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,11 @@ git clone git@github.com:gradido/gradido.git git submodule update --recursive --init ``` -### 2. Run docker-compose +### 2. Install modules + +You can go in each under folder (admin, frontend, database, backend, ...) and call ``yarn`` in each folder or you can call ``yarn installAll``. + +### 3. Run docker-compose Run docker-compose to bring up the development environment diff --git a/admin/jest.config.js b/admin/jest.config.js index 9233dd2e7..b6ec1dc80 100644 --- a/admin/jest.config.js +++ b/admin/jest.config.js @@ -1,11 +1,17 @@ module.exports = { verbose: true, + collectCoverage: true, collectCoverageFrom: [ 'src/**/*.{js,vue}', '!**/node_modules/**', '!src/assets/**', '!**/?(*.)+(spec|test).js?(x)', ], + coverageThreshold: { + global: { + lines: 97, + }, + }, moduleFileExtensions: [ 'js', // 'jsx', diff --git a/admin/package.json b/admin/package.json index 941a9bf69..3406c326a 100644 --- a/admin/package.json +++ b/admin/package.json @@ -3,7 +3,7 @@ "description": "Administraion Interface for Gradido", "main": "index.js", "author": "Moriz Wahl", - "version": "1.18.2", + "version": "1.19.1", "license": "Apache-2.0", "private": false, "scripts": { @@ -14,7 +14,7 @@ "analyse-bundle": "yarn build && webpack-bundle-analyzer dist/webpack.stats.json", "lint": "eslint --max-warnings=0 --ext .js,.vue,.json .", "stylelint": "stylelint --max-warnings=0 '**/*.{scss,vue}'", - "test": "cross-env TZ=UTC jest --coverage", + "test": "cross-env TZ=UTC jest", "locales": "scripts/sort.sh" }, "dependencies": { diff --git a/admin/src/components/ContributionMessages/ContributionMessagesList.spec.js b/admin/src/components/ContributionMessages/ContributionMessagesList.spec.js index 0092751cc..f0b6ea821 100644 --- a/admin/src/components/ContributionMessages/ContributionMessagesList.spec.js +++ b/admin/src/components/ContributionMessages/ContributionMessagesList.spec.js @@ -10,6 +10,7 @@ describe('ContributionMessagesList', () => { const propsData = { contributionId: 42, + contributionState: 'PENDING', } const mocks = { diff --git a/admin/src/components/ContributionMessages/ContributionMessagesList.vue b/admin/src/components/ContributionMessages/ContributionMessagesList.vue index 636627385..fab6b5e4a 100644 --- a/admin/src/components/ContributionMessages/ContributionMessagesList.vue +++ b/admin/src/components/ContributionMessages/ContributionMessagesList.vue @@ -1,17 +1,18 @@