diff --git a/.github/workflows/build-and-test-oauth.yml b/.github/workflows/build-and-test-oauth.yml index 33f5c29142..8ef83e26fe 100644 --- a/.github/workflows/build-and-test-oauth.yml +++ b/.github/workflows/build-and-test-oauth.yml @@ -25,21 +25,24 @@ on: schedule: - cron: '0 6 * * *' workflow_dispatch: - + pull_request: + paths-ignore: + - 'README.md' jobs: build-skills-service-for-ui-tests: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - uses: actions/setup-node@v2-beta + - uses: actions/setup-node@v3 with: node-version: '14' - - uses: actions/setup-java@v1 + - uses: actions/setup-java@v3 with: + distribution: 'temurin' java-version: '19' # The JDK version to make available on the path. - name: Print Versions @@ -48,7 +51,7 @@ jobs: java -version - name: Cache local Maven repository - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} @@ -61,7 +64,7 @@ jobs: run: mvn --batch-mode install -DskipTests - name: upload service jar - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: service jar path: ./service/target/*.jar @@ -77,7 +80,7 @@ jobs: fail-fast: false matrix: # run 6 copies of the current job in parallel - containers: [1, 2, 3, 4, 5, 6] + container: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] services: postgres: @@ -101,20 +104,21 @@ jobs: - name: Install Emoji Support run: sudo apt-get install fonts-noto-color-emoji - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Checkout skills-client - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: repository: NationalSecurityAgency/skills-client path: skills-client - - uses: actions/setup-node@v2-beta + - uses: actions/setup-node@v3 with: node-version: '14' - - uses: actions/setup-java@v1 + - uses: actions/setup-java@v3 with: + distribution: 'temurin' java-version: '19' # The JDK version to make available on the path. - name: Print Versions @@ -122,7 +126,7 @@ jobs: mvn --version java -version - - uses: actions/download-artifact@v2 + - uses: actions/download-artifact@v3 with: name: service jar path: ./service/target/ @@ -165,26 +169,21 @@ jobs: cd .. - name: Run Cypress tests - uses: cypress-io/github-action@v4 - with: - working-directory: e2e-tests - record: true - parallel: true - group: 'skills-service with OAuth' - tag: "${{ github.workflow }}" - env: oauthMode=true - browser: chrome + run: | + cd e2e-tests + ../.github/scripts/runSubsetOfCypressTests.sh -t 20 -c ${{ matrix.container }} + cd .. env: - # pass the Dashboard record key as an environment variable - CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} - # pass GitHub token to allow accurately detecting a build vs a re-run build - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ELECTRON_EXTRA_LAUNCH_ARGS: '--disable-gpu' + cypress_oauthMode: true - name: upload result artifacts if: ${{ always() }} - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: - name: CI result artifacts + name: UI test artifacts (${{ matrix.container }}) path: | ./e2e-tests/logs - ./e2e-tests/cypress/visualRegression/diff + ./e2e-tests/cypress/videos + ./e2e-tests/cypress/screenshots + ./e2e-tests/cypress/visualRegression/diff \ No newline at end of file diff --git a/e2e-tests/cypress/e2e/badges_spec.js b/e2e-tests/cypress/e2e/badges_spec.js index f4c60cf1a4..a6d8eb6f7f 100644 --- a/e2e-tests/cypress/e2e/badges_spec.js +++ b/e2e-tests/cypress/e2e/badges_spec.js @@ -55,11 +55,26 @@ describe('Badges Tests', () => { .click(); }); + Cypress.Commands.add('selectSkill', (skillIndex=0, retry=true) => { + cy.get('[data-cy="skillsSelector2"]').as('getOptions') + .click(); + cy.get('@getOptions').then(($el) => { + cy.wait(500); + if ($el.find('.vs__dropdown-option').length > 0) { + cy.get('.vs__dropdown-option') + .eq(skillIndex) + .click(); + } else if (retry) { + cy.selectSkill(skillIndex, false);} + }) + }); + cy.intercept('POST', '/admin/projects/proj1/badgeNameExists') .as('nameExistsCheck'); cy.intercept('GET', '/admin/projects/proj1/badges') .as('loadBadges'); - + cy.intercept('GET', '/admin/projects/proj1/skills?*') + .as('loadSkills'); }); it('create badge with special chars', () => { @@ -81,6 +96,7 @@ describe('Badges Tests', () => { }); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadBadges'); cy.clickButton('Badge'); @@ -117,6 +133,7 @@ describe('Badges Tests', () => { }); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadBadges'); cy.clickButton('Badge'); @@ -147,6 +164,7 @@ describe('Badges Tests', () => { }); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadBadges'); cy.clickButton('Badge'); cy.get('[data-cy=closeBadgeButton]') @@ -173,6 +191,7 @@ describe('Badges Tests', () => { }); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadBadges'); cy.clickButton('Badge'); @@ -221,6 +240,7 @@ describe('Badges Tests', () => { }); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadBadges'); cy.wait('@getUserInfo'); @@ -255,6 +275,7 @@ describe('Badges Tests', () => { }); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickButton('Badge'); cy.contains('New Badge'); @@ -291,6 +312,7 @@ describe('Badges Tests', () => { .as('customUrlValidation'); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickButton('Badge'); cy.contains('New Badge'); @@ -511,6 +533,7 @@ describe('Badges Tests', () => { it('badge modal allows Help Url to have spaces', () => { cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="btn_Badges"]').click(); cy.get('[data-cy="badgeName"]').type('badge1') cy.get('[data-cy="skillHelpUrl"]').type('https://someCoolWebsite.com/some url with spaces') @@ -522,6 +545,7 @@ describe('Badges Tests', () => { it('gem start and end time validation', () => { cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickButton('Badge'); cy.contains('New Badge'); cy.get('[data-cy="gemEditContainer"]') @@ -606,6 +630,7 @@ describe('Badges Tests', () => { }); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickButton('Badge'); cy.contains('New Badge'); cy.get('#badgeName') @@ -615,11 +640,9 @@ describe('Badges Tests', () => { cy.get('[data-cy=manageBtn_TestBadgeBadge]') .click(); - cy.get('[data-cy="skillsSelector2"]') - .click(); - cy.get('[data-cy="skillsSelector2"] .vs__dropdown-option') - .eq(0) - .click(); + cy.wait(500); + cy.wait('@loadSkills'); + cy.selectSkill(0); cy.contains('.router-link-active', 'Badges') .click(); @@ -660,6 +683,7 @@ describe('Badges Tests', () => { }); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickButton('Badge'); cy.contains('New Badge'); cy.get('#badgeName') @@ -669,11 +693,9 @@ describe('Badges Tests', () => { cy.get('[data-cy=manageBtn_TestBadgeBadge]') .click(); - cy.get('[data-cy="skillsSelector2"]') - .click(); - cy.get('[data-cy="skillsSelector2"] .vs__dropdown-option') - .eq(0) - .click(); + cy.wait(500); + cy.wait('@loadSkills'); + cy.selectSkill(0); cy.contains('.router-link-active', 'Badges') .click(); @@ -715,6 +737,7 @@ describe('Badges Tests', () => { }); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickButton('Badge'); cy.contains('New Badge'); cy.get('#badgeName') @@ -723,11 +746,9 @@ describe('Badges Tests', () => { cy.wait('@loadBadges'); cy.get('[data-cy=manageBtn_TestBadgeBadge]') .click(); - cy.get('[data-cy="skillsSelector2"]') - .click(); - cy.get('[data-cy="skillsSelector2"] .vs__dropdown-option') - .eq(0) - .click(); + cy.wait(500); + cy.wait('@loadSkills'); + cy.selectSkill(0); cy.contains('.router-link-active', 'Badges') .click(); cy.contains('Test Badge') @@ -764,6 +785,7 @@ describe('Badges Tests', () => { }); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickButton('Badge'); cy.contains('New Badge'); cy.get('#badgeName') @@ -772,11 +794,9 @@ describe('Badges Tests', () => { cy.wait('@loadBadges'); cy.get('[data-cy=manageBtn_TestBadgeBadge]') .click(); - cy.get('[data-cy="skillsSelector2"]') - .click(); - cy.get('[data-cy="skillsSelector2"] .vs__dropdown-option') - .eq(0) - .click(); + cy.wait(500); + cy.wait('@loadSkills'); + cy.selectSkill(0); cy.validateTable(tableSelector, [ [{ colIndex: 0, @@ -807,6 +827,7 @@ describe('Badges Tests', () => { .should('exist'); cy.get('[data-cy=manageBtn_TestBadgeBadge]') .click(); + cy.wait(500); cy.get('[data-cy=deleteSkill_skill1]') .click(); cy.contains('YES, Delete It!') @@ -853,6 +874,7 @@ describe('Badges Tests', () => { }); cy.visit('/administrator/projects/proj1/badges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickNav('Users') .click(); cy.get('[data-cy="usersTable"]') @@ -866,6 +888,7 @@ describe('Badges Tests', () => { it('new badge button should retain focus after dialog is closed', () => { cy.visit('/administrator/projects/proj1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy=nav-Badges]') .click(); @@ -906,6 +929,7 @@ describe('Badges Tests', () => { cy.createBadge(1, 2); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="badgeCard-badge1"] [data-cy="titleLink"]') .contains('Badge 1'); @@ -943,6 +967,7 @@ describe('Badges Tests', () => { cy.createBadge(1, 2); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="badgeCard-badge1"]') .should('exist'); @@ -985,6 +1010,7 @@ describe('Badges Tests', () => { cy.createBadge(1, 2); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); // using title link cy.get('[data-cy="badgeCard-badge2"] [data-cy="titleLink"]') @@ -994,6 +1020,7 @@ describe('Badges Tests', () => { // using icon cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="badgeCard-badge2"] [data-cy="iconLink"]') .click(); cy.contains('No Skills Selected Yet'); @@ -1008,6 +1035,7 @@ describe('Badges Tests', () => { cy.createBadge(1, 5); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); const badge1Card = '[data-cy="badgeCard-badge1"] [data-cy="sortControlHandle"]'; const badge2Card = '[data-cy="badgeCard-badge2"] [data-cy="sortControlHandle"]'; @@ -1021,6 +1049,7 @@ describe('Badges Tests', () => { // refresh to make sure it was saved cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.validateElementsOrder('[data-cy="badgeCard"]', ['Badge 2', 'Badge 3', 'Badge 4', 'Badge 1', 'Badge 5']); cy.get(badge5Card) @@ -1033,6 +1062,7 @@ describe('Badges Tests', () => { // refresh to make sure it was saved cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.validateElementsOrder('[data-cy="badgeCard"]', ['Badge 5', 'Badge 3', 'Badge 4', 'Badge 1', 'Badge 2']); }); @@ -1040,12 +1070,14 @@ describe('Badges Tests', () => { cy.createBadge(1, 1); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="badgeCard-badge1"]'); cy.get('[data-cy="badgeCard-badge1"] [data-cy="sortControlHandle"]') .should('not.exist'); cy.createBadge(1, 2); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="badgeCard-badge1"]'); cy.get('[data-cy="badgeCard-badge1"] [data-cy="sortControlHandle"]'); }); @@ -1065,6 +1097,7 @@ describe('Badges Tests', () => { const badge2Card = '[data-cy="badgeCard-badge2"] [data-cy="sortControlHandle"]'; cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.validateElementsOrder('[data-cy="badgeCard"]', ['Badge 1', 'Badge 2']); cy.get(badge1Card) .dragAndDrop(badge2Card); @@ -1095,6 +1128,7 @@ describe('Badges Tests', () => { cy.assignSkillToBadge(1, 1, 2); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="badgeCard-badge1"] [data-cy="pagePreviewCardStat_# Skills"] [data-cy="statNum"]') .contains(2); @@ -1121,6 +1155,7 @@ describe('Badges Tests', () => { }); cy.visit('/administrator/projects/proj1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy=nav-Badges]') .click(); @@ -1197,6 +1232,7 @@ describe('Badges Tests', () => { } cy.visit('/administrator/projects/proj1/badges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get(`${tableSelector} th`) .contains('Skill ID') .click(); @@ -1268,6 +1304,7 @@ describe('Badges Tests', () => { } cy.visit('/administrator/projects/proj1/badges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get(`${tableSelector} th`) .contains('Skill ID') .click(); @@ -1754,6 +1791,7 @@ describe('Badges Tests', () => { } cy.visit('/administrator/projects/proj1/badges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); for (let i = 0; i < 5; i +=1) { cy.get(`[data-cy="manage_skill${i}"]`).should('exist') cy.get(`[data-cy="deleteSkill_skill${i}"]`).should('exist') @@ -1763,6 +1801,7 @@ describe('Badges Tests', () => { it('description is validated against custom validators', () => { cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadBadges'); cy.clickButton('Badge'); @@ -1790,6 +1829,7 @@ describe('Badges Tests', () => { it('name is validated against custom validators', () => { cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadBadges'); cy.clickButton('Badge'); @@ -1842,6 +1882,7 @@ describe('Badges Tests', () => { .as('loadBadgeUsers'); cy.visit('/administrator/projects/proj1/badges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadBadge1'); cy.contains('BADGE: Badge 1') .should('be.visible'); @@ -1905,6 +1946,7 @@ describe('Badges Tests', () => { cy.createBadge(1, 3, { helpUrl: 'https://www.OverrideHelpUrl.com/other/path' }); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="btn_Badges"]') .click(); cy.get('[data-cy="rootHelpUrlSetting"]') @@ -1959,6 +2001,7 @@ describe('Badges Tests', () => { value: '' }); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="btn_Badges"]') .click(); cy.get('[data-cy="skillHelpUrl"]'); @@ -1981,6 +2024,7 @@ describe('Badges Tests', () => { .as('uploadIcon'); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="btn_Badges"]') .click(); @@ -2003,6 +2047,7 @@ describe('Badges Tests', () => { // refresh and re-validate cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="badgeCard-customIconBadge"] .proj1-validiconpng'); }); @@ -2015,6 +2060,7 @@ describe('Badges Tests', () => { const badge2Card = '[data-cy="badgeCard-badge2"] [data-cy="sortControlHandle"]'; cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.validateElementsOrder('[data-cy="badgeCard"] [data-cy="titleLink"]', ['Badge 1', 'Badge 2', 'Badge 3']); // move down @@ -2043,6 +2089,7 @@ describe('Badges Tests', () => { // refresh and validate cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.validateElementsOrder('[data-cy="badgeCard"] [data-cy="titleLink"]', ['Badge 2', 'Badge 3', 'Badge 1']); cy.get('[data-cy="badgeCard-badge1"] [data-cy="sortControlHandle"]') .should('not.have.focus'); @@ -2074,6 +2121,7 @@ describe('Badges Tests', () => { cy.intercept('GET', '/admin/projects/proj1/badges') .as('getBadges'); cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getBadges'); cy.get('[data-cy="badgeCard-badge2"] [data-cy="deleteBtn"]') @@ -2094,6 +2142,7 @@ describe('Badges Tests', () => { cy.createBadge(1, 1, {description: 'Very cool project'}) cy.visit('/administrator/projects/proj1/badges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="editBtn"]').click() cy.wait('@validateDesc') cy.get('[data-cy="badgeDescriptionError"]').contains('Mocked up validation failure') @@ -2130,6 +2179,7 @@ describe('Badges Tests', () => { } cy.visit('/administrator/projects/proj1/badges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get(`${tableSelector} th`) .contains('Skill ID') .click(); @@ -2250,6 +2300,7 @@ describe('Badges Tests', () => { }); cy.visit('/administrator/projects/proj1/badges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy=statPreformatted]') .contains('Disabled') @@ -2269,6 +2320,7 @@ describe('Badges Tests', () => { }); cy.visit('/administrator/projects/proj1/badges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy=statPreformatted]') .contains('Disabled') @@ -2293,6 +2345,7 @@ describe('Badges Tests', () => { .as('loadBadge1'); cy.visit('/administrator/projects/proj1/badges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadBadge1'); cy.get('[data-cy="btn_edit-badge"]').click(); @@ -2309,6 +2362,7 @@ describe('Badges Tests', () => { .click(); cy.visit('/administrator/projects/proj1/badges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadBadge1'); cy.get('[data-cy="btn_edit-badge"]').click(); @@ -2326,6 +2380,7 @@ describe('Badges Tests', () => { .as('loadBadge1'); cy.visit('/administrator/projects/proj1/badges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadBadge1'); cy.get('[data-cy="btn_edit-badge"]').click(); @@ -2357,6 +2412,7 @@ describe('Badges Tests', () => { .as('loadBadge1'); cy.visit('/administrator/projects/proj1/badges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadBadge1'); cy.get('[data-cy="btn_edit-badge"]').click(); diff --git a/e2e-tests/cypress/e2e/community/community_proj_creation_spec.js b/e2e-tests/cypress/e2e/community/community_proj_creation_spec.js index 15f1475b08..0806041907 100644 --- a/e2e-tests/cypress/e2e/community/community_proj_creation_spec.js +++ b/e2e-tests/cypress/e2e/community/community_proj_creation_spec.js @@ -35,6 +35,7 @@ describe('Community Project Creation Tests', () => { it('create restricted community project', () => { cy.visit('/administrator') + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="newProjectButton"]').click() cy.get('[data-cy="projectName"]').type('one') cy.get('[data-cy="saveProjectButton"]').should('be.enabled') @@ -60,6 +61,7 @@ describe('Community Project Creation Tests', () => { }); }) cy.visit('/administrator') + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="newProjectButton"]').click() cy.get('[data-cy="restrictCommunityControls"]').contains('Access to Divine Dragon users only') cy.get('[data-cy="userCommunityDocsLink"] a').contains( 'User Community Docs') @@ -68,6 +70,8 @@ describe('Community Project Creation Tests', () => { it('create non-restricted community project', () => { cy.visit('/administrator') + cy.get('[data-cy="inception-button"]').contains('Level'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="newProjectButton"]').click() cy.get('[data-cy="projectName"]').type('one') cy.get('[data-cy="saveProjectButton"]').should('be.enabled') @@ -82,6 +86,7 @@ describe('Community Project Creation Tests', () => { cy.createProject(1, {enableProtectedUserCommunity: false}) cy.visit('/administrator') + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="projectCard_proj1"] [data-cy="userCommunity"]').contains('For All Dragons Nation') cy.get('[data-cy="projectCard_proj1"] [data-cy="editProjBtn"]').click() @@ -103,6 +108,7 @@ describe('Community Project Creation Tests', () => { cy.createProject(1, {enableProtectedUserCommunity: false}) cy.visit('/administrator/projects/proj1') + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="pageHeader"] [data-cy="userCommunity"]').contains('For All Dragons Nation') cy.get('[data-cy="btn_edit-project"]').click() @@ -125,6 +131,7 @@ describe('Community Project Creation Tests', () => { cy.createProject(1, {enableProtectedUserCommunity: true}) cy.visit('/administrator') + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="projectCard_proj1"] [data-cy="userCommunity"]').contains('For Divine Dragon Nation') cy.get('[data-cy="projectCard_proj1"] [data-cy="editProjBtn"]').click() @@ -134,6 +141,7 @@ describe('Community Project Creation Tests', () => { it('community validator should be selected based on the community - projection creation', () => { cy.visit('/administrator') + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="newProjectButton"]').click() cy.get('[data-cy="projectName"]').type('one') cy.get('[data-cy="markdownEditorInput"]').type('jabberwocky') @@ -165,6 +173,7 @@ describe('Community Project Creation Tests', () => { it('community validator should be selected based on the community - edit existing project', () => { cy.createProject(1, {enableProtectedUserCommunity: false, description: 'some text'}) cy.visit('/administrator') + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="projectCard_proj1"] [data-cy="editProjBtn"]').click() cy.get('[data-cy="markdownEditorInput"]') @@ -201,6 +210,7 @@ describe('Community Project Creation Tests', () => { it('community validator should be selected based on the community - edit existing project from project page', () => { cy.createProject(1, {enableProtectedUserCommunity: false, description: 'some text'}) cy.visit('/administrator/projects/proj1') + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="btn_edit-project"]').click() cy.get('[data-cy="markdownEditorInput"]') @@ -237,6 +247,7 @@ describe('Community Project Creation Tests', () => { it('edit existing community project should use community validator', () => { cy.createProject(1, {enableProtectedUserCommunity: true, description: 'some text '}) cy.visit('/administrator/') + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="projectCard_proj1"] [data-cy="editProjBtn"]').click() cy.get('[data-cy="markdownEditorInput"]') @@ -258,6 +269,7 @@ describe('Community Project Creation Tests', () => { cy.createProject(1, {enableProtectedUserCommunity: true, description: 'some text '}) cy.visit('/administrator/projects/proj1') + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="btn_edit-project"]').click() cy.get('[data-cy="markdownEditorInput"]') @@ -283,6 +295,7 @@ describe('Community Project Creation Tests', () => { cy.request('POST', `/admin/projects/proj1/users/${allDragonsUser}/roles/ROLE_PROJECT_APPROVER`); cy.visit('/administrator/') + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="projectCard_proj1"] [data-cy="editProjBtn"]').click() cy.get('[data-cy="markdownEditorInput"]') @@ -299,6 +312,7 @@ describe('Community Project Creation Tests', () => { it('attachments are not enabled on project creation when UC protection is available', () => { cy.visit('/administrator') + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="newProjectButton"]').click() cy.get('[data-cy="projectName"]').type('one') cy.get('[data-cy="saveProjectButton"]').should('be.enabled') @@ -322,6 +336,7 @@ describe('Community Project Creation Tests', () => { cy.logout(); cy.login(allDragonsUser, vars.defaultPass); cy.visit('/administrator') + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="newProjectButton"]').click() cy.get('[data-cy="restrictCommunityControls"]').should('not.exist'); cy.get(`button.attachment-button`).should('exist'); diff --git a/e2e-tests/cypress/e2e/community/community_proj_email_header_spec.js b/e2e-tests/cypress/e2e/community/community_proj_email_header_spec.js index ce436f7fc0..5ea1e589ab 100644 --- a/e2e-tests/cypress/e2e/community/community_proj_email_header_spec.js +++ b/e2e-tests/cypress/e2e/community/community_proj_email_header_spec.js @@ -546,6 +546,7 @@ describe('Community Project Email Header/Footer Tests', () => { cy.get('[data-cy="nav-Contact Admins"]').click(); cy.wait('@isRoot'); + cy.get('[data-cy="projectAdminCount"]').should('have.text', '2') cy.get('[data-cy=emailUsers_subject]') .type('Test Subject'); diff --git a/e2e-tests/cypress/e2e/contact_admins_spec.js b/e2e-tests/cypress/e2e/contact_admins_spec.js index f3518c7a4a..0ca12a66a9 100644 --- a/e2e-tests/cypress/e2e/contact_admins_spec.js +++ b/e2e-tests/cypress/e2e/contact_admins_spec.js @@ -160,6 +160,9 @@ describe('Contact Project Admins Specs', () => { .as('emailSupported'); cy.intercept('GET', '/app/userInfo/hasRole/ROLE_SUPER_DUPER_USER') .as('isRoot'); + cy.intercept('POST', '/api/validation/description') + .as('validateDescription'); + cy.intercept('POST', '/root/users/previewEmail', { statusCode: 200, @@ -173,6 +176,7 @@ describe('Contact Project Admins Specs', () => { cy.get('[data-cy="nav-Contact Admins"]') .click(); cy.wait('@isRoot'); + cy.wait(1000); cy.get('[data-cy=previewAdminEmail]') .should('be.disabled'); @@ -182,6 +186,7 @@ describe('Contact Project Admins Specs', () => { .should('be.disabled'); cy.get('[data-cy="markdownEditorInput"]') .type('Test Body'); + cy.wait('@validateDescription'); cy.get('[data-cy=previewAdminEmail]') .should('be.enabled'); cy.get('[data-cy=previewAdminEmail]') @@ -242,6 +247,8 @@ describe('Contact Project Admins Specs', () => { it('validation works correctly', () => { cy.intercept('GET', '/app/userInfo/hasRole/ROLE_SUPER_DUPER_USER') .as('isRoot'); + cy.intercept('POST', '/api/validation/description') + .as('validateDescription'); cy.intercept('POST', '/root/users/previewEmail', { statusCode: 200, @@ -255,11 +262,13 @@ describe('Contact Project Admins Specs', () => { cy.get('[data-cy="nav-Contact Admins"]') .click(); cy.wait('@isRoot'); + cy.wait(1000); cy.get('[data-cy="emailUsers-submitBtn"]').should('be.disabled'); cy.get('[data-cy="emailUsers_subject"]').type('test'); cy.get('[data-cy="emailUsers_body"]').type('test'); + cy.wait('@validateDescription'); cy.get('[data-cy="emailUsers-submitBtn"]').should('be.enabled'); cy.get('[data-cy="emailUsers_subject"]').type('jabberwocky'); @@ -272,11 +281,13 @@ describe('Contact Project Admins Specs', () => { cy.get('#emailSubjectError').should('be.empty'); cy.get('[data-cy="emailUsers_body"]').type('jabberwocky'); + cy.wait('@validateDescription'); cy.get('[data-cy="emailUsers-submitBtn"]').should('be.disabled'); cy.get('#emailBodyError').contains('paragraphs may not contain jabberwocky') cy.get('[data-cy="emailUsers_body"]').type('{selectall}{backspace}'); cy.get('[data-cy="emailUsers_body"]').type('test'); + cy.wait('@validateDescription'); cy.get('[data-cy="emailUsers-submitBtn"]').should('be.enabled'); cy.get('#emailBodyError').should('be.empty'); }); diff --git a/e2e-tests/cypress/e2e/global_badges_spec.js b/e2e-tests/cypress/e2e/global_badges_spec.js index 77cdc8e1a8..eebae9639c 100644 --- a/e2e-tests/cypress/e2e/global_badges_spec.js +++ b/e2e-tests/cypress/e2e/global_badges_spec.js @@ -27,6 +27,23 @@ describe('Global Badges Tests', () => { cy.logout(); cy.login(supervisorUser, 'password'); cy.log('completed supervisor user login'); + + Cypress.Commands.add('selectSkill', (skillsSelector='[data-cy="skillsSelectionItem-proj1-skill1"]', retry=true) => { + cy.get('[data-cy="skillsSelector2"]').as('getOptions') + .click(); + cy.get('@getOptions').then(($el) => { + cy.wait(500); + if ($el.find(skillsSelector).length > 0 && $el.find(skillsSelector).is(':visible')) { + $el.find(skillsSelector).click(); + } else if (retry) { + cy.selectSkill(skillsSelector, false);} + }) + // cy.get('@getOptions').get(skillsSelector) + // .click({force: true}); + }); + + cy.intercept('GET', '/supervisor/badges/*/skills/available?*') + .as('loadAvailableSkills'); }); it('Create badge with special chars', () => { @@ -46,6 +63,7 @@ describe('Global Badges Tests', () => { .as('checkSupervisorRole'); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getGlobalBadges'); cy.wait('@checkSupervisorRole'); @@ -78,6 +96,7 @@ describe('Global Badges Tests', () => { .as('checkSupervisorRole'); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getGlobalBadges'); cy.wait('@checkSupervisorRole'); @@ -117,6 +136,7 @@ describe('Global Badges Tests', () => { .as('customUrlValidation'); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getGlobalBadges'); cy.wait('@checkSupervisorRole'); @@ -210,6 +230,7 @@ describe('Global Badges Tests', () => { .as('deleteGlobalBadge'); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getGlobalBadges'); cy.wait('@checkSupervisorRole'); @@ -290,14 +311,13 @@ describe('Global Badges Tests', () => { .as('getAvailableLevels'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickNav('Global Badges'); cy.wait('@getBadges'); cy.get('[data-cy="manageBtn_a_badge"]') .click(); - cy.get('[data-cy="skillsSelector2"]') - .click(); - cy.get('[data-cy="skillsSelectionItem-proj2-skill1"]') - .click(); + cy.wait('@loadAvailableSkills'); + cy.selectSkill('[data-cy="skillsSelectionItem-proj2-skill1"]') cy.validateTable(tableSelector, [ [{ colIndex: 0, @@ -395,6 +415,7 @@ describe('Global Badges Tests', () => { .as('getGlobalBadges'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickNav('Global Badges'); cy.wait('@getGlobalBadges'); cy.contains('No Badges Yet'); @@ -416,6 +437,7 @@ describe('Global Badges Tests', () => { .as('getExpectedBadge'); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getGlobalBadges'); cy.wait('@checkSupervisorRole'); @@ -444,7 +466,6 @@ describe('Global Badges Tests', () => { }); it('Global Badge is disabled when created, can only be enabled once', () => { - cy.intercept('/supervisor/badges/TestBadgeBadge/skills/available?query=').as('getAvailableSkillsForGlobalBadge') cy.request('POST', '/app/projects/proj1', { projectId: 'proj1', name: 'proj1' @@ -482,6 +503,7 @@ describe('Global Badges Tests', () => { .as('getExpectedBadge'); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getGlobalBadges'); cy.wait('@checkSupervisorRole'); @@ -496,15 +518,8 @@ describe('Global Badges Tests', () => { cy.clickNav('Global Badges'); cy.contains('Manage') .click(); - cy.wait('@getAvailableSkillsForGlobalBadge') - cy.get('[data-cy="noContent"]').contains('No Skills Added Yet') - cy.wait(1000) - cy.get('[data-cy="skillsSelector2"]') - .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill1"]') - .should('be.visible'); - cy.get('[data-cy="skillsSelectionItem-proj1-skill1"]') - .click(); + cy.wait('@loadAvailableSkills'); + cy.selectSkill('[data-cy="skillsSelectionItem-proj1-skill1"]') cy.validateTable(tableSelector, [ [{ colIndex: 0, @@ -575,6 +590,7 @@ describe('Global Badges Tests', () => { .as('checkSupervisorRole'); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getGlobalBadges'); cy.wait('@checkSupervisorRole'); @@ -590,10 +606,8 @@ describe('Global Badges Tests', () => { .should('exist'); cy.contains('Manage') .click(); - cy.get('[data-cy="skillsSelector2"]') - .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill1"]') - .click(); + cy.wait('@loadAvailableSkills'); + cy.selectSkill('[data-cy="skillsSelectionItem-proj1-skill1"]') cy.validateTable(tableSelector, [ [{ colIndex: 0, @@ -690,6 +704,7 @@ describe('Global Badges Tests', () => { }); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickNav('Global Badges'); cy.wait('@getGlobalBadges'); @@ -697,7 +712,7 @@ describe('Global Badges Tests', () => { cy.clickButton('Badge'); cy.get('#badgeName') - .type('A Badge'); + .type('A Badge', { delay: 100 }) cy.wait('@nameExists'); cy.clickSave(); cy.wait('@idExists'); @@ -707,12 +722,8 @@ describe('Global Badges Tests', () => { .should('exist'); cy.contains('Manage') .click(); - - cy.wait('@availableSkills'); - cy.get('[data-cy="skillsSelector2"]') - .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill1"]') - .click(); + cy.wait('@loadAvailableSkills'); + cy.selectSkill('[data-cy="skillsSelectionItem-proj1-skill1"]') cy.validateTable(tableSelector, [ [{ colIndex: 0, @@ -774,154 +785,28 @@ describe('Global Badges Tests', () => { }); it('Removing all skills should not cause published Global Badge to become disabled', () => { - cy.intercept('GET', `/supervisor/badges`) - .as('getGlobalBadges'); - cy.intercept('PUT', `/supervisor/badges/ABadgeBadge`) - .as('postGlobalBadge'); - cy.intercept('GET', `/supervisor/badges/id/ABadgeBadge/exists`) - .as('idExists'); - cy.intercept('POST', '/supervisor/badges/name/exists') - .as('nameExists'); - //proj/subj/skill1 - cy.request('POST', '/app/projects/proj1', { - projectId: 'proj1', - name: 'proj1' - }); - cy.request('POST', '/admin/projects/proj1/subjects/subj1', { - projectId: 'proj1', - subjectId: 'subj1', - name: 'Subject 1' - }); - cy.request('POST', `/admin/projects/proj1/subjects/subj1/skills/skill1`, { - projectId: 'proj1', - subjectId: 'subj1', - skillId: 'skill1', - name: `This is 1`, - type: 'Skill', - pointIncrement: 100, - numPerformToCompletion: 5, - pointIncrementInterval: 0, - numMaxOccurrencesIncrementInterval: -1, - version: 0, - }); - //proj/subj/skill2 - cy.request('POST', '/app/projects/proj2', { - projectId: 'proj2', - name: 'proj2' - }); - cy.request('POST', '/admin/projects/proj2/subjects/subj1', { - projectId: 'proj2', - subjectId: 'subj1', - name: 'Subject 1' - }); - cy.request('POST', `/admin/projects/proj2/subjects/subj1/skills/skill1`, { - projectId: 'proj2', - subjectId: 'subj1', - skillId: 'skill1', - name: `This is 1`, - type: 'Skill', - pointIncrement: 100, - numPerformToCompletion: 5, - pointIncrementInterval: 0, - numMaxOccurrencesIncrementInterval: -1, - version: 0, - }); - - cy.intercept('GET', '/supervisor/projects/proj2/levels') - .as('getLevels'); - cy.intercept('GET', '/supervisor/badges/ABadgeBadge/projects/available*') - .as('getAvailableLevels'); + cy.createProject(1) + cy.createSubject(1, 1) + cy.createSkill(1, 1, 1) + cy.createProject(2) + cy.createSubject(2, 1) + cy.createSkill(2, 1, 1) - cy.visit('/administrator/'); - - cy.clickNav('Global Badges'); - cy.wait('@getGlobalBadges'); - - cy.clickButton('Badge'); - - cy.get('#badgeName') - .type('A Badge'); - cy.wait('@nameExists'); - cy.clickSave(); - cy.wait('@idExists'); - cy.wait('@postGlobalBadge'); + cy.createGlobalBadge(1); + cy.assignSkillToGlobalBadge(1, 1, 1); + cy.assignProjectToGlobalBadge(1, 2, 5); + cy.enableGlobalBadge(); - cy.contains('A Badge') - .should('exist'); - cy.contains('Manage') - .click(); - //wahat to wait on.... - cy.get('[data-cy="skillsSelector2"]') - .click(); - cy.get('[data-cy="skillsSelectionItem-proj2-skill1"]') - .click(); + cy.visit('/administrator/globalBadges/globalBadge1'); cy.validateTable(tableSelector, [ [{ - colIndex: 0, - value: 'proj2' - }, { - colIndex: 1, - value: 'This is 1' - }, { colIndex: 2, value: 'skill1' }], ], 5); - cy.clickNav('Levels'); - cy.wait('@getAvailableLevels'); - - cy.get('#project-selector') - .click() - .type('proj2'); - cy.wait('@getAvailableLevels'); - cy.get('[data-cy="proj2_option"]').click(); - - cy.get('#level-selector') - .click() - .type('5{enter}'); - - cy.contains('Add') - .click(); - cy.validateTable(levelsTableSelector, [ - [{ - colIndex: 0, - value: 'proj2' - }, { - colIndex: 1, - value: '5' - }], - ], 5); - - cy.contains('.router-link-active', 'Badges') - .click(); - cy.wait('@getGlobalBadges'); - - cy.contains('A Badge') - .should('exist'); - - cy.get('[data-cy=badgeStatus]') - .contains('Status: Disabled') - .should('exist'); - cy.get('[data-cy=goLive]') - .click(); - cy.contains('Please Confirm!') - .should('exist'); - cy.contains('Yes, Go Live!') - .click(); - cy.wait('@getGlobalBadges'); - cy.contains('A Badge') - .should('exist'); - cy.get('[data-cy=badgeStatus]') - .contains('Status: Live') - .should('exist'); - cy.get('[data-cy=goLive]') - .should('not.exist'); - - cy.contains('Manage') - .click(); cy.get('[data-cy=deleteSkill_skill1]') - .click(); + .click(); cy.contains('YES, Delete It!') .click(); cy.contains('No Skills Added Yet'); @@ -939,6 +824,7 @@ describe('Global Badges Tests', () => { .as('getGlobalBadges'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickNav('Global Badges'); cy.wait('@getGlobalBadges'); @@ -1010,6 +896,7 @@ describe('Global Badges Tests', () => { } cy.visit('/administrator/globalBadges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get(`${tableSelector} th`) .contains('Skill ID') @@ -1058,6 +945,7 @@ describe('Global Badges Tests', () => { } cy.visit('/administrator/globalBadges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get(`${tableSelector} th`) .contains('Skill Name') .click(); @@ -1328,6 +1216,7 @@ describe('Global Badges Tests', () => { } cy.visit('/administrator/globalBadges/badge1/levels'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get(`${levelsTableSelector} th`) .contains('Level') .click(); @@ -1517,6 +1406,7 @@ describe('Global Badges Tests', () => { } cy.visit('/administrator/globalBadges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get(`${tableSelector} th`) .contains('Skill ID') .click(); @@ -1573,6 +1463,7 @@ describe('Global Badges Tests', () => { } cy.visit('/administrator/globalBadges/badge1/levels'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get(`${levelsTableSelector} th`) .contains('Level') .click(); @@ -1625,6 +1516,7 @@ describe('Global Badges Tests', () => { .as('getGlobalBadges'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickNav('Global Badges'); cy.wait('@getGlobalBadges'); @@ -1689,6 +1581,7 @@ describe('Global Badges Tests', () => { .as('getGlobalBadges'); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getGlobalBadges'); cy.get('[data-cy="btn_Global Badges"]') @@ -1721,6 +1614,7 @@ describe('Global Badges Tests', () => { .as('getGlobalBadges'); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getGlobalBadges'); cy.get('[data-cy="btn_Global Badges"]') @@ -1814,6 +1708,7 @@ describe('Global Badges Tests', () => { .as('removeLevel'); cy.visit('/administrator/globalBadges/a_badge/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.contains('BADGE: A Badge') .should('be.visible'); @@ -1862,11 +1757,8 @@ describe('Global Badges Tests', () => { .to .eq('/administrator/globalBadges/a_new_id/'); }); - - cy.get('[data-cy="skillsSelector2"]') - .click(); - cy.get('[data-cy="skillsSelectionItem-proj2-skill1"]') - .click(); + cy.wait('@loadAvailableSkills'); + cy.selectSkill('[data-cy="skillsSelectionItem-proj2-skill1"]') cy.get('button[data-cy=deleteSkill_skill1]') .click(); cy.contains('YES, Delete It!') @@ -1905,6 +1797,7 @@ describe('Global Badges Tests', () => { cy.assignProjectToGlobalBadge(1, 1, 2); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="projectCard_proj1"] [data-cy="deleteProjBtn"]') .click(); cy.contains('Removal Safety Check'); @@ -1934,6 +1827,7 @@ describe('Global Badges Tests', () => { cy.createGlobalBadge(2); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="badgeCard-globalBadge1"]') .contains('Global Badge 1'); @@ -1961,6 +1855,7 @@ describe('Global Badges Tests', () => { cy.createGlobalBadge(2); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); // using title link cy.get('[data-cy="badgeCard-globalBadge1"] [data-cy="titleLink"]') @@ -1969,6 +1864,7 @@ describe('Global Badges Tests', () => { cy.contains('No Skills Added Yet'); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); // using icon link cy.get('[data-cy="badgeCard-globalBadge1"] [data-cy="iconLink"]') @@ -1991,6 +1887,7 @@ describe('Global Badges Tests', () => { const badge5Card = '[data-cy="badgeCard-globalBadge5"] [data-cy="sortControlHandle"]'; cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.validateElementsOrder('[data-cy="badgeCard"]', ['Badge 1', 'Badge 2', 'Badge 3', 'Badge 4', 'Badge 5']); cy.get(badge1Card) .dragAndDrop(badge4Card); @@ -1998,6 +1895,7 @@ describe('Global Badges Tests', () => { // refresh to make sure it was saved cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.validateElementsOrder('[data-cy="badgeCard"]', ['Badge 2', 'Badge 3', 'Badge 4', 'Badge 1', 'Badge 5']); cy.get(badge5Card) @@ -2010,18 +1908,21 @@ describe('Global Badges Tests', () => { // refresh to make sure it was saved cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.validateElementsOrder('[data-cy="badgeCard"]', ['Badge 5', 'Badge 3', 'Badge 4', 'Badge 1', 'Badge 2']); }); it('no drag-and-drag sort controls when there is only 1 badge', () => { cy.createGlobalBadge(1); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="badgeCard-globalBadge1"]'); cy.get('[data-cy="badgeCard-globalBadge1"] [data-cy="sortControlHandle"]') .should('not.exist'); cy.createGlobalBadge(2); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="badgeCard-globalBadge1"]'); cy.get('[data-cy="badgeCard-globalBadge1"] [data-cy="sortControlHandle"]'); }); @@ -2041,6 +1942,7 @@ describe('Global Badges Tests', () => { const badge2Card = '[data-cy="badgeCard-globalBadge2"] [data-cy="sortControlHandle"]'; cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.validateElementsOrder('[data-cy="badgeCard"]', ['Badge 1', 'Badge 2']); cy.get(badge1Card) .dragAndDrop(badge2Card); @@ -2073,6 +1975,7 @@ describe('Global Badges Tests', () => { cy.createGlobalBadge(2); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="badgeCard-globalBadge1"] [data-cy="pagePreviewCardStat_# Skills"] [data-cy="statNum"]') .contains(2); cy.get('[data-cy="badgeCard-globalBadge1"] [data-cy="pagePreviewCardStat_Projects"] [data-cy="statNum"]') @@ -2157,6 +2060,7 @@ describe('Global Badges Tests', () => { }); cy.visit('/administrator/globalBadges/badge1'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadBadgeSkills'); cy.get('[data-cy="skillsSelector"]').click(); @@ -2240,6 +2144,7 @@ describe('Global Badges Tests', () => { .as('getAvailableLevels'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickNav('Global Badges'); cy.wait('@getBadges'); cy.get('[data-cy="manageBtn_a_badge"]') @@ -2260,7 +2165,6 @@ describe('Global Badges Tests', () => { }); it('global badge details has go live button and can go live', () => { - cy.intercept('/supervisor/badges/TestBadgeBadge/skills/available?query=').as('getAvailableSkillsForGlobalBadge') cy.request('POST', '/app/projects/proj1', { projectId: 'proj1', name: 'proj1' @@ -2298,6 +2202,7 @@ describe('Global Badges Tests', () => { .as('getExpectedBadge'); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getGlobalBadges'); cy.wait('@checkSupervisorRole'); @@ -2312,15 +2217,8 @@ describe('Global Badges Tests', () => { cy.clickNav('Global Badges'); cy.contains('Manage') .click(); - cy.wait('@getAvailableSkillsForGlobalBadge') - cy.get('[data-cy="noContent"]').contains('No Skills Added Yet') - cy.wait(1000) - cy.get('[data-cy="skillsSelector2"]') - .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill1"]') - .should('be.visible'); - cy.get('[data-cy="skillsSelectionItem-proj1-skill1"]') - .click(); + cy.wait('@loadAvailableSkills'); + cy.selectSkill('[data-cy="skillsSelectionItem-proj1-skill1"]') cy.validateTable(tableSelector, [ [{ colIndex: 0, @@ -2332,6 +2230,7 @@ describe('Global Badges Tests', () => { ], 5); cy.visit('/administrator/globalBadges/TestBadgeBadge'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.contains('Test Badge') .should('exist'); @@ -2354,6 +2253,7 @@ describe('Global Badges Tests', () => { cy.createGlobalBadge(1); cy.visit('/administrator/globalBadges'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="badgeCard-globalBadge1"]') .contains('Global Badge 1'); diff --git a/e2e-tests/cypress/e2e/learning-path/learning_path_management_spec.js b/e2e-tests/cypress/e2e/learning-path/learning_path_management_spec.js index a580b4c168..c915808ab9 100644 --- a/e2e-tests/cypress/e2e/learning-path/learning_path_management_spec.js +++ b/e2e-tests/cypress/e2e/learning-path/learning_path_management_spec.js @@ -60,44 +60,44 @@ describe('Learning Path Management Validation Tests', () => { cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); // Add Skill5 as a prerequisite for Badge1 cy.get('[data-cy="learningPathFromSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill5Subj2"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill5Subj2"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); // Add Skill6 as a prerequisite for Badge2 cy.get('[data-cy="learningPathFromSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill6Subj2"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill6Subj2"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); // Add Skill7 as a prerequisite for Skill5 cy.get('[data-cy="learningPathFromSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill7Subj2"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill7Subj2"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill5Subj2"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill5Subj2"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); // Add Skill8 as a prerequisite for Badge1 cy.get('[data-cy="learningPathFromSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill8Subj2"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill8Subj2"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); cy.wait(1000); @@ -208,7 +208,7 @@ describe('Learning Path Management Validation Tests', () => { cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); cy.wait('@badge1ToBadge2') @@ -216,40 +216,40 @@ describe('Learning Path Management Validation Tests', () => { cy.get('[data-cy="learningPathFromSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill5Subj2"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill5Subj2"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); cy.wait('@skill1ToBadge1') // Add Skill6 as a prerequisite for Badge2 cy.get('[data-cy="learningPathFromSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill6Subj2"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill6Subj2"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); cy.wait('@skill6ToBadge2') // Add Skill7 as a prerequisite for Skill5 cy.get('[data-cy="learningPathFromSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill7Subj2"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill7Subj2"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill5Subj2"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill5Subj2"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); cy.wait('@skill7ToSkill5') // Add Skill8 as a prerequisite for Badge1 cy.get('[data-cy="learningPathFromSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill8Subj2"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill8Subj2"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); cy.wait('@skill8ToBadge1') @@ -341,7 +341,7 @@ describe('Learning Path Management Validation Tests', () => { cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); cy.clickOnNode(360, 200); @@ -360,7 +360,7 @@ describe('Learning Path Management Validation Tests', () => { cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); cy.clickOnNode(360, 300); @@ -368,7 +368,7 @@ describe('Learning Path Management Validation Tests', () => { cy.get('[data-cy="learningPathToSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); cy.get('[data-cy="learningPathError"]').contains('Badge 1 already exists in the learning path and adding it again will cause a circular/infinite learning path') @@ -387,7 +387,7 @@ describe('Learning Path Management Validation Tests', () => { cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]') .click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); cy.clickOnNode(340, 250); @@ -403,13 +403,13 @@ describe('Learning Path Management Validation Tests', () => { .click(); cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); cy.get('[data-cy="learningPathFromSkillSelector"]').contains('Badge 1'); cy.get('[data-cy="learningPathToSkillSelector"]').contains('Badge 2'); cy.get('[data-cy="learningPathFromSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill5Subj2"]').first().click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill5Subj2"]').first().click(); cy.get('[data-cy="learningPathFromSkillSelector"]').contains('Very Great Skill 5 Subj2'); cy.get('[data-cy="learningPathToSkillSelector"]').should('have.value', ''); @@ -420,21 +420,21 @@ describe('Learning Path Management Validation Tests', () => { // Add Badge1 as a prerequisite for Badge2 cy.get('[data-cy="learningPathFromSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); cy.get('[data-cy="learningPathFromSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').should('be.disabled') cy.get('[data-cy="learningPathError"]').contains('Badge 1 already exists in the learning path and adding it again will cause a circular/infinite learning path') cy.get('[data-cy="learningPathFromSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill5Subj2"]').first().click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill5Subj2"]').first().click(); cy.get('[data-cy="learningPathError"]').should('not.exist') }) @@ -446,13 +446,13 @@ describe('Learning Path Management Validation Tests', () => { cy.get('[data-cy="learningPathFromSkillSelector"]').click(); cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); cy.get('[data-cy="addLearningPathItemBtn"]').click(); cy.get('[data-cy="learningPathFromSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge2"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge1"]').first().click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge1"]').first().click(); cy.get('[data-cy="addLearningPathItemBtn"]').should('be.disabled') cy.get('[data-cy="learningPathError"]').contains('Badge 1 already exists in the learning path and adding it again will cause a circular/infinite learning path') diff --git a/e2e-tests/cypress/e2e/learning-path/learning_path_management_validation_spec.js b/e2e-tests/cypress/e2e/learning-path/learning_path_management_validation_spec.js index 8e03f33950..4ec4b7c3bd 100644 --- a/e2e-tests/cypress/e2e/learning-path/learning_path_management_validation_spec.js +++ b/e2e-tests/cypress/e2e/learning-path/learning_path_management_validation_spec.js @@ -32,12 +32,12 @@ describe('Learning Path Management Validation Tests', () => { cy.get('[data-cy="learningPathFromSkillSelector"]').click(); cy.get('[data-cy="skillsSelectionItem-proj1-skill3"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill1"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill1"]').click(); cy.get('[data-cy="learningPathError"]').contains('Very Great Skill 1 already exists in the learning path and adding it again will cause a circular/infinite learning path') cy.get('[data-cy="addLearningPathItemBtn"]').should('be.disabled') cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill4"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill4"]').click(); cy.get('[data-cy="learningPathError"]').should('not.exist') cy.get('[data-cy="addLearningPathItemBtn"]').should('be.enabled') }) @@ -78,9 +78,9 @@ describe('Learning Path Management Validation Tests', () => { cy.visit('/administrator/projects/proj1/learning-path') cy.get('[data-cy="learningPathFromSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill9"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill9"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill11"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill11"]').click(); cy.get('[data-cy="learningPathError"]').contains('Very Great Skill 11 already exists in the learning path under the badge Badge 1 and adding it again will cause a circular/infinite learning path') cy.get('[data-cy="addLearningPathItemBtn"]').should('be.disabled') }); @@ -90,9 +90,9 @@ describe('Learning Path Management Validation Tests', () => { cy.visit('/administrator/projects/proj1/learning-path') cy.get('[data-cy="learningPathFromSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill2"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill2"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill1"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill1"]').click(); cy.get('[data-cy="learningPathError"]').contains('Very Great Skill 1 already exists in the learning path and adding it again will cause a circular/infinite learning path') cy.get('[data-cy="addLearningPathItemBtn"]').should('be.disabled') @@ -100,7 +100,7 @@ describe('Learning Path Management Validation Tests', () => { cy.get('[data-cy="learningPathError"]').should('not.exist') cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill1"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill1"]').click(); cy.get('[data-cy="learningPathError"]').contains('Very Great Skill 1 already exists in the learning path and adding it again will cause a circular/infinite learning path') cy.get('[data-cy="addLearningPathItemBtn"]').should('be.disabled') @@ -150,9 +150,9 @@ describe('Learning Path Management Validation Tests', () => { cy.visit('/administrator/projects/proj1/learning-path') cy.get('[data-cy="learningPathFromSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill9"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill9"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge3"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge3"]').click(); cy.get('[data-cy="learningPathError"]').contains('Multiple badges on the same Learning path cannot have overlapping skills. Both Badge 1 badge and Badge 3 badge have Very Great Skill 12 skill') cy.get('[data-cy="addLearningPathItemBtn"]').should('be.disabled') }); @@ -199,9 +199,9 @@ describe('Learning Path Management Validation Tests', () => { cy.visit('/administrator/projects/proj1/learning-path') cy.get('[data-cy="learningPathFromSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill9"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill9"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-badge3"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-badge3"]').click(); cy.get('[data-cy="learningPathError"]').contains('Provided badge Badge 3 has skill Very Great Skill 2 which already exists on the learning path') cy.get('[data-cy="addLearningPathItemBtn"]').should('be.disabled') }); @@ -213,9 +213,9 @@ describe('Learning Path Management Validation Tests', () => { cy.visit('/administrator/projects/proj1/learning-path') cy.get('[data-cy="learningPathFromSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill1"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill1"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill2"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill2"]').click(); cy.get('[data-cy="learningPathError"]').contains('Learning path from Very Great Skill 1 to Very Great Skill 2 already exists') cy.get('[data-cy="addLearningPathItemBtn"]').should('be.disabled') }) @@ -225,9 +225,9 @@ describe('Learning Path Management Validation Tests', () => { cy.visit('/administrator/projects/proj1/learning-path') cy.get('[data-cy="learningPathFromSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill2"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill2"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill1"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill1"]').click(); cy.get('[data-cy="learningPathError"]').contains('Skill Very Great Skill 1 was exported to the Skills Catalog. A skill in the catalog cannot have prerequisites on the learning path') cy.get('[data-cy="addLearningPathItemBtn"]').should('be.disabled') }) @@ -238,9 +238,9 @@ describe('Learning Path Management Validation Tests', () => { cy.visit('/administrator/projects/proj1/learning-path') cy.get('[data-cy="learningPathFromSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill2"]').click(); + cy.get('[data-cy="learningPathFromSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill2"]').click(); cy.get('[data-cy="learningPathToSkillSelector"]').click(); - cy.get('[data-cy="skillsSelectionItem-proj1-skill1"]').click(); + cy.get('[data-cy="learningPathToSkillSelector"]').find('[data-cy="skillsSelectionItem-proj1-skill1"]').click(); cy.get('[data-cy="learningPathError"]').contains('Skill Very Great Skill 1 was reused in another subject or group and cannot have prerequisites in the learning path') cy.get('[data-cy="addLearningPathItemBtn"]').should('be.disabled') }) @@ -260,5 +260,4 @@ describe('Learning Path Management Validation Tests', () => { cy.get('[data-cy="learningPathTable"] [data-cy="skillsBTableTotalRows"]').should('have.text', '1') }); - }); diff --git a/e2e-tests/cypress/e2e/manage-my-projects_spec.js b/e2e-tests/cypress/e2e/manage-my-projects_spec.js index abe84edf2e..62414b317d 100644 --- a/e2e-tests/cypress/e2e/manage-my-projects_spec.js +++ b/e2e-tests/cypress/e2e/manage-my-projects_spec.js @@ -374,8 +374,14 @@ describe('Manage My Projects Tests', () => { cy.enableProdMode(1); cy.enableProdMode(2); + cy.intercept('GET', '/app/projects/Inception/users/*/token').as('getToken'); + cy.intercept('GET', '/api/availableForMyProjects').as('loadMyProjects'); + cy.visit('/progress-and-rankings/manage-my-projects'); + cy.wait('@getToken'); + cy.wait('@loadMyProjects'); + cy.get('[data-cy="searchInput"]') .type('dljlajd'); cy.get('[data-cy="projectsTableTotalRows"]') diff --git a/e2e-tests/cypress/e2e/projects_modal_management_spec.js b/e2e-tests/cypress/e2e/projects_modal_management_spec.js index d274721524..c216a8c014 100644 --- a/e2e-tests/cypress/e2e/projects_modal_management_spec.js +++ b/e2e-tests/cypress/e2e/projects_modal_management_spec.js @@ -45,6 +45,7 @@ describe('Projects Modal Management Tests', () => { .as('loadUserInfo'); cy.visit('/administrator/'); cy.wait('@loadUserInfo'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy=deleteProjBtn]') .eq(0) .click(); @@ -65,6 +66,7 @@ describe('Projects Modal Management Tests', () => { cy.visit('/administrator/'); cy.wait('@loadUserInfo'); cy.wait('@loadProjects'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy="noContent"]').contains('No Projects Yet'); cy.get('[data-cy=newProjectButton]').should('be.enabled') cy.get('[data-cy=newProjectButton]') @@ -92,6 +94,7 @@ describe('Projects Modal Management Tests', () => { cy.visit('/administrator/'); cy.wait('@loadUserInfo'); cy.wait('@loadProjects'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickButton('Project'); cy.get('[data-cy="projectName"]') @@ -128,6 +131,7 @@ describe('Projects Modal Management Tests', () => { cy.visit('/administrator/'); cy.wait('@loadUserInfo'); cy.wait('@loadProjects'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickButton('Project'); cy.get('[data-cy=closeProjectButton]') @@ -152,6 +156,7 @@ describe('Projects Modal Management Tests', () => { cy.visit('/administrator/'); cy.wait('@loadUserInfo'); cy.wait('@loadProjects'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickButton('Project'); cy.get('[data-cy="projectName"]') .type(providedName); @@ -172,9 +177,9 @@ describe('Projects Modal Management Tests', () => { cy.visit('/administrator/'); cy.wait('@loadUserInfo'); cy.wait('@loadProjects'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickButton('Project'); - ; cy.get('[data-cy="projectName"]') .type('InitValue'); cy.getIdField() @@ -196,6 +201,7 @@ describe('Projects Modal Management Tests', () => { it('focus should be returned to new project button', () => { cy.visit('/administrator'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.get('[data-cy=newProjectButton]') .click(); cy.contains('New Project').should('be.visible'); @@ -238,6 +244,7 @@ describe('Projects Modal Management Tests', () => { name: 'proj2' }); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); const proj1EditBtn = '[data-cy="projectCard_proj1"] [data-cy="editProjBtn"]'; cy.get(proj1EditBtn) @@ -289,6 +296,7 @@ describe('Projects Modal Management Tests', () => { cy.visit('/administrator/projects/MyNewtestProject/'); cy.wait('@loadProject'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.contains('Levels') .click(); @@ -373,57 +381,24 @@ describe('Projects Modal Management Tests', () => { }); it('project users input field submits on enter', () => { - cy.request('POST', '/app/projects/my_project_123', { - projectId: 'my_project_123', - name: 'My Project 123' - }); - - cy.request('POST', '/admin/projects/my_project_123/subjects/subj1', { - projectId: 'my_project_123', - subjectId: 'subj1', - name: 'Subject 1' - }); - cy.request('POST', `/admin/projects/my_project_123/subjects/subj1/skills/skill1`, { - projectId: 'my_project_123', - subjectId: 'subj1', - skillId: 'skill1', - name: `This is 1`, - type: 'Skill', - pointIncrement: 100, - numPerformToCompletion: 10, - pointIncrementInterval: 0, - numMaxOccurrencesIncrementInterval: -1, - version: 0, - }); - + cy.createProject(1) + cy.createSubject(1, 1) + cy.createSkill(1, 1, 1) const now = dayjs(); - cy.reportSkill('my_project_123', 1, 'user1@skills.org', now.subtract(1, 'year') + cy.reportSkill('proj1', 1, 'user1@skills.org', now.subtract(1, 'year') .format('YYYY-MM-DD HH:mm'), false); - cy.reportSkill('my_project_123', 1, 'user2@skills.org', now.subtract(1, 'year') + cy.reportSkill('proj1', 1, 'user2@skills.org', now.subtract(1, 'year') .format('YYYY-MM-DD HH:mm'), false); - cy.reportSkill('my_project_123', 1, 'user3@skills.org', now.subtract(1, 'year') + cy.reportSkill('proj1', 1, 'user3@skills.org', now.subtract(1, 'year') .format('YYYY-MM-DD HH:mm'), false); cy.reportSkill('my_project_123', 1, 'user4@skills.org', now.subtract(1, 'year') .format('YYYY-MM-DD HH:mm'), false); - cy.intercept('GET', '/admin/projects/my_project_123') - .as('loadProj'); - cy.intercept('GET', '/api/projects/Inception/level') - .as('loadInception'); - cy.intercept('GET', '/admin/projects/my_project_123/users**') - .as('loadUsers'); - cy.visit('/administrator/projects/my_project_123'); - cy.wait('@loadProj'); - cy.wait('@loadInception'); - cy.get('[data-cy=nav-Users]') - .click(); - cy.wait('@loadUsers'); - cy.get('[data-cy=usersTable_viewDetailsBtn]') - .should('have.length', 4); + cy.visit('/administrator/projects/proj1/users'); + cy.get('[data-cy="skillsBTableTotalRows"]').should('have.text', '3'); + cy.get('[data-cy=users-skillIdFilter]').should('be.visible') cy.get('[data-cy=users-skillIdFilter]') .type('user1{enter}'); - cy.wait('@loadUsers'); - cy.get('[data-cy=usersTable_viewDetailsBtn]') - .should('have.length', 1); + cy.get('[data-cy="skillsBTableTotalRows"]').should('have.text', '1'); }); }); \ No newline at end of file diff --git a/e2e-tests/cypress/e2e/quiz/quiz_creation_and_management_spec.js b/e2e-tests/cypress/e2e/quiz/quiz_creation_and_management_spec.js index 09594fb396..1199d2ca31 100644 --- a/e2e-tests/cypress/e2e/quiz/quiz_creation_and_management_spec.js +++ b/e2e-tests/cypress/e2e/quiz/quiz_creation_and_management_spec.js @@ -382,7 +382,7 @@ describe('Quiz CRUD Tests', () => { cy.visit('/administrator/quizzes') cy.get('[data-cy="btn_Quizzes And Surveys"]').click() - cy.get('[data-cy="quizName"]').type(providedName) + cy.get('[data-cy="quizName"]').type(providedName, { delay: 100 }) cy.get('[data-cy="idInputValue"]').should('have.value', expectedId) cy.get('[data-cy="saveQuizButton"]').click() @@ -391,7 +391,7 @@ describe('Quiz CRUD Tests', () => { // id is not derived from name during edit cy.get(`[data-cy="editQuizButton_${expectedId}"]`).click() cy.get('[data-cy="idInputValue"]').should('have.value', expectedId) - cy.get('[data-cy="quizName"]').type('More') + cy.get('[data-cy="quizName"]').type('More', { delay: 100 }) cy.get('[data-cy="idInputValue"]').should('have.value', expectedId) }); diff --git a/e2e-tests/cypress/e2e/settings_spec.js b/e2e-tests/cypress/e2e/settings_spec.js index 317f698908..755484e2c8 100644 --- a/e2e-tests/cypress/e2e/settings_spec.js +++ b/e2e-tests/cypress/e2e/settings_spec.js @@ -282,6 +282,7 @@ describe('Settings Tests', () => { .as('checkRoot'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadConfig'); cy.wait('@loadUserInfo'); cy.wait('@loadProjects'); @@ -328,6 +329,7 @@ describe('Settings Tests', () => { .as('checkRoot'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getProjects') cy.get('#projectCards') cy.get('[data-cy="settings-button"] button') @@ -399,6 +401,7 @@ describe('Settings Tests', () => { .as('checkRoot'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getProjects') cy.get('#projectCards') cy.get('[data-cy=subPageHeader]') @@ -546,6 +549,7 @@ describe('Settings Tests', () => { .as('checkRoot'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getProjects') cy.get('#projectCards') cy.get('[data-cy=subPageHeader]') @@ -606,6 +610,7 @@ describe('Settings Tests', () => { .as('checkRoot'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@getProjects') cy.get('#projectCards') @@ -638,6 +643,7 @@ describe('Settings Tests', () => { cy.intercept('GET', '/app/userInfo') .as('loadUserInfo'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadUserInfo'); cy.wait('@getProjects') cy.get('#projectCards') @@ -749,6 +755,7 @@ describe('Settings Tests', () => { cy.intercept('GET', '/app/userInfo') .as('loadUserInfo'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadUserInfo'); cy.wait('@getProjects') cy.get('#projectCards') @@ -787,6 +794,7 @@ describe('Settings Tests', () => { cy.intercept('GET', '/public/config') .as('loadConfig'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadUserInfo'); cy.wait('@getProjects') cy.get('#projectCards') @@ -844,6 +852,7 @@ describe('Settings Tests', () => { .as('loadSystemSettings'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadUserInfo'); cy.wait('@getProjects') cy.get('#projectCards') @@ -886,6 +895,7 @@ describe('Settings Tests', () => { .should('have.value', 'foo@skilltree.madeup'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadUserInfo'); cy.wait('@getProjects') cy.get('#projectCards') @@ -931,6 +941,7 @@ describe('Settings Tests', () => { cy.intercept('GET', '/public/config') .as('loadConfig'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadUserInfo'); cy.wait('@getProjects') cy.get('#projectCards') @@ -974,6 +985,7 @@ describe('Settings Tests', () => { cy.intercept('GET', '/public/config') .as('loadConfig'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadUserInfo'); cy.wait('@getProjects') cy.get('#projectCards') @@ -1028,6 +1040,8 @@ describe('Settings Tests', () => { cy.intercept('GET', '/public/config') .as('loadConfig'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadUserInfo'); cy.wait('@getProjects') cy.get('#projectCards') @@ -1078,6 +1092,8 @@ describe('Settings Tests', () => { cy.intercept('GET', '/public/config') .as('loadConfig'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadUserInfo'); cy.wait('@getProjects') cy.get('#projectCards') @@ -1157,6 +1173,8 @@ describe('Settings Tests', () => { cy.intercept('GET', '/public/config') .as('loadConfig'); cy.visit('/administrator/'); + cy.get('[data-cy="inception-button"]').contains('Level'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.wait('@loadUserInfo'); cy.wait('@getProjects') cy.get('#projectCards') @@ -1624,6 +1642,7 @@ describe('Settings Tests', () => { }); cy.visit('/administrator/projects/proj1/'); + cy.get('[data-cy="inception-button"]').contains('Level'); cy.clickNav('Settings'); cy.get('[data-cy="customLabelsSwitch"') .click({ force: true }); diff --git a/e2e-tests/cypress/e2e/skills-display-integration_spec.js b/e2e-tests/cypress/e2e/skills-display-integration_spec.js index f81cd9b83a..e930d3c954 100644 --- a/e2e-tests/cypress/e2e/skills-display-integration_spec.js +++ b/e2e-tests/cypress/e2e/skills-display-integration_spec.js @@ -59,71 +59,76 @@ describe('Navigation Tests', () => { .should('not.exist'); }); - it('Browser back button works in Skills Display', function () { - cy.createSkill(1, 1, 1); - cy.createSkill(1, 1, 2); - cy.createSkill(1, 1, 3); - cy.createSkill(1, 1, 4); - - cy.intercept('GET', '/api/projects/proj1/pointHistory*') - .as('pointHistoryChart'); - - cy.visit('/'); - - cy.get('[data-cy=inception-button]') - .should('not.exist'); - - cy.get('[data-cy=project-link-proj1]') - .click(); - cy.wait('@pointHistoryChart'); - cy.dashboardCd() - .contains('Overall Points'); - cy.dashboardCd() - .contains('Earn up to 800 points'); - - cy.get('[data-cy="breadcrumb-Progress And Rankings"]') - .should('be.visible'); - cy.get('[data-cy=breadcrumb-proj1]') - .should('be.visible'); - cy.get('[data-cy=breadcrumb-projects]') - .should('not.exist'); - - cy.dashboardCd() - .find('[data-cy=back]') - .should('not.exist'); - cy.dashboardCd() - .contains('PROJECT: This is project 1'); - - // to subject page - cy.dashboardCdClickSubj(0, 'Subject 1'); - - // navigate to Rank Overview and that it does NOT contains the internal back button - cy.dashboardCd() - .find('[data-cy=myRank]') - .click(); - cy.dashboardCd() - .contains('My Rank'); - cy.dashboardCd() - .find('[data-cy=back]') - .should('not.exist'); - - // click the browser back button and verify that we are still in the - // client display (Subject page) - cy.go('back'); // browser back button - cy.dashboardCd() - .contains('Subject 1'); - - // then back one more time and we should be back on the client display home page - cy.go('back'); // browser back button - cy.dashboardCd() - .contains('PROJECT: This is project 1'); - - // finally back one more time and we should be back on the my progress page - cy.go('back'); // browser back button - cy.get('[data-cy="breadcrumb-Progress And Rankings"]') - .contains('Progress And Rankings') - .should('be.visible'); - }); - + if (!Cypress.env('oauthMode')) { + it('Browser back button works in Skills Display', function () { + cy.createSkill(1, 1, 1); + cy.createSkill(1, 1, 2); + cy.createSkill(1, 1, 3); + cy.createSkill(1, 1, 4); + + cy.intercept('GET', '/api/projects/proj1/pointHistory*') + .as('pointHistoryChart'); + + cy.visit('/'); + + cy.get('[data-cy=inception-button]') + .should('not.exist'); + + cy.get('[data-cy=project-link-proj1]') + .click(); + cy.wait('@pointHistoryChart'); + cy.dashboardCd() + .contains('Overall Points'); + cy.dashboardCd() + .contains('Earn up to 800 points'); + + cy.get('[data-cy="breadcrumb-Progress And Rankings"]') + .should('be.visible'); + cy.get('[data-cy=breadcrumb-proj1]') + .should('be.visible'); + cy.get('[data-cy=breadcrumb-projects]') + .should('not.exist'); + + cy.dashboardCd() + .find('[data-cy=back]') + .should('not.exist'); + cy.dashboardCd() + .contains('PROJECT: This is project 1'); + + // to subject page + cy.dashboardCdClickSubj(0, 'Subject 1'); + cy.wait(1000); + + // navigate to Rank Overview and that it does NOT contains the internal back button + cy.dashboardCd() + .find('[data-cy=myRank]') + .click(); + cy.dashboardCd() + .contains('My Rank'); + cy.dashboardCd() + .find('[data-cy=back]') + .should('not.exist'); + + // click the browser back button and verify that we are still in the + // client display (Subject page) + cy.go('back'); // browser back button + cy.wait(1000); + cy.dashboardCd() + .contains('Subject 1'); + + // then back one more time and we should be back on the client display home page + cy.go('back'); // browser back button + cy.wait(1000); + cy.dashboardCd() + .contains('PROJECT: This is project 1'); + + // finally back one more time and we should be back on the my progress page + cy.go('back'); // browser back button + cy.wait(1000); + cy.get('[data-cy="breadcrumb-Progress And Rankings"]') + .contains('Progress And Rankings') + .should('be.visible'); + }); + } }); diff --git a/e2e-tests/cypress/e2e/users_spec.js b/e2e-tests/cypress/e2e/users_spec.js index 0715f3e3d3..46be8aa6ac 100644 --- a/e2e-tests/cypress/e2e/users_spec.js +++ b/e2e-tests/cypress/e2e/users_spec.js @@ -320,7 +320,7 @@ describe('Users Tests', () => { cy.validateTable(tableSelector, [ [{colIndex: 0, value: 'skills@evoforge.org (Tree, Skill)'}], [{colIndex: 0, value: 'skills@evo-forge.org (Tree, Skill)'}], - [{colIndex: 0, value: 'foo-hydra'}] + [{colIndex: 0, value: 'foo'}] // OAuth2UserConverterService truncates after the hyphen ], 5); }); diff --git a/e2e-tests/cypress/e2e/video/configure_video_features_spec.js b/e2e-tests/cypress/e2e/video/configure_video_features_spec.js index 3416bf2b00..7e040bfdb2 100644 --- a/e2e-tests/cypress/e2e/video/configure_video_features_spec.js +++ b/e2e-tests/cypress/e2e/video/configure_video_features_spec.js @@ -259,7 +259,7 @@ describe('Configure Video and SkillTree Features Tests', () => { res.send(conf); }); }).as('loadConfig'); - cy.visit('/administrator'); + cy.visitAdmin(); cy.wait('@loadConfig') cy.get('[data-cy="newProjectButton"]').click() diff --git a/e2e-tests/cypress/support/commands.js b/e2e-tests/cypress/support/commands.js index 574925a81f..6e40cf7a88 100644 --- a/e2e-tests/cypress/support/commands.js +++ b/e2e-tests/cypress/support/commands.js @@ -1417,4 +1417,9 @@ Cypress.Commands.add('expireSkills', () => { cy.logout(); cy.loginAsAdminUser(); -}); \ No newline at end of file +}); + +Cypress.Commands.add('visitAdmin', () => { + cy.visit('/administrator'); + cy.get('[data-cy="inception-button"]').contains('Level'); +}); diff --git a/e2e-tests/package.json b/e2e-tests/package.json index 7cd79ebbe0..2381e34d40 100644 --- a/e2e-tests/package.json +++ b/e2e-tests/package.json @@ -79,12 +79,12 @@ "@bahmutov/print-env": "2.1.2", "axe-core": "4.4.3", "badge-maker": "3.3.1", - "cypress": "13.3.2", + "cypress": "13.6.1", "cypress-audit": "1.1.0", "cypress-axe": "1.5.0", "cypress-file-upload": "5.0.8", "cypress-plugin-tab": "1.0.5", - "cypress-real-events": "1.10.3", + "cypress-real-events": "1.11.0", "cypress-visual-regression": "3.0.0", "cypress-wait-until": "1.7.2", "dayjs": "1.10.4",