diff --git a/cypress/e2e/filterFunnel.cy.js b/cypress/e2e/filterFunnel.cy.js index 2aa91d7..a96122d 100644 --- a/cypress/e2e/filterFunnel.cy.js +++ b/cypress/e2e/filterFunnel.cy.js @@ -95,7 +95,46 @@ describe('Save Log and Filter', ()=>{ // }); // }); - it('Sequence, End', () => { + // it('Sequence, End', () => { + // // select radio + // cy.get('input#Sequence0').should('be.checked'); // 選取 Radio 'Sequence' + // cy.contains('label', 'Start activity / End activity') // 選取 Radio 'Have activity(s)' + // .prev(2) + // .find('input') + // .should('have.attr', 'type', 'radio') // select the previous element + // .check({ force: true }) + // .should('be.checked'); // confirm it's type radio (optional) + // cy.get('input#End1').check({ force: true }); + + // // No selected. + // cy.contains('button', 'Apply').click(); + // cy.get('.v-toast__text').should('contain', 'Not selected'); + // cy.wait(3000); + + // // Clear selected item. + // cy.get('table tr:nth-child(1) input[type="radio"]').check({force: true}); // 選取第一個 + // cy.contains('button', 'Clear').click(); + // cy.get('table tr:nth-child(1) input[type="radio"]').should('not.be.checked') + // cy.wait(3000); + + // // selected item + // cy.get('table tr:nth-child(2) input[type="radio"]').check({force: true}); + // cy.contains('button', 'Apply').click(); + // cy.get('#tabFunnel').click(); + // cy.contains('p', 'Sequence'); + // cy.contains('span', 'End'); + // cy.contains('button', 'Apply All').click(); + + // // make sure create map again. + // cy.get('header').click(); + // cy.get('#iconState').click(); + // cy.get('li').first().then($li => { // then() 獲取
  • 元素的內容 + // const percentage = $li.find('span').eq(1).text(); // li 底下找到第二個 span + // expect(percentage).not.to.equal('100%'); // text !== 100% 來判斷數據是否有變化 + // }); + // }); + + it('Sequence, Start & End', () => { // select radio cy.get('input#Sequence0').should('be.checked'); // 選取 Radio 'Sequence' cy.contains('label', 'Start activity / End activity') // 選取 Radio 'Have activity(s)' @@ -104,25 +143,43 @@ describe('Save Log and Filter', ()=>{ .should('have.attr', 'type', 'radio') // select the previous element .check({ force: true }) .should('be.checked'); // confirm it's type radio (optional) - cy.get('input#End1').check({ force: true }); + cy.get('input[id="Start & End2"]').check({ force: true }); // No selected. cy.contains('button', 'Apply').click(); - cy.get('.v-toast__text').should('contain', 'Not selected'); + cy.get('.v-toast__text').should('contain', 'Both Start and End must be selected'); cy.wait(3000); + // 選取 "start" 的 + cy.contains('p', 'Start activity') + .parents('div') // 回到 p 的父層 div + .eq(1) // 同階層的第二個 div + .find('table') // 向下找 table + .as('startTable'); // 將選取的元素命名,使用 @startTable 來操作 + // 選取 "end" 的
    + cy.contains('p', 'End activity') + .parents('div') + .eq(1) + .find('table') + .as('endTable'); // 使用 @endTable 來操作 + // Clear selected item. - cy.get('table tr:nth-child(1) input[type="radio"]').check({force: true}); // 選取第一個 + cy.get('@startTable').find('tr:nth-child(1) input[type="radio"]').check({ force: true }); + cy.get('@endTable').find('tr:nth-child(1) input[type="radio"]').check({ force: true }); cy.contains('button', 'Clear').click(); - cy.get('table tr:nth-child(1) input[type="radio"]').should('not.be.checked') + cy.get('@startTable').find('tr:nth-child(1) input[type="radio"]').should('not.be.checked'); + cy.get('@endTable').find('tr:nth-child(1) input[type="radio"]').should('not.be.checked'); cy.wait(3000); // selected item - cy.get('table tr:nth-child(2) input[type="radio"]').check({force: true}); + cy.get('@startTable').find('tr:nth-child(1) input[type="radio"]').check({ force: true }); + cy.get('@endTable').find('tr:nth-child(1) input[type="radio"]').check({ force: true }); cy.contains('button', 'Apply').click(); cy.get('#tabFunnel').click(); cy.contains('p', 'Sequence'); - cy.contains('span', 'End'); + cy.contains('span', 'Start') + .parent() + .contains('span', 'End'); // 斷言 text 是否包含 Start 和 End. cy.contains('button', 'Apply All').click(); // make sure create map again. diff --git a/package-lock.json b/package-lock.json index 013fe7f..8541828 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ "@vue/eslint-config-prettier": "^7.0.0", "@vue/test-utils": "^2.2.6", "autoprefixer": "^10.4.13", - "cypress": "^12.0.2", + "cypress": "^12.13.0", "eslint": "^8.22.0", "eslint-plugin-cypress": "^2.12.1", "eslint-plugin-vue": "^9.3.0", @@ -1989,9 +1989,9 @@ } }, "node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, "engines": { "node": ">= 6" @@ -2102,9 +2102,9 @@ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" }, "node_modules/cypress": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.2.0.tgz", - "integrity": "sha512-kvl95ri95KK8mAy++tEU/wUgzAOMiIciZSL97LQvnOinb532m7dGvwN0mDSIGbOd71RREtmT9o4h088RjK5pKw==", + "version": "12.13.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.13.0.tgz", + "integrity": "sha512-QJlSmdPk+53Zhy69woJMySZQJoWfEWun3X5OOenGsXjRPVfByVTHorxNehbzhZrEzH9RDUDqVcck0ahtlS+N/Q==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -2122,10 +2122,10 @@ "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", "cli-table3": "~0.6.1", - "commander": "^5.1.0", + "commander": "^6.2.1", "common-tags": "^1.8.0", "dayjs": "^1.10.4", - "debug": "^4.3.2", + "debug": "^4.3.4", "enquirer": "^2.3.6", "eventemitter2": "6.4.7", "execa": "4.1.0", @@ -2140,7 +2140,7 @@ "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", - "minimist": "^1.2.6", + "minimist": "^1.2.8", "ospath": "^1.2.2", "pretty-bytes": "^5.6.0", "proxy-from-env": "1.0.0", @@ -4342,9 +4342,9 @@ } }, "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7929,9 +7929,9 @@ } }, "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, "common-tags": { @@ -8017,9 +8017,9 @@ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" }, "cypress": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.2.0.tgz", - "integrity": "sha512-kvl95ri95KK8mAy++tEU/wUgzAOMiIciZSL97LQvnOinb532m7dGvwN0mDSIGbOd71RREtmT9o4h088RjK5pKw==", + "version": "12.13.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.13.0.tgz", + "integrity": "sha512-QJlSmdPk+53Zhy69woJMySZQJoWfEWun3X5OOenGsXjRPVfByVTHorxNehbzhZrEzH9RDUDqVcck0ahtlS+N/Q==", "dev": true, "requires": { "@cypress/request": "^2.88.10", @@ -8036,10 +8036,10 @@ "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", "cli-table3": "~0.6.1", - "commander": "^5.1.0", + "commander": "^6.2.1", "common-tags": "^1.8.0", "dayjs": "^1.10.4", - "debug": "^4.3.2", + "debug": "^4.3.4", "enquirer": "^2.3.6", "eventemitter2": "6.4.7", "execa": "4.1.0", @@ -8054,7 +8054,7 @@ "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", - "minimist": "^1.2.6", + "minimist": "^1.2.8", "ospath": "^1.2.2", "pretty-bytes": "^5.6.0", "proxy-from-env": "1.0.0", @@ -9706,9 +9706,9 @@ } }, "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, "mitt": { diff --git a/package.json b/package.json index 751d12f..fc5bee8 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@vue/eslint-config-prettier": "^7.0.0", "@vue/test-utils": "^2.2.6", "autoprefixer": "^10.4.13", - "cypress": "^12.0.2", + "cypress": "^12.13.0", "eslint": "^8.22.0", "eslint-plugin-cypress": "^2.12.1", "eslint-plugin-vue": "^9.3.0",