const MSG_ACCOUNT_NOT_UNIQUE = 'Account has already been registered.'; describe('Account duplication check.', ()=>{ beforeEach(() => { cy.visit('https://REDACTED-HOST/account-admin'); const username = 'cindy'; const password = 'REDACTED-PWD'; cy.visit('https://REDACTED-HOST/account-admin'); cy.get('input[id="account"]').type(username); cy.get('input[id="password"]').type(password); cy.get('button[type="submit"]').click(); }); it('When an account is already existed, show the error message when the confirm button is clicked.', () => { const testAccountName = '000000'; cy.contains('button', 'Create New').should('be.visible'); cy.contains('button', 'Create New').click(); // 在 id 為 input_account_field 的 input 元素內填入值 cy.get('#input_account_field').type(testAccountName); cy.get('#input_name_field').type(testAccountName); cy.get('#input_first_pwd').type(testAccountName); cy.get('#input_second_pwd').type(testAccountName); cy.get('.checkbox-and-text').first().find('div').first().click(); // 確保 Confirm 按鈕存在並可點擊 cy.contains('button', 'Confirm') .should('be.visible') .and('be.enabled') .click(); cy.contains('Account added').should('be.visible'); //表示帳號創建成功 cy.contains('span', 'Account').should('be.visible'); // 表示畫面轉導向成功,出現清單列表 // 接著,點選排序按鈕,排序將會造成生升冪排序,我們希望 000000 帳號排在第一個 // 找到包含 'Account' 的 span 元素 cy.get('span:contains("Account")') .closest('th') .find('span') .not(':contains("Account")') .first() .click(); // 點選下一个兄弟 span 元素 // 等待,以確保頁面已完全渲染 cy.wait(1000); // 確認 000000 帳號是否出現在第一列 cy.get('tr').filter((index, tr) => { // 遍歷所有的 tr 元素 const td = Cypress.$(tr).find('td').eq(0); // 找到第一個 td 元素 return td.text().trim() === '000000'; // 檢查其文本內容是否為 000000 }).first().should('exist'); // 確認至少有一個符合條件的 tr 存在 // 接著又再次創建一個同樣名稱的帳號,企圖看是否出現錯誤訊息 cy.contains('button', 'Create New').should('be.visible'); cy.contains('button', 'Create New').click(); // 在 id 為 input_account_field 的 input 元素內填入值 cy.get('#input_account_field').type(testAccountName); cy.get('#input_name_field').type(testAccountName); cy.get('#input_first_pwd').type(testAccountName); cy.get('#input_second_pwd').type(testAccountName); cy.get('.checkbox-and-text').first().find('div').first().click(); // 確保 Confirm 按鈕存在並可點擊 cy.contains('button', 'Confirm') .should('be.visible') .and('be.enabled') .click(); cy.contains('span', MSG_ACCOUNT_NOT_UNIQUE).should('be.visible'); }); });