diff --git a/loginResults.xlsx b/loginResults.xlsx index 7666b93..b697c53 100644 Binary files a/loginResults.xlsx and b/loginResults.xlsx differ diff --git a/tests/ExACT_login.js b/tests/ExACT_login.js index 47d8389..5705e63 100644 --- a/tests/ExACT_login.js +++ b/tests/ExACT_login.js @@ -15,10 +15,10 @@ const ExACT_login = (req, res) => { //Right Panel: //Welcome back -const expectedWelcomeBackText = 'WELCOME BACK!'; +const expectedWelcomeBackText = 'WELCOME BAC'; const expectedWelcomeBackColor = 'rgba(117, 117, 117, 1)' //gray //Login -const expectedLoginTitleText = 'Login to your account'; +const expectedLoginTitleText = 'Login to account'; const expectedLoginTitleColor = 'rgba(40, 39, 90, 1)'; //navy blue const expectedLoginTitleFont = '32px'; //Username @@ -35,7 +35,7 @@ const expectedForgotPasswordLinkColor = 'rgba(40, 39, 90, 1)'; //navy blue const expectedLoginButtonText = 'Login'; const expectedLoginButtonColor = 'rgba(48, 200, 172, 1)'; //teal //Don't have account text -const expectedDontHaveAccountText = `DON'T HAVE AN ACCOUNT?`; +const expectedDontHaveAccountText = `DON'T HAVE ACCOUNT?`; //Free trial button const expectedFreeTrialButtonText = '30 Day'; const expectedFreeTrialButtonColor = 'rgba(0, 0, 0, 0)'; //white @@ -45,245 +45,254 @@ const expectedAuthenticationText = 'Authentication Failed. Please check the user const expectedAuthenticationColor = 'rgba(231, 76, 60, 0.88)'; //orange const steps = [ - { description: 'Navigate to ExACT Landing Page', action: async () => await driver.navigate().to('https://stage.edgate.com/exact/login.php') }, //PROD - https://correlation.edgate.com/exact/login.php + { description: 'Navigate to ExACT Landing Page', action: async () => await driver.navigate().to('https://stage.edgate.com/exact/login.php') }, { description: 'Expand browser', action: async () => await driver.manage().window().maximize() }, - //RIGHT PANEL - //ExACT logo - { description: 'Verify ExACT logo is present', action: async () => - { const expectedExactLogo = await driver.wait(until.elementLocated(By.css('.logo')), 5000).catch(() => false); - if (expectedExactLogo) - {console.log('Passed: ExACT logo present');} - else - {console.log('FAILED: ExACT logo not found');} + { + description: 'Verify ExACT logo is present', + action: async () => { + const expectedExactLogo = await driver.wait(until.elementLocated(By.css('.logo')), 5000).catch(() => false); + if (!expectedExactLogo) { + throw new Error('ExACT logo not found'); + } + console.log('Passed: ExACT logo present'); } }, - //Welcome back text - { description: 'Validate Welcome back text', action: async () => - { const elementText = await driver.findElement(By.css('#formLogin > p')).getText(); - if (elementText === expectedWelcomeBackText) - {console.log('Passed: Welcome Back! text matched as expected');} - else - {console.log(`FAILED: Expected: "${expectedWelcomeBackText}"; Actual: "${elementText}"`);} + { + description: 'Validate Welcome back text', + action: async () => { + const elementText = await driver.findElement(By.css('#formLogin > p')).getText(); + if (elementText !== expectedWelcomeBackText) { + throw new Error(`Expected: "${expectedWelcomeBackText}"; Actual: "${elementText}"`); + } + console.log('Passed: Welcome Back! text matched as expected'); } }, - //Welcome back text color - { description: 'Validate Welcome back text color', action: async () => - { const elementStyle = await driver.findElement(By.css('#formLogin > p')).getCssValue('color'); - if (elementStyle === expectedWelcomeBackColor) - {console.log('Passed: Welcome back text color matched as expected');} - else - {console.log(`FAILED: Welcome back text color Expected: "${expectedWelcomeBackColor}"; Actual: "${elementStyle}"`);} + { + description: 'Validate Welcome back text color', + action: async () => { + const elementStyle = await driver.findElement(By.css('#formLogin > p')).getCssValue('color'); + if (elementStyle !== expectedWelcomeBackColor) { + throw new Error(`Welcome back text color Expected: "${expectedWelcomeBackColor}"; Actual: "${elementStyle}"`); + } + console.log('Passed: Welcome back text color matched as expected'); } }, - //Welcome back icon - { description: 'Verify Welcome back icon is present', action: async () => - { const expectedWelcomeBackIcon = await driver.wait(until.elementLocated(By.css('p > img')), 5000).catch(() => false); - if (expectedWelcomeBackIcon) - {console.log('Passed: Welcome back icon present');} - else - {console.log('FAILED: Welcome back icon not found');} + { + description: 'Verify Welcome back icon is present', + action: async () => { + const expectedWelcomeBackIcon = await driver.wait(until.elementLocated(By.css('p > img')), 5000).catch(() => false); + if (!expectedWelcomeBackIcon) { + throw new Error('Welcome back icon not found'); + } + console.log('Passed: Welcome back icon present'); } }, - //Login title text - { description: 'Validate Login title text', action: async () => - { const elementText = await driver.findElement(By.css('h2:nth-child(3)')).getText(); - if (elementText === expectedLoginTitleText) - {console.log('Passed: Login title text matched as expected');} - else - {console.log(`FAILED: Expected: "${expectedLoginTitleText}"; Actual: "${elementText}"`);} + { + description: 'Validate Login title text', + action: async () => { + const elementText = await driver.findElement(By.css('h2:nth-child(3)')).getText(); + if (elementText !== expectedLoginTitleText) { + throw new Error(`Expected: "${expectedLoginTitleText}"; Actual: "${elementText}"`); + } + console.log('Passed: Login title text matched as expected'); } }, - //Login title text color - { description: 'Validate Login title text color', action: async () => - { const elementStyle = await driver.findElement(By.css('h2:nth-child(3)')).getCssValue('color'); - if (elementStyle === expectedLoginTitleColor) - {console.log('Passed: Login title text color matched as expected');} - else - {console.log(`FAILED: Login title text color Expected: "${expectedLoginTitleColor}"; Actual: "${elementStyle}"`);} + { + description: 'Validate Login title text color', + action: async () => { + const elementStyle = await driver.findElement(By.css('h2:nth-child(3)')).getCssValue('color'); + if (elementStyle !== expectedLoginTitleColor) { + throw new Error(`Login title text color Expected: "${expectedLoginTitleColor}"; Actual: "${elementStyle}"`); + } + console.log('Passed: Login title text color matched as expected'); } }, - //Login title text font - { description: 'Validate Login title text font size', action: async () => - { const elementStyle = await driver.findElement(By.css('h2:nth-child(3)')).getCssValue('font-size'); - if (elementStyle === expectedLoginTitleFont) - {console.log('Passed: Login title text font-size matched as expected');} - else - {console.log(`FAILED: Login title text font-size Expected: "${expectedLoginTitleFont}"; Actual: "${elementStyle}"`);} + { + description: 'Validate Login title text font size', + action: async () => { + const elementStyle = await driver.findElement(By.css('h2:nth-child(3)')).getCssValue('font-size'); + if (elementStyle !== expectedLoginTitleFont) { + throw new Error(`Login title text font-size Expected: "${expectedLoginTitleFont}"; Actual: "${elementStyle}"`); + } + console.log('Passed: Login title text font-size matched as expected'); } }, - //Username label text - { description: 'Validate Username label text', action: async () => - { const elementText = await driver.findElement(By.css('.form-group:nth-child(4) > label')).getText(); - if (elementText === expectedUsernameLabel) - {console.log('Passed: Username label text matched as expected');} - else - {console.log(`FAILED: Expected: "${expectedUsernameLabel}"; Actual: "${elementText}"`);} + { + description: 'Validate Username label text', + action: async () => { + const elementText = await driver.findElement(By.css('.form-group:nth-child(4) > label')).getText(); + if (elementText !== expectedUsernameLabel) { + throw new Error(`Expected: "${expectedUsernameLabel}"; Actual: "${elementText}"`); + } + console.log('Passed: Username label text matched as expected'); } }, - //Username label text color - { description: 'Validate Username label text color', action: async () => - { const elementStyle = await driver.findElement(By.css('.form-group:nth-child(4) > label')).getCssValue('color'); - if (elementStyle === expectedUsernameColor) - {console.log('Passed: Username label text color matched as expected');} - else - {console.log(`FAILED: Username label text color Expected: "${expectedUsernameColor}"; Actual: "${elementStyle}"`);} + { + description: 'Validate Username label text color', + action: async () => { + const elementStyle = await driver.findElement(By.css('.form-group:nth-child(4) > label')).getCssValue('color'); + if (elementStyle !== expectedUsernameColor) { + throw new Error(`Username label text color Expected: "${expectedUsernameColor}"; Actual: "${elementStyle}"`); + } + console.log('Passed: Username label text color matched as expected'); } }, - //Username textbox placeholder - { description: 'Validate Username placeholder text', action: async () => - { const elementValue = await driver.findElement(By.css('.form-control:nth-child(2)')).getAttribute('placeholder'); - if (elementValue === expectedUsernamePlaceholder) - {console.log('Passed: Username placeholder text matched as expected');} - else - {console.log(`FAILED: Username placeholder text Expected: "${expectedUsernamePlaceholder}"; Actual: "${elementValue}"`);} + { + description: 'Validate Username placeholder text', + action: async () => { + const elementValue = await driver.findElement(By.css('.form-control:nth-child(2)')).getAttribute('placeholder'); + if (elementValue !== expectedUsernamePlaceholder) { + throw new Error(`Username placeholder text Expected: "${expectedUsernamePlaceholder}"; Actual: "${elementValue}"`); + } + console.log('Passed: Username placeholder text matched as expected'); } }, - //Password label text - { description: 'Validate Password label text', action: async () => - { const elementText = await driver.findElement(By.css('.form-group:nth-child(5) > label')).getText(); - if (elementText === expectedPasswordLabel) - {console.log('Passed: Password label text matched as expected');} - else - {console.log(`FAILED: Expected: "${expectedPasswordLabel}"; Actual: "${elementText}"`);} + { + description: 'Validate Password label text', + action: async () => { + const elementText = await driver.findElement(By.css('.form-group:nth-child(5) > label')).getText(); + if (elementText !== expectedPasswordLabel) { + throw new Error(`Expected: "${expectedPasswordLabel}"; Actual: "${elementText}"`); + } + console.log('Passed: Password label text matched as expected'); } }, - //Password label text color - { description: 'Validate Password label text color', action: async () => - { const elementStyle = await driver.findElement(By.css('.form-group:nth-child(5) > label')).getCssValue('color'); - if (elementStyle === expectedPasswordColor) - {console.log('Passed: Password label text color matched as expected');} - else - {console.log(`FAILED: Password label text color Expected: "${expectedPasswordColor}"; Actual: "${elementStyle}"`);} + { + description: 'Validate Password label text color', + action: async () => { + const elementStyle = await driver.findElement(By.css('.form-group:nth-child(5) > label')).getCssValue('color'); + if (elementStyle !== expectedPasswordColor) { + throw new Error(`Password label text color Expected: "${expectedPasswordColor}"; Actual: "${elementStyle}"`); + } + console.log('Passed: Password label text color matched as expected'); } }, - //Password textbox placeholder - { description: 'Validate Password placeholder text', action: async () => - { const elementValue = await driver.findElement(By.css('.passfield')).getAttribute('placeholder'); - if (elementValue === expectedPasswordPlaceholder) - {console.log('Passed: Password placeholder text matched as expected');} - else - {console.log(`FAILED: Password placeholder text Expected: "${expectedPasswordPlaceholder}"; Actual: "${elementValue}"`);} + { + description: 'Validate Password placeholder text', + action: async () => { + const elementValue = await driver.findElement(By.css('.passfield')).getAttribute('placeholder'); + if (elementValue !== expectedPasswordPlaceholder) { + throw new Error(`Password placeholder text Expected: "${expectedPasswordPlaceholder}"; Actual: "${elementValue}"`); + } + console.log('Passed: Password placeholder text matched as expected'); } }, - //Forgot password text link color - { description: 'Validate Forgot Password link text color', action: async () => - { const elementStyle = await driver.findElement(By.linkText('Forgot Password?')).getCssValue('color'); - if (elementStyle === expectedForgotPasswordLinkColor) - {console.log('Passed: Forgot password link text color matched as expected');} - else - {console.log(`FAILED: Forgot password link text color Expected: "${expectedForgotPasswordLinkColor}"; Actual: "${elementStyle}"`);} + { + description: 'Validate Forgot Password link text color', + action: async () => { + const elementStyle = await driver.findElement(By.linkText('Forgot Password?')).getCssValue('color'); + if (elementStyle !== expectedForgotPasswordLinkColor) { + throw new Error(`Forgot password link text color Expected: "${expectedForgotPasswordLinkColor}"; Actual: "${elementStyle}"`); + } + console.log('Passed: Forgot password link text color matched as expected'); } }, - //Login button text - { description: 'Validate Login button text', action: async () => - { const elementText = await driver.findElement(By.css('.login')).getAttribute('value'); - if (elementText === expectedLoginButtonText) - {console.log('Passed: Login button text matched as expected');} - else - {console.log(`FAILED: Expected: "${expectedLoginButtonText}"; Actual: "${elementText}"`);} + { + description: 'Validate Login button text', + action: async () => { + const elementText = await driver.findElement(By.css('.login')).getAttribute('value'); + if (elementText !== expectedLoginButtonText) { + throw new Error(`Expected: "${expectedLoginButtonText}"; Actual: "${elementText}"`); + } + console.log('Passed: Login button text matched as expected'); } }, - //Login button background color - { description: 'Validate Login button background color', action: async () => - { const elementStyle = await driver.findElement(By.css('.login')).getCssValue('background-color'); - if (elementStyle === expectedLoginButtonColor) - {console.log('Passed: Login button background color matched as expected');} - else - {console.log(`FAILED: Login button background color Expected: "${expectedLoginButtonColor}"; Actual: "${elementStyle}"`);} + { + description: 'Validate Login button background color', + action: async () => { + const elementStyle = await driver.findElement(By.css('.login')).getCssValue('background-color'); + if (elementStyle !== expectedLoginButtonColor) { + throw new Error(`Login button background color Expected: "${expectedLoginButtonColor}"; Actual: "${elementStyle}"`); + } + console.log('Passed: Login button background color matched as expected'); } }, - //Don't have an account? text - { description: 'Validate Dont have account text', action: async () => - { const elementText = await driver.findElement(By.css('p:nth-child(1)')).getText(); - if (elementText === expectedDontHaveAccountText) - {console.log('Passed: Dont have an account text matched as expected');} - else - {console.log(`FAILED: Expected: "${expectedDontHaveAccountText}"; Actual: "${elementText}"`);} + { + description: 'Validate Dont have account text', + action: async () => { + const elementText = await driver.findElement(By.css('p:nth-child(1)')).getText(); + if (elementText !== expectedDontHaveAccountText) { + throw new Error(`Expected: "${expectedDontHaveAccountText}"; Actual: "${elementText}"`); + } + console.log('Passed: Dont have an account text matched as expected'); } }, - //Free trial button text - { description: 'Validate Free trial button text', action: async () => - { const elementText = await driver.findElement(By.css('.btn > span')).getText(); - if (elementText === expectedFreeTrialButtonText) - {console.log('Passed: Free trial button text matched as expected');} - else - {console.log(`FAILED: Expected: "${expectedFreeTrialButtonText}"; Actual: "${elementText}"`);} + { + description: 'Validate Free trial button text', + action: async () => { + const elementText = await driver.findElement(By.css('.btn > span')).getText(); + if (elementText !== expectedFreeTrialButtonText) { + throw new Error(`Expected: "${expectedFreeTrialButtonText}"; Actual: "${elementText}"`); + } + console.log('Passed: Free trial button text matched as expected'); } }, - //Free trial button background color - { description: 'Validate Free trial button background color', action: async () => - { const elementStyle = await driver.findElement(By.css('.btn > span')).getCssValue('background-color'); - if (elementStyle === expectedFreeTrialButtonColor) - {console.log('Passed: Free trial button background color matched as expected');} - else - {console.log(`FAILED: Free trial button background color Expected: "${expectedFreeTrialButtonColor}"; Actual: "${elementStyle}"`);} + { + description: 'Validate Free trial button background color', + action: async () => { + const elementStyle = await driver.findElement(By.css('.btn > span')).getCssValue('background-color'); + if (elementStyle !== expectedFreeTrialButtonColor) { + throw new Error(`Free trial button background color Expected: "${expectedFreeTrialButtonColor}"; Actual: "${elementStyle}"`); + } + console.log('Passed: Free trial button background color matched as expected'); } }, - //EdGate copyright image - { description: 'Verify EdGate copyright image is present', action: async () => - { const expectedEdGateCopyright = await driver.wait(until.elementLocated(By.css('.logincopyright > img')), 5000).catch(() => false); - if (expectedEdGateCopyright) - {console.log('Passed: EdGate copyright image present');} - else - {console.log('FAILED: EdGate copyright not found');} + { + description: 'Verify EdGate copyright image is present', + action: async () => { + const expectedEdGateCopyright = await driver.wait(until.elementLocated(By.css('.logincopyright > img')), 5000).catch(() => false); + if (!expectedEdGateCopyright) { + throw new Error('EdGate copyright not found'); + } + console.log('Passed: EdGate copyright image present'); } }, - //Validation { description: 'Click Login button', action: async () => await driver.findElement(By.css('.login')).click() }, - - /*Username validation - { description: 'Validate username validadtion text', action: async () => - { const elementText = await driver.findElement(By.css('?')).getText(); - if (elementText === expectedUsernameValidationText) - {console.log('Passed: Username validation text matched as expected');} - else - {console.log(`FAILED: Expected: "${expectedUsernameValidationText}"; Actual: "${elementText}"`);} - } - },*/ - { description: 'Enter username', action: async () => await driver.findElement(By.css('.form-control:nth-child(2)')).sendKeys('exact_juan') }, { description: 'Click Login button after entering username', action: async () => await driver.findElement(By.css('.login')).click() }, { description: 'Enter incorrect password', action: async () => await driver.findElement(By.css('.passfield')).sendKeys('Edgate1') }, { description: 'Click Login button after entering wrong password', action: async () => await driver.findElement(By.css('.login')).click() }, - //Confirm validation message - { description: 'Validate authentication failed validation text', action: async () => - { const elementText = await driver.findElement(By.css('.alert')).getText(); - if (elementText === expectedAuthenticationText) - {console.log('Passed: Authentication text matched as expected');} - else - {console.log(`FAILED: Expected: "${expectedAuthenticationText}"; Actual: "${elementText}"`);} + { + description: 'Validate authentication failed validation text', + action: async () => { + const elementText = await driver.findElement(By.css('.alert')).getText(); + if (elementText !== expectedAuthenticationText) { + throw new Error(`Expected: "${expectedAuthenticationText}"; Actual: "${elementText}"`); + } + console.log('Passed: Authentication text matched as expected'); } }, - //Authentication validation text background color - { description: 'Validate authentication alert background color', action: async () => - { const elementStyle = await driver.findElement(By.css('.alert')).getCssValue('background-color'); - if (elementStyle === expectedAuthenticationColor) - {console.log('Passed: Authentication alert background color matched as expected');} - else - {console.log(`FAILED: Authentication alert background color Expected: "${expectedAuthenticationColor}"; Actual: "${elementStyle}"`);} + { + description: 'Validate authentication alert background color', + action: async () => { + const elementStyle = await driver.findElement(By.css('.alert')).getCssValue('background-color'); + if (elementStyle !== expectedAuthenticationColor) { + throw new Error(`Authentication alert background color Expected: "${expectedAuthenticationColor}"; Actual: "${elementStyle}"`); + } + console.log('Passed: Authentication alert background color matched as expected'); } }, @@ -342,10 +351,10 @@ try { } catch (error) { const screenshotPath = await takeScreenshot(driver, stepIndex, `${step.description}_Failed`); worksheet = logStep(worksheet, step.description, 'Failed', stepIndex, timestamp, screenshotPath); - throw error; // Re-throw the error to stop further execution if necessary + console.error(`Step ${stepIndex} failed: ${error.message}`); + testStatus = 'Failed'; } } - //Check if login was successful const usernameValidation = await driver.wait(until.elementLocated(By.css('#navbarDropdown > span')), 5000).catch(() => false); @@ -354,11 +363,12 @@ try { testStatus = 'Passed'; } else { console.log('FAILED: Unable to log in'); + testStatus = 'Failed'; } // Log test end time const endTime = new Date().toISOString(); - worksheet = logStep(worksheet, 'Test End', 'Ended', '', endTime, ''); + worksheet = logStep(worksheet, 'Test End', testStatus, '', endTime, ''); // Write the updated worksheet back to the workbook and save it workbook.Sheets['Sheet1'] = worksheet;