diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8c049cbf..f7996a47 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -80,7 +80,7 @@ jobs: strategy: fail-fast: false matrix: - specs: ['actions_tasks', 'actions_tasks2', 'actions_tasks3', 'actions_objects', 'actions_objects2', 'actions_users', 'actions_projects', 'canvas3d_functionality', 'issues_prs', 'issues_prs2'] + specs: ['actions_tasks', 'actions_tasks2', 'actions_tasks3', 'actions_objects', 'actions_objects2', 'actions_users', 'actions_projects_models', 'canvas3d_functionality', 'issues_prs', 'issues_prs2'] steps: - uses: actions/checkout@v2 - name: Getting SHA from the default branch @@ -151,7 +151,7 @@ jobs: run: | npm ci npm run coverage - docker-compose -f docker-compose.yml -f docker-compose.dev.yml build cvat_ui + docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f components/serverless/docker-compose.serverless.yml build cvat_ui - name: Running e2e tests env: DJANGO_SU_NAME: 'admin' @@ -159,7 +159,7 @@ jobs: DJANGO_SU_PASSWORD: '12qwaszx' API_ABOUT_PAGE: "localhost:8080/api/v1/server/about" run: | - docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d + docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f components/serverless/docker-compose.serverless.yml up -d /bin/bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' ${API_ABOUT_PAGE})" != "401" ]]; do sleep 5; done' docker exec -i cvat /bin/bash -c "echo \"from django.contrib.auth.models import User; User.objects.create_superuser('${DJANGO_SU_NAME}', '${DJANGO_SU_EMAIL}', '${DJANGO_SU_PASSWORD}')\" | python3 ~/manage.py shell" docker exec -i cvat /bin/bash -c "echo \"from django.contrib.auth.models import User; User.objects.create_superuser('${DJANGO_SU_NAME}', '${DJANGO_SU_EMAIL}', '${DJANGO_SU_PASSWORD}')\" | python3 ~/manage.py shell" cd ./tests @@ -168,14 +168,14 @@ jobs: if [[ ${{ matrix.specs }} != 'canvas3d_functionality' ]]; then npx cypress run --headless --browser chrome --spec 'cypress/integration/${{ matrix.specs }}/**/*.js' else - npx cypress run --browser chrome --spec 'cypress/integration/${{ matrix.specs }}/**/*.js' + npx cypress run --browser chrome --config-file cypress_canvas3d.json --spec 'cypress/integration/${{ matrix.specs }}/**/*.js' fi mv ./.nyc_output/out.json ./.nyc_output/out_${{ matrix.specs }}.json else if [[ ${{ matrix.specs }} != 'canvas3d_functionality' ]]; then npx cypress run --headless --browser chrome --env coverage=false --spec 'cypress/integration/${{ matrix.specs }}/**/*.js' else - npx cypress run --browser chrome --env coverage=false --spec 'cypress/integration/${{ matrix.specs }}/**/*.js' + npx cypress run --browser chrome --env coverage=false --config-file cypress_canvas3d.json --spec 'cypress/integration/${{ matrix.specs }}/**/*.js' fi fi - name: Creating a log file from "cvat" container logs diff --git a/.github/workflows/publish_docker_images.yml b/.github/workflows/publish_docker_images.yml index 4c7353ee..0cf349d4 100644 --- a/.github/workflows/publish_docker_images.yml +++ b/.github/workflows/publish_docker_images.yml @@ -4,36 +4,40 @@ on: types: [published] jobs: - build_and_push_to_registry: + Unit_testing: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: 12 - - - name: Build images - run: | - CLAM_AV=yes INSTALL_SOURCES=yes docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.ci.yml build - - name: Run unit tests env: HOST_COVERAGE_DATA_DIR: ${{ github.workspace }} CONTAINER_COVERAGE_DATA_DIR: '/coverage_data' - DJANGO_SU_NAME: 'admin' - DJANGO_SU_EMAIL: 'admin@localhost.company' - DJANGO_SU_PASSWORD: '12qwaszx' run: | docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.ci.yml run cvat_ci /bin/bash -c 'coverage run -a manage.py test cvat/apps utils/cli' docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.ci.yml run cvat_ci /bin/bash -c 'cd cvat-data && npm ci && cd ../cvat-core && npm ci && npm run test' - docker-compose up -d - docker exec -i cvat /bin/bash -c "echo \"from django.contrib.auth.models import User; User.objects.create_superuser('${DJANGO_SU_NAME}', '${DJANGO_SU_EMAIL}', '${DJANGO_SU_PASSWORD}')\" | python3 ~/manage.py shell" + E2E_testing: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: 12 - name: Run end-to-end tests + env: + DJANGO_SU_NAME: 'admin' + DJANGO_SU_EMAIL: 'admin@localhost.company' + DJANGO_SU_PASSWORD: '12qwaszx' + API_ABOUT_PAGE: "localhost:8080/api/v1/server/about" run: | + docker-compose -f docker-compose.yml -f docker-compose.dev.yml build + docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f components/serverless/docker-compose.serverless.yml up -d + /bin/bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' ${API_ABOUT_PAGE})" != "401" ]]; do sleep 5; done' + docker exec -i cvat /bin/bash -c "echo \"from django.contrib.auth.models import User; User.objects.create_superuser('${DJANGO_SU_NAME}', '${DJANGO_SU_EMAIL}', '${DJANGO_SU_PASSWORD}')\" | python3 ~/manage.py shell" cd ./tests npm ci npm run cypress:run:chrome + npm run cypress:run:chrome:canvas3d - name: Uploading cypress screenshots as an artifact if: failure() uses: actions/upload-artifact@v2 @@ -41,6 +45,14 @@ jobs: name: cypress_screenshots path: ${{ github.workspace }}/tests/cypress/screenshots + Push_to_registry: + runs-on: ubuntu-latest + needs: [Unit_testing, E2E_testing] + steps: + - uses: actions/checkout@v2 + - name: Build images + run: | + CLAM_AV=yes INSTALL_SOURCES=yes docker-compose -f docker-compose.yml -f docker-compose.dev.yml build - name: Login to Docker Hub uses: docker/login-action@v1 with: diff --git a/.github/workflows/schedule.yml b/.github/workflows/schedule.yml index 90f53049..e7d23696 100644 --- a/.github/workflows/schedule.yml +++ b/.github/workflows/schedule.yml @@ -18,7 +18,7 @@ jobs: DJANGO_SU_PASSWORD: "12qwaszx" API_ABOUT_PAGE: "localhost:8080/api/v1/server/about" run: | - docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f ./tests/docker-compose.email.yml up -d --build + docker-compose -f docker-compose.yml -f docker-compose.dev.yml -f ./tests/docker-compose.email.yml -f components/serverless/docker-compose.serverless.yml up -d --build /bin/bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' ${API_ABOUT_PAGE})" != "401" ]]; do sleep 5; done' docker exec -i cvat /bin/bash -c "echo \"from django.contrib.auth.models import User; User.objects.create_superuser('${DJANGO_SU_NAME}', '${DJANGO_SU_EMAIL}', '${DJANGO_SU_PASSWORD}')\" | python3 ~/manage.py shell" - name: End-to-end testing diff --git a/tests/cypress.json b/tests/cypress.json index 1d4be56d..41fb875c 100644 --- a/tests/cypress.json +++ b/tests/cypress.json @@ -20,8 +20,7 @@ "issues_prs/**/*.js", "issues_prs2/**/*.js", "actions_users/**/*.js", - "actions_projects/**/*.js", - "canvas3d_functionality/*.js", + "actions_projects_models/**/*.js", "remove_users_tasks_projects.js" ] } diff --git a/tests/cypress/integration/actions_projects/case_57_project_label_deleting_feature.js b/tests/cypress/integration/actions_projects_models/case_57_project_label_deleting_feature.js similarity index 100% rename from tests/cypress/integration/actions_projects/case_57_project_label_deleting_feature.js rename to tests/cypress/integration/actions_projects_models/case_57_project_label_deleting_feature.js diff --git a/tests/cypress/integration/actions_projects/case_94_move_task_between_projects.js b/tests/cypress/integration/actions_projects_models/case_94_move_task_between_projects.js similarity index 100% rename from tests/cypress/integration/actions_projects/case_94_move_task_between_projects.js rename to tests/cypress/integration/actions_projects_models/case_94_move_task_between_projects.js diff --git a/tests/cypress/integration/actions_projects/case_95_move_task_to_project.js b/tests/cypress/integration/actions_projects_models/case_95_move_task_to_project.js similarity index 100% rename from tests/cypress/integration/actions_projects/case_95_move_task_to_project.js rename to tests/cypress/integration/actions_projects_models/case_95_move_task_to_project.js diff --git a/tests/cypress/integration/actions_projects_models/case_98_models_page.js b/tests/cypress/integration/actions_projects_models/case_98_models_page.js new file mode 100644 index 00000000..f6a12248 --- /dev/null +++ b/tests/cypress/integration/actions_projects_models/case_98_models_page.js @@ -0,0 +1,20 @@ +// Copyright (C) 2021 Intel Corporation +// +// SPDX-License-Identifier: MIT + +/// + +context('Models page.', () => { + const caseId = '51'; + + before(() => { + cy.visit('/'); + cy.login(); + }); + + describe(`Testing case "${caseId}"`, () => { + it('The link to the models page and the models page exists.', () => { + cy.goToModelsList(); + }); + }); +}); diff --git a/tests/cypress/integration/actions_projects/issue_2625_delete_project_via_actions.js b/tests/cypress/integration/actions_projects_models/issue_2625_delete_project_via_actions.js similarity index 100% rename from tests/cypress/integration/actions_projects/issue_2625_delete_project_via_actions.js rename to tests/cypress/integration/actions_projects_models/issue_2625_delete_project_via_actions.js diff --git a/tests/cypress/integration/actions_projects/issue_2900_creating_more_one_tasks_from_project_per_time.js b/tests/cypress/integration/actions_projects_models/issue_2900_creating_more_one_tasks_from_project_per_time.js similarity index 100% rename from tests/cypress/integration/actions_projects/issue_2900_creating_more_one_tasks_from_project_per_time.js rename to tests/cypress/integration/actions_projects_models/issue_2900_creating_more_one_tasks_from_project_per_time.js diff --git a/tests/cypress/integration/actions_projects/registration_involved/base_actions_project_task_user.js b/tests/cypress/integration/actions_projects_models/registration_involved/base_actions_project_task_user.js similarity index 100% rename from tests/cypress/integration/actions_projects/registration_involved/base_actions_project_task_user.js rename to tests/cypress/integration/actions_projects_models/registration_involved/base_actions_project_task_user.js diff --git a/tests/cypress/support/commands_models.js b/tests/cypress/support/commands_models.js new file mode 100644 index 00000000..bee2c660 --- /dev/null +++ b/tests/cypress/support/commands_models.js @@ -0,0 +1,11 @@ +// Copyright (C) 2021 Intel Corporation +// +// SPDX-License-Identifier: MIT + +/// + +Cypress.Commands.add('goToModelsList', () => { + cy.get('a[value="models"]').click(); + cy.url().should('include', '/models'); + cy.get('.cvat-models-page').should('exist'); +}); diff --git a/tests/cypress/support/index.js b/tests/cypress/support/index.js index 0c42d26a..5c8880df 100644 --- a/tests/cypress/support/index.js +++ b/tests/cypress/support/index.js @@ -7,6 +7,7 @@ require('./commands_projects'); require('./commands_review_pipeline'); require('./commands_canvas3d'); require('./commands_filters_feature'); +require('./commands_models'); require('@cypress/code-coverage/support'); require('cypress-plugin-tab'); diff --git a/tests/cypress_canvas3d.json b/tests/cypress_canvas3d.json new file mode 100644 index 00000000..78eceec5 --- /dev/null +++ b/tests/cypress_canvas3d.json @@ -0,0 +1,17 @@ +{ + "video": false, + "baseUrl": "http://localhost:8080", + "viewportWidth": 1300, + "viewportHeight": 960, + "defaultCommandTimeout": 25000, + "env": { + "user": "admin", + "email": "admin@localhost.company", + "password": "12qwaszx" + }, + "testFiles": [ + "auth_page.js", + "canvas3d_functionality/*.js", + "remove_users_tasks_projects.js" + ] +} diff --git a/tests/cypress_cron_type.json b/tests/cypress_cron_type.json index c22f2d70..c8d01f82 100644 --- a/tests/cypress_cron_type.json +++ b/tests/cypress_cron_type.json @@ -18,7 +18,7 @@ "actions_objects2/*.js", "issues_prs/*.js", "issues_prs2/*.js", - "actions_projects/*.js", + "actions_projects_models/*.js", "actions_users/*.js", "email_system/*.js", "remove_users_tasks_projects.js" diff --git a/tests/package.json b/tests/package.json index ce60f762..b4a3a8c4 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,7 +1,8 @@ { "scripts": { "cypress:run:chrome": "cypress run --env coverage=false --headless --browser chrome", - "cypress:run:firefox": "cypress run --env coverage=false --headless --browser firefox --config-file cypress_cron_type.json" + "cypress:run:firefox": "cypress run --env coverage=false --headless --browser firefox --config-file cypress_cron_type.json", + "cypress:run:chrome:canvas3d": "cypress run --browser chrome --env coverage=false --config-file cypress_canvas3d.json" }, "devDependencies": { "@cypress/code-coverage": "^3.9.4",