From 953a9aa80e57834634df0915b5b943b08174a1c2 Mon Sep 17 00:00:00 2001 From: Kruchinin Date: Fri, 13 Nov 2020 13:59:49 +0300 Subject: [PATCH 01/11] First step --- tests/docker-compose.email.yml | 8 ++++++++ tests/email_settings.py | 17 +++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 tests/docker-compose.email.yml create mode 100644 tests/email_settings.py diff --git a/tests/docker-compose.email.yml b/tests/docker-compose.email.yml new file mode 100644 index 00000000..452546f3 --- /dev/null +++ b/tests/docker-compose.email.yml @@ -0,0 +1,8 @@ +version: "3.3" + +services: + cvat: + volumes: + - ./email_settings.py:/home/django/email_settings.py:ro + environment: + DJANGO_SETTINGS_MODULE: email_settings diff --git a/tests/email_settings.py b/tests/email_settings.py new file mode 100644 index 00000000..71eeaa0a --- /dev/null +++ b/tests/email_settings.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python + +# Copyright (C) 2020 Intel Corporation +# +# SPDX-License-Identifier: MIT + +from cvat.settings.production import * + + +# https://github.com/pennersr/django-allauth +ACCOUNT_AUTHENTICATION_METHOD = 'username' +ACCOUNT_CONFIRM_EMAIL_ON_GET = True +ACCOUNT_EMAIL_REQUIRED = True +ACCOUNT_EMAIL_VERIFICATION = 'mandatory' + +# Email backend settings for Django +EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' \ No newline at end of file From aa705417740ced3193646d1b2a82a2333e0b4e8f Mon Sep 17 00:00:00 2001 From: Kruchinin Date: Fri, 13 Nov 2020 16:30:29 +0300 Subject: [PATCH 02/11] Added functionality for build CVAT with wmail support --- tests/__init__.py | 3 ++ tests/cypress.json | 1 + .../case_2_register_user_change_pass.js | 2 +- .../case_4_assign_taks_job_users.js | 2 +- .../check_email_verification_system.js | 39 +++++++++++++++++++ .../issue_1599_ch_user_registration.js | 22 +++++++---- .../issue_1599_pl_user_registration.js | 21 ++++++---- .../cypress/integration/remove_users_tasks.js | 1 + tests/docker-compose.email.yml | 4 +- 9 files changed, 75 insertions(+), 20 deletions(-) create mode 100644 tests/__init__.py create mode 100644 tests/cypress/integration/actions_users/check_email_verification_system.js diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 00000000..f19d9bef --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2020 Intel Corporation +# +# SPDX-License-Identifier: MIT diff --git a/tests/cypress.json b/tests/cypress.json index 80523cb6..dd68e5fc 100644 --- a/tests/cypress.json +++ b/tests/cypress.json @@ -6,6 +6,7 @@ "defaultCommandTimeout": 25000, "env": { "user": "admin", + "email": "admin@localhost.company", "password": "12qwaszx" }, "testFiles": ["auth_page.js", "actions_tasks_objects/*", "actions_users/*", "remove_users_tasks.js"] diff --git a/tests/cypress/integration/actions_users/case_2_register_user_change_pass.js b/tests/cypress/integration/actions_users/case_2_register_user_change_pass.js index 91b025c1..c0bb0a7a 100644 --- a/tests/cypress/integration/actions_users/case_2_register_user_change_pass.js +++ b/tests/cypress/integration/actions_users/case_2_register_user_change_pass.js @@ -13,7 +13,7 @@ const randomString = (isPassword) => { return isPassword ? `${result}${Math.floor(Math.random() * 10)}` : result; }; -context('Register user, change password, login with new password', () => { +context('Register user, change password, login with new password', { browser: 'chrome' }, () => { const caseId = '2'; const firstName = `${randomString()}`; const lastName = `${randomString()}`; diff --git a/tests/cypress/integration/actions_users/case_4_assign_taks_job_users.js b/tests/cypress/integration/actions_users/case_4_assign_taks_job_users.js index 72a678b2..b11c3764 100644 --- a/tests/cypress/integration/actions_users/case_4_assign_taks_job_users.js +++ b/tests/cypress/integration/actions_users/case_4_assign_taks_job_users.js @@ -4,7 +4,7 @@ /// -context('Multiple users. Assign task, job.', () => { +context('Multiple users. Assign task, job.', { browser: 'chrome' }, () => { const caseId = '4'; const labelName = `Case ${caseId}`; const taskName = `New annotation task for ${labelName}`; diff --git a/tests/cypress/integration/actions_users/check_email_verification_system.js b/tests/cypress/integration/actions_users/check_email_verification_system.js new file mode 100644 index 00000000..8fc44378 --- /dev/null +++ b/tests/cypress/integration/actions_users/check_email_verification_system.js @@ -0,0 +1,39 @@ +// Copyright (C) 2020 Intel Corporation +// +// SPDX-License-Identifier: MIT + +/// + +const randomString = (isPassword) => { + let result = ''; + const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; + for (let i = 0; i <= 8; i++) { + result += characters.charAt(Math.floor(Math.random() * characters.length)); + } + return isPassword ? `${result}${Math.floor(Math.random() * 10)}` : result; +}; + +context('Check email verification system', { browser: 'firefox' }, () => { + const caseId = 'Email verification system'; + const firstName = `${randomString()}`; + const lastName = `${randomString()}`; + const userName = `${randomString()}`; + const emailAddr = `${userName}@local.local`; + const password = `${randomString(true)}`; + + before(() => { + cy.visit('auth/register'); + cy.url().should('include', '/auth/register'); + }); + + describe(`Case: "${caseId}"`, () => { + it('Register user', () => { + cy.server().route('POST', '/api/v1/auth/register').as('userRegister'); + cy.userRegistration(firstName, lastName, userName, emailAddr, password); + cy.get('.ant-notification-topRight') + .contains(`We have sent an email with a confirmation link to ${emailAddr}.`) + .should('exist') + cy.wait('@userRegister').its('status').should('eq', 201); + }); + }); +}); diff --git a/tests/cypress/integration/actions_users/issue_1599_ch_user_registration.js b/tests/cypress/integration/actions_users/issue_1599_ch_user_registration.js index 08cda62c..92db957e 100644 --- a/tests/cypress/integration/actions_users/issue_1599_ch_user_registration.js +++ b/tests/cypress/integration/actions_users/issue_1599_ch_user_registration.js @@ -4,7 +4,14 @@ /// -context('Issue 1599 (Chinese alphabet).', () => { +context('Issue 1599 (Chinese alphabet).', { browser: 'chrome' }, () => { + + const firstName = '测试者' + const lastName = '测试' + const userName = 'Testuser_ch' + const email = 'Testuser_ch@local.local' + const password = 'Qwerty123!' + before(() => { cy.visit('auth/register'); cy.url().should('include', '/auth/register'); @@ -12,33 +19,32 @@ context('Issue 1599 (Chinese alphabet).', () => { describe('User registration using the Chinese alphabet.', () => { it('Filling in the placeholder "First name"', () => { - cy.get('[placeholder="First name"]').type('测试者').should('not.have.class', 'has-error'); + cy.get('[placeholder="First name"]').type(firstName).should('not.have.class', 'has-error'); }); it('Filling in the placeholder "Last name"', () => { - cy.get('[placeholder="Last name"]').type('测试').should('not.have.class', 'has-error'); + cy.get('[placeholder="Last name"]').type(lastName).should('not.have.class', 'has-error'); }); it('Filling in the placeholder "Username"', () => { - cy.get('[placeholder="Username"]').type('Testuser_ch'); + cy.get('[placeholder="Username"]').type(userName); }); it('Filling in the placeholder "Email address"', () => { - cy.get('[placeholder="Email address"]').type('Testuser_ch@local.local'); + cy.get('[placeholder="Email address"]').type(email); }); it('Filling in the placeholder "Password"', () => { - cy.get('[placeholder="Password"]').type('Qwerty123!'); + cy.get('[placeholder="Password"]').type(password); }); it('Filling in the placeholder "Confirm password"', () => { - cy.get('[placeholder="Confirm password"]').type('Qwerty123!'); + cy.get('[placeholder="Confirm password"]').type(password); }); it('Click to "Submit" button', () => { cy.get('[type="submit"]').click(); }); - it('Successful registration', () => { cy.url().should('include', '/tasks'); }); diff --git a/tests/cypress/integration/actions_users/issue_1599_pl_user_registration.js b/tests/cypress/integration/actions_users/issue_1599_pl_user_registration.js index 11a48a15..53b169f7 100644 --- a/tests/cypress/integration/actions_users/issue_1599_pl_user_registration.js +++ b/tests/cypress/integration/actions_users/issue_1599_pl_user_registration.js @@ -4,7 +4,14 @@ /// -context('Issue 1599 (Polish alphabet).', () => { +context('Issue 1599 (Polish alphabet).', { browser: 'chrome' }, () => { + + const firstName = 'Świętobor' + const lastName = 'Сzcić' + const userName = 'Testuser_pl' + const email = 'Testuser_pl@local.local' + const password = 'Qwerty123!' + before(() => { cy.visit('auth/register'); cy.url().should('include', '/auth/register'); @@ -12,27 +19,27 @@ context('Issue 1599 (Polish alphabet).', () => { describe('User registration using the Polish alphabet.', () => { it('Filling in the placeholder "First name"', () => { - cy.get('[placeholder="First name"]').type('Świętobor').should('not.have.class', 'has-error'); + cy.get('[placeholder="First name"]').type(firstName).should('not.have.class', 'has-error'); }); it('Filling in the placeholder "Last name"', () => { - cy.get('[placeholder="Last name"]').type('Сzcić').should('not.have.class', 'has-error'); + cy.get('[placeholder="Last name"]').type(lastName).should('not.have.class', 'has-error'); }); it('Filling in the placeholder "Username"', () => { - cy.get('[placeholder="Username"]').type('Testuser_pl'); + cy.get('[placeholder="Username"]').type(userName); }); it('Filling in the placeholder "Email address"', () => { - cy.get('[placeholder="Email address"]').type('Testuser_pl@local.local'); + cy.get('[placeholder="Email address"]').type(email); }); it('Filling in the placeholder "Password"', () => { - cy.get('[placeholder="Password"]').type('Qwerty123!'); + cy.get('[placeholder="Password"]').type(password); }); it('Filling in the placeholder "Confirm password"', () => { - cy.get('[placeholder="Confirm password"]').type('Qwerty123!'); + cy.get('[placeholder="Confirm password"]').type(password); }); it('Click to "Submit" button', () => { diff --git a/tests/cypress/integration/remove_users_tasks.js b/tests/cypress/integration/remove_users_tasks.js index f6be5763..e30bafdc 100644 --- a/tests/cypress/integration/remove_users_tasks.js +++ b/tests/cypress/integration/remove_users_tasks.js @@ -13,6 +13,7 @@ describe('Delete users and tasks created during the test run.', () => { url: '/api/v1/auth/login', body: { username: Cypress.env('user'), + email: Cypress.env('email'), password: Cypress.env('password'), }, }).then(async (responce) => { diff --git a/tests/docker-compose.email.yml b/tests/docker-compose.email.yml index 452546f3..962376a5 100644 --- a/tests/docker-compose.email.yml +++ b/tests/docker-compose.email.yml @@ -2,7 +2,5 @@ version: "3.3" services: cvat: - volumes: - - ./email_settings.py:/home/django/email_settings.py:ro environment: - DJANGO_SETTINGS_MODULE: email_settings + DJANGO_SETTINGS_MODULE: tests.email_settings From dcc8b3767606c74fe3c4ec46cd2d5d0c7ccbb894 Mon Sep 17 00:00:00 2001 From: Kruchinin Date: Fri, 13 Nov 2020 17:46:33 +0300 Subject: [PATCH 03/11] Reconfigure .travis.yml --- .travis.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 547c9303..9b646231 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,20 +30,22 @@ before_install: - nvm install ${NODE_VERSION} before_script: - - docker-compose -f docker-compose.yml -f docker-compose.ci.yml build - chmod a+rwx ${HOST_COVERAGE_DATA_DIR} script: + - if [[ $TRAVIS_EVENT_TYPE == "cron" && $TRAVIS_BRANCH == "develop" ]]; + then + docker-compose -f docker-compose.yml -f ./tests/docker-compose.email.yml up -d --build; \ + docker exec -it cvat bash -ic 'python3 ~/manage.py migrate'; \ + docker exec -it cvat bash -ic "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 run cypress:run:firefox; exit $?; + fi; + - docker-compose -f docker-compose.yml -f docker-compose.ci.yml up -d --build - docker-compose -f docker-compose.yml -f docker-compose.ci.yml run cvat_ci /bin/bash -c 'coverage run -a manage.py test cvat/apps utils/cli && mv .coverage ${CONTAINER_COVERAGE_DATA_DIR}' - docker-compose -f docker-compose.yml -f docker-compose.ci.yml run cvat_ci /bin/bash -c 'cd cvat-data && npm install && cd ../cvat-core && npm install && npm run test && mv ./reports/coverage/lcov.info ${CONTAINER_COVERAGE_DATA_DIR} && chmod a+rwx ${CONTAINER_COVERAGE_DATA_DIR}/lcov.info' - - docker-compose up -d - docker exec -it cvat bash -ic "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" # End-to-end testing - cd ./tests && npm install && cd .. - - if [[ $TRAVIS_EVENT_TYPE == "cron" && $TRAVIS_BRANCH == "develop" ]]; - then - cd ./tests && npm run cypress:run:firefox && exit $?; - fi; - npm install && npm run coverage - docker-compose up -d --build - cd ./tests && npx cypress run --headless --browser chrome From d2d274984bc163096c43728417e0dda94764588a Mon Sep 17 00:00:00 2001 From: Kruchinin Date: Fri, 13 Nov 2020 17:53:41 +0300 Subject: [PATCH 04/11] Fix .travis.yml --- .travis.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9b646231..af0a4351 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,17 +38,16 @@ script: docker-compose -f docker-compose.yml -f ./tests/docker-compose.email.yml up -d --build; \ docker exec -it cvat bash -ic 'python3 ~/manage.py migrate'; \ docker exec -it cvat bash -ic "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 run cypress:run:firefox; exit $?; + cd ./tests && npm install && npm run cypress:run:firefox; exit $?; fi; - docker-compose -f docker-compose.yml -f docker-compose.ci.yml up -d --build - docker-compose -f docker-compose.yml -f docker-compose.ci.yml run cvat_ci /bin/bash -c 'coverage run -a manage.py test cvat/apps utils/cli && mv .coverage ${CONTAINER_COVERAGE_DATA_DIR}' - docker-compose -f docker-compose.yml -f docker-compose.ci.yml run cvat_ci /bin/bash -c 'cd cvat-data && npm install && cd ../cvat-core && npm install && npm run test && mv ./reports/coverage/lcov.info ${CONTAINER_COVERAGE_DATA_DIR} && chmod a+rwx ${CONTAINER_COVERAGE_DATA_DIR}/lcov.info' - docker exec -it cvat bash -ic "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" # End-to-end testing - - cd ./tests && npm install && cd .. - npm install && npm run coverage - docker-compose up -d --build - - cd ./tests && npx cypress run --headless --browser chrome + - cd ./tests && npm install && npx cypress run --headless --browser chrome - mv ./.nyc_output ../ && cd .. - npx nyc report --reporter=text-lcov >> ${HOST_COVERAGE_DATA_DIR}/lcov.info - docker-compose -f docker-compose.yml -f docker-compose.ci.yml run cvat_ci /bin/bash -c 'cd ${CONTAINER_COVERAGE_DATA_DIR} && coveralls-lcov -v -n lcov.info > ${CONTAINER_COVERAGE_DATA_DIR}/coverage.json' From 5aa5493abe295af4f78caf4eb4ade4d162b99ff6 Mon Sep 17 00:00:00 2001 From: Kruchinin Date: Fri, 13 Nov 2020 17:58:45 +0300 Subject: [PATCH 05/11] Add EOF email_settings.py --- tests/email_settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/email_settings.py b/tests/email_settings.py index 71eeaa0a..278b3399 100644 --- a/tests/email_settings.py +++ b/tests/email_settings.py @@ -14,4 +14,4 @@ ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_EMAIL_VERIFICATION = 'mandatory' # Email backend settings for Django -EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' \ No newline at end of file +EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' From 6032a132b5309ab9083e8f77307903cbe0d5950a Mon Sep 17 00:00:00 2001 From: Kruchinin Date: Fri, 13 Nov 2020 18:45:07 +0300 Subject: [PATCH 06/11] Fix .travis.yml --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index af0a4351..54c44b63 100644 --- a/.travis.yml +++ b/.travis.yml @@ -40,9 +40,10 @@ script: docker exec -it cvat bash -ic "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 install && npm run cypress:run:firefox; exit $?; fi; - - docker-compose -f docker-compose.yml -f docker-compose.ci.yml up -d --build + - docker-compose -f docker-compose.yml -f docker-compose.ci.yml build - docker-compose -f docker-compose.yml -f docker-compose.ci.yml run cvat_ci /bin/bash -c 'coverage run -a manage.py test cvat/apps utils/cli && mv .coverage ${CONTAINER_COVERAGE_DATA_DIR}' - docker-compose -f docker-compose.yml -f docker-compose.ci.yml run cvat_ci /bin/bash -c 'cd cvat-data && npm install && cd ../cvat-core && npm install && npm run test && mv ./reports/coverage/lcov.info ${CONTAINER_COVERAGE_DATA_DIR} && chmod a+rwx ${CONTAINER_COVERAGE_DATA_DIR}/lcov.info' + - docker-compose up -d - docker exec -it cvat bash -ic "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" # End-to-end testing - npm install && npm run coverage From 586e9c3f2eff0f9ec4a8b15d33147b074828e666 Mon Sep 17 00:00:00 2001 From: Kruchinin Date: Fri, 13 Nov 2020 20:08:36 +0300 Subject: [PATCH 07/11] Try firefox --- .travis.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 54c44b63..2732951b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,12 +33,12 @@ before_script: - chmod a+rwx ${HOST_COVERAGE_DATA_DIR} script: - - if [[ $TRAVIS_EVENT_TYPE == "cron" && $TRAVIS_BRANCH == "develop" ]]; + - if [[ $TRAVIS_EVENT_TYPE == "cron" || $TRAVIS_BRANCH == "dkru/cypress-test-check-email-verification" ]]; then - docker-compose -f docker-compose.yml -f ./tests/docker-compose.email.yml up -d --build; \ - docker exec -it cvat bash -ic 'python3 ~/manage.py migrate'; \ - docker exec -it cvat bash -ic "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 install && npm run cypress:run:firefox; exit $?; + docker-compose -f docker-compose.yml -f ./tests/docker-compose.email.yml up -d --build; + docker exec -it cvat bash -ic 'python3 ~/manage.py migrate'; + docker exec -it cvat bash -ic "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 install && npm run cypress:run:firefox; exit $?; fi; - docker-compose -f docker-compose.yml -f docker-compose.ci.yml build - docker-compose -f docker-compose.yml -f docker-compose.ci.yml run cvat_ci /bin/bash -c 'coverage run -a manage.py test cvat/apps utils/cli && mv .coverage ${CONTAINER_COVERAGE_DATA_DIR}' From 308afe5d75bba9e06d7bca46bb929e8c0c8e30d0 Mon Sep 17 00:00:00 2001 From: Kruchinin Date: Sat, 14 Nov 2020 00:29:18 +0300 Subject: [PATCH 08/11] Minor fix for the test. --- .../actions_users/check_email_verification_system.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/cypress/integration/actions_users/check_email_verification_system.js b/tests/cypress/integration/actions_users/check_email_verification_system.js index 8fc44378..a4576c3c 100644 --- a/tests/cypress/integration/actions_users/check_email_verification_system.js +++ b/tests/cypress/integration/actions_users/check_email_verification_system.js @@ -27,7 +27,7 @@ context('Check email verification system', { browser: 'firefox' }, () => { }); describe(`Case: "${caseId}"`, () => { - it('Register user', () => { + it('Register user. Notification exist. The response status is successful.', () => { cy.server().route('POST', '/api/v1/auth/register').as('userRegister'); cy.userRegistration(firstName, lastName, userName, emailAddr, password); cy.get('.ant-notification-topRight') From 65b90f5fd8de03882494d783e23f6eb935ccce0b Mon Sep 17 00:00:00 2001 From: Kruchinin Date: Sat, 14 Nov 2020 09:53:14 +0300 Subject: [PATCH 09/11] Minor fix --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2732951b..9450e7ea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,7 +33,7 @@ before_script: - chmod a+rwx ${HOST_COVERAGE_DATA_DIR} script: - - if [[ $TRAVIS_EVENT_TYPE == "cron" || $TRAVIS_BRANCH == "dkru/cypress-test-check-email-verification" ]]; + - if [[ $TRAVIS_EVENT_TYPE == "cron" && $TRAVIS_BRANCH == "develop" ]]; then docker-compose -f docker-compose.yml -f ./tests/docker-compose.email.yml up -d --build; docker exec -it cvat bash -ic 'python3 ~/manage.py migrate'; From 57833e203090f4432ddb88278cd4440ef54f62ca Mon Sep 17 00:00:00 2001 From: Kruchinin Date: Thu, 19 Nov 2020 17:29:30 +0300 Subject: [PATCH 10/11] Rework test suite for CI. --- tests/cypress.json | 2 +- .../case_1_create_delete_task.js | 0 .../case_2_register_user_change_pass.js | 2 +- .../case_4_assign_taks_job_users.js | 2 +- .../issue_1599_ch_user_registration.js | 13 ++++++------- .../issue_1599_pl_user_registration.js | 13 ++++++------- .../check_email_verification_system.js | 6 +++--- tests/cypress_cron_type.json | 13 +++++++++++++ tests/package.json | 2 +- 9 files changed, 32 insertions(+), 21 deletions(-) rename tests/cypress/integration/{actions_users => actions_tasks_objects}/case_1_create_delete_task.js (100%) rename tests/cypress/integration/actions_users/{ => registration_involved}/case_2_register_user_change_pass.js (98%) rename tests/cypress/integration/actions_users/{ => registration_involved}/case_4_assign_taks_job_users.js (98%) rename tests/cypress/integration/actions_users/{ => registration_involved}/issue_1599_ch_user_registration.js (85%) rename tests/cypress/integration/actions_users/{ => registration_involved}/issue_1599_pl_user_registration.js (85%) rename tests/cypress/integration/{actions_users => email_system}/check_email_verification_system.js (86%) create mode 100644 tests/cypress_cron_type.json diff --git a/tests/cypress.json b/tests/cypress.json index dd68e5fc..24a6ba3f 100644 --- a/tests/cypress.json +++ b/tests/cypress.json @@ -9,5 +9,5 @@ "email": "admin@localhost.company", "password": "12qwaszx" }, - "testFiles": ["auth_page.js", "actions_tasks_objects/*", "actions_users/*", "remove_users_tasks.js"] + "testFiles": ["auth_page.js", "actions_tasks_objects/*", "actions_users/**/*", "remove_users_tasks.js"] } diff --git a/tests/cypress/integration/actions_users/case_1_create_delete_task.js b/tests/cypress/integration/actions_tasks_objects/case_1_create_delete_task.js similarity index 100% rename from tests/cypress/integration/actions_users/case_1_create_delete_task.js rename to tests/cypress/integration/actions_tasks_objects/case_1_create_delete_task.js diff --git a/tests/cypress/integration/actions_users/case_2_register_user_change_pass.js b/tests/cypress/integration/actions_users/registration_involved/case_2_register_user_change_pass.js similarity index 98% rename from tests/cypress/integration/actions_users/case_2_register_user_change_pass.js rename to tests/cypress/integration/actions_users/registration_involved/case_2_register_user_change_pass.js index c0bb0a7a..91b025c1 100644 --- a/tests/cypress/integration/actions_users/case_2_register_user_change_pass.js +++ b/tests/cypress/integration/actions_users/registration_involved/case_2_register_user_change_pass.js @@ -13,7 +13,7 @@ const randomString = (isPassword) => { return isPassword ? `${result}${Math.floor(Math.random() * 10)}` : result; }; -context('Register user, change password, login with new password', { browser: 'chrome' }, () => { +context('Register user, change password, login with new password', () => { const caseId = '2'; const firstName = `${randomString()}`; const lastName = `${randomString()}`; diff --git a/tests/cypress/integration/actions_users/case_4_assign_taks_job_users.js b/tests/cypress/integration/actions_users/registration_involved/case_4_assign_taks_job_users.js similarity index 98% rename from tests/cypress/integration/actions_users/case_4_assign_taks_job_users.js rename to tests/cypress/integration/actions_users/registration_involved/case_4_assign_taks_job_users.js index b11c3764..72a678b2 100644 --- a/tests/cypress/integration/actions_users/case_4_assign_taks_job_users.js +++ b/tests/cypress/integration/actions_users/registration_involved/case_4_assign_taks_job_users.js @@ -4,7 +4,7 @@ /// -context('Multiple users. Assign task, job.', { browser: 'chrome' }, () => { +context('Multiple users. Assign task, job.', () => { const caseId = '4'; const labelName = `Case ${caseId}`; const taskName = `New annotation task for ${labelName}`; diff --git a/tests/cypress/integration/actions_users/issue_1599_ch_user_registration.js b/tests/cypress/integration/actions_users/registration_involved/issue_1599_ch_user_registration.js similarity index 85% rename from tests/cypress/integration/actions_users/issue_1599_ch_user_registration.js rename to tests/cypress/integration/actions_users/registration_involved/issue_1599_ch_user_registration.js index 92db957e..bbcb5db7 100644 --- a/tests/cypress/integration/actions_users/issue_1599_ch_user_registration.js +++ b/tests/cypress/integration/actions_users/registration_involved/issue_1599_ch_user_registration.js @@ -4,13 +4,12 @@ /// -context('Issue 1599 (Chinese alphabet).', { browser: 'chrome' }, () => { - - const firstName = '测试者' - const lastName = '测试' - const userName = 'Testuser_ch' - const email = 'Testuser_ch@local.local' - const password = 'Qwerty123!' +context('Issue 1599 (Chinese alphabet).', () => { + const firstName = '测试者'; + const lastName = '测试'; + const userName = 'Testuser_ch'; + const email = 'Testuser_ch@local.local'; + const password = 'Qwerty123!'; before(() => { cy.visit('auth/register'); diff --git a/tests/cypress/integration/actions_users/issue_1599_pl_user_registration.js b/tests/cypress/integration/actions_users/registration_involved/issue_1599_pl_user_registration.js similarity index 85% rename from tests/cypress/integration/actions_users/issue_1599_pl_user_registration.js rename to tests/cypress/integration/actions_users/registration_involved/issue_1599_pl_user_registration.js index 53b169f7..2ee411d9 100644 --- a/tests/cypress/integration/actions_users/issue_1599_pl_user_registration.js +++ b/tests/cypress/integration/actions_users/registration_involved/issue_1599_pl_user_registration.js @@ -4,13 +4,12 @@ /// -context('Issue 1599 (Polish alphabet).', { browser: 'chrome' }, () => { - - const firstName = 'Świętobor' - const lastName = 'Сzcić' - const userName = 'Testuser_pl' - const email = 'Testuser_pl@local.local' - const password = 'Qwerty123!' +context('Issue 1599 (Polish alphabet).', () => { + const firstName = 'Świętobor'; + const lastName = 'Сzcić'; + const userName = 'Testuser_pl'; + const email = 'Testuser_pl@local.local'; + const password = 'Qwerty123!'; before(() => { cy.visit('auth/register'); diff --git a/tests/cypress/integration/actions_users/check_email_verification_system.js b/tests/cypress/integration/email_system/check_email_verification_system.js similarity index 86% rename from tests/cypress/integration/actions_users/check_email_verification_system.js rename to tests/cypress/integration/email_system/check_email_verification_system.js index a4576c3c..8ff33b1b 100644 --- a/tests/cypress/integration/actions_users/check_email_verification_system.js +++ b/tests/cypress/integration/email_system/check_email_verification_system.js @@ -13,7 +13,7 @@ const randomString = (isPassword) => { return isPassword ? `${result}${Math.floor(Math.random() * 10)}` : result; }; -context('Check email verification system', { browser: 'firefox' }, () => { +context('Check email verification system', () => { const caseId = 'Email verification system'; const firstName = `${randomString()}`; const lastName = `${randomString()}`; @@ -31,8 +31,8 @@ context('Check email verification system', { browser: 'firefox' }, () => { cy.server().route('POST', '/api/v1/auth/register').as('userRegister'); cy.userRegistration(firstName, lastName, userName, emailAddr, password); cy.get('.ant-notification-topRight') - .contains(`We have sent an email with a confirmation link to ${emailAddr}.`) - .should('exist') + .contains(`We have sent an email with a confirmation link to ${emailAddr}.`) + .should('exist'); cy.wait('@userRegister').its('status').should('eq', 201); }); }); diff --git a/tests/cypress_cron_type.json b/tests/cypress_cron_type.json new file mode 100644 index 00000000..40a1b2b5 --- /dev/null +++ b/tests/cypress_cron_type.json @@ -0,0 +1,13 @@ +{ + "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", "actions_tasks_objects/*", "actions_users/*", "email_system/*", "remove_users_tasks.js"] +} diff --git a/tests/package.json b/tests/package.json index 2b38c570..746be871 100644 --- a/tests/package.json +++ b/tests/package.json @@ -1,7 +1,7 @@ { "scripts": { "cypress:run:chrome": "cypress run --env coverage=false --headless --browser chrome", - "cypress:run:firefox": "cypress run --env coverage=false --headless --browser firefox" + "cypress:run:firefox": "cypress run --env coverage=false --headless --browser firefox --config-file cypress_cron_type.json" }, "devDependencies": { "@cypress/code-coverage": "^3.8.1", From b2e03a5f823a0d9a0ff82cb88183d2f124e7926a Mon Sep 17 00:00:00 2001 From: Kruchinin Date: Thu, 26 Nov 2020 14:41:33 +0300 Subject: [PATCH 11/11] Minor fix. --- tests/cypress/support/commands.js | 4 +++- tests/cypress_cron_type.json | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/cypress/support/commands.js b/tests/cypress/support/commands.js index 340ce621..eaf1c9ba 100644 --- a/tests/cypress/support/commands.js +++ b/tests/cypress/support/commands.js @@ -33,7 +33,9 @@ Cypress.Commands.add('userRegistration', (firstName, lastName, userName, emailAd cy.get('#password1').type(password); cy.get('#password2').type(password); cy.get('.register-form-button').click(); - cy.url().should('include', '/tasks'); + if (Cypress.browser.family === 'chromium') { + cy.url().should('include', '/tasks'); + } }); Cypress.Commands.add( diff --git a/tests/cypress_cron_type.json b/tests/cypress_cron_type.json index 40a1b2b5..2033f6a3 100644 --- a/tests/cypress_cron_type.json +++ b/tests/cypress_cron_type.json @@ -9,5 +9,11 @@ "email": "admin@localhost.company", "password": "12qwaszx" }, - "testFiles": ["auth_page.js", "actions_tasks_objects/*", "actions_users/*", "email_system/*", "remove_users_tasks.js"] + "testFiles": [ + "auth_page.js", + "actions_tasks_objects/*", + "actions_users/*", + "email_system/*", + "remove_users_tasks_projects.js" + ] }