From b7f8e8dd8351062e56610d4f834773b185897d22 Mon Sep 17 00:00:00 2001
From: Dmitry Kruchinin <33020454+dvkruchinin@users.noreply.github.com>
Date: Thu, 1 Jul 2021 15:38:24 +0300
Subject: [PATCH] Build CVAT with models support. Adding cypress test to check
models page. (#3369)
* Try add model support to CVAT build
* Added a test. Run test from different job.
* Change context
* Moved models test to project actions.
Configs adaptations.
Checking nightly
* Moved canvas 3d tests to different cypress config
Updated publish_docker_images.yml
* Removed models from matrix
* check tests on publish workflow
* Rework publish yml
* fix build, up -d
* Removed unnecessary line
---
.github/workflows/main.yml | 10 ++---
.github/workflows/publish_docker_images.yml | 40 ++++++++++++-------
.github/workflows/schedule.yml | 2 +-
tests/cypress.json | 3 +-
.../case_57_project_label_deleting_feature.js | 0
.../case_94_move_task_between_projects.js | 0
.../case_95_move_task_to_project.js | 0
.../case_98_models_page.js | 20 ++++++++++
.../issue_2625_delete_project_via_actions.js | 0
...ng_more_one_tasks_from_project_per_time.js | 0
.../base_actions_project_task_user.js | 0
tests/cypress/support/commands_models.js | 11 +++++
tests/cypress/support/index.js | 1 +
tests/cypress_canvas3d.json | 17 ++++++++
tests/cypress_cron_type.json | 2 +-
tests/package.json | 3 +-
16 files changed, 85 insertions(+), 24 deletions(-)
rename tests/cypress/integration/{actions_projects => actions_projects_models}/case_57_project_label_deleting_feature.js (100%)
rename tests/cypress/integration/{actions_projects => actions_projects_models}/case_94_move_task_between_projects.js (100%)
rename tests/cypress/integration/{actions_projects => actions_projects_models}/case_95_move_task_to_project.js (100%)
create mode 100644 tests/cypress/integration/actions_projects_models/case_98_models_page.js
rename tests/cypress/integration/{actions_projects => actions_projects_models}/issue_2625_delete_project_via_actions.js (100%)
rename tests/cypress/integration/{actions_projects => actions_projects_models}/issue_2900_creating_more_one_tasks_from_project_per_time.js (100%)
rename tests/cypress/integration/{actions_projects => actions_projects_models}/registration_involved/base_actions_project_task_user.js (100%)
create mode 100644 tests/cypress/support/commands_models.js
create mode 100644 tests/cypress_canvas3d.json
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",