Add dashboard and My Standards search tests; update existing tests and results

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
jhuerta
2026-10-07 15:27:11 -07:00
parent c4d68d5a13
commit 10840ac188
19 changed files with 61170 additions and 9016 deletions

4
.gitignore vendored
View File

@@ -1,2 +1,4 @@
node_modules
screenshots
screenshots
.vscode/
.claude/

Binary file not shown.

BIN
dashboard.xlsx Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,9 +1,14 @@
import express from 'express';
import ExACT_landingPage from './tests/ExACT_landingPage.js';
import ExACT_login from './tests/ExACT_login.js';
//import ExACT_login from './tests/ExACT_login.js';
//Dashboard
import ExACT_dashboardMyContent from './tests/ExACT_DashboardMyContent.js';
import ExACT_dashboard from './tests/ExACT_dashboard.js';
import ExACT_dashboardMyContent from './tests/ExACT_dashboardMyContent.js';
import ExACT_dashboardSemanticStandardsComparison from './tests/ExACT_dashboardSemanticStandardsComparison.js';
import dashboardMyStandards from './tests/dashboardMyStandards.js';
import myStandardsSearchAlignedContent from './tests/myStandardsSearchAlignedContent.js';
import myStandardsSearchRelatedStandards from './tests/myStandardsSearchRelatedStandards.js';
//Content
import ExACT_contentPage from './tests/ExACT_contentPage.js';
import ExACT_editItem from './tests/ExACT_editItem.js';
@@ -28,47 +33,54 @@ app.get('/', (req, res) => {
<h1 style="text-align:center; color:#055a8c; padding-top: 20px;">ExACT Automated Regression Scripts</h1>
<div style="text-align:center; color:#001; font-size:15px; ">(Click the corresponding link to execute the desired script)</div>
<br><div style="padding:3px;"><strong><a href='/ExACT_landingPage' target='_blank'>ExACT Landing Page</a></strong></div>
<br><div style="padding:3px;"><strong><a href='/ExACT_login' target='_blank'>Login</a></strong></div>
<h1 style="text-align:center; color:#055a8c; font-size:20px; ">EDGATE LANDING PAGE</h1>
<div style="padding:3px;"><strong><a href='/ExACT_landingPage' target='_blank'>ExACT Landing Page</a></strong></div>
<h1 style="text-align:center; color:#055a8c; font-size:20px; ">DASHBOARD</h1>
<div style="padding:3px;"><strong><a href='/ExACT_dashboard' target='_blank'>Correlations Dashboard</a></strong></div>
<div style="padding:3px;"><strong><a href='/ExACT_dashboardMyContent' target='_blank'>My Content Widget</a></strong></div>
<div style="padding:3px;"><strong><a href='/ExACT_dashboardSemanticStandardsComparison' target='_blank'>Semantic Standards Comparison Widget</a></strong></div>
<div style="padding:3px;"><strong><a href='/dashboardMyStandards' target='_blank'>My Standards Widget</a></strong></div>
<div style="padding:3px;"><strong><a href='/myStandardsSearchAlignedContent' target='_blank'>My Standards Search - Aligned Content</a></strong></div>
<div style="padding:3px;"><strong><a href='/myStandardsSearchRelatedStandards' target='_blank'>My Standards Search - Related Standards</a></strong></div>
<h1 style="text-align:center; color:#055a8c; font-size:20px; ">CONTENT</h1>
<div style="padding:3px;"><strong><a href='/ExACT_contentPage' target='_blank'>Content Page</a></strong></div>
<br><div style="padding:3px;"><strong><a href='/ExACT_editItem' target='_blank'>Edit Item</a></strong></div>
<div style="padding:3px;"><strong><a href='/ExACT_editItem' target='_blank'>Edit Item</a></strong></div>
<h1 style="text-align:center; color:#055a8c; font-size:20px; ">ALIGN</h1>
<div style="padding:3px;"><strong><a href='/ExACT_alignContentPage' target='_blank'>Align Content Page</a></strong></div>
<br><div style="padding:3px;"><strong><a href='/ExACT_editItemAddConcept' target='_blank'>Align - Edit Content and Align Concept</a></strong></div>
<br><div style="padding:3px;"><strong><a href='/ExACT_alignStandardsPage' target='_blank'>Align Standards Page</a></strong></div>
<br><div style="padding:3px;"><strong><a href='/ExACT_alignConceptsPage' target='_blank'>Align Concepts Page</a></strong></div>
<div style="padding:3px;"><strong><a href='/ExACT_editItemAddConcept' target='_blank'>Align - Edit Content and Align Concept</a></strong></div>
<div style="padding:3px;"><strong><a href='/ExACT_alignStandardsPage' target='_blank'>Align Standards Page</a></strong></div>
<div style="padding:3px;"><strong><a href='/ExACT_alignConceptsPage' target='_blank'>Align Concepts Page</a></strong></div>
<h1 style="text-align:center; color:#055a8c; font-size:20px; ">FRAMEWORKS</h1>
<div style="padding:3px;"><strong><a href='/ExACT_frameworkManagementPage' target='_blank'>Framework Management Page</a></strong></div>
<br><div style="padding:3px;"><strong><a href='/ExACT_frameworkPublishingPage' target='_blank'>Framework Publishing Page</a></strong></div>
<br><div style="padding:3px;"><strong><a href='/ExACT_frameworkPublishFrameworkDIV' target='_blank'>Publish Framework DIV</a></strong></div>
<br><div style="padding:3px;"><strong><a href='/ExACT_frameworkFrameworkGroupsDIV' target='_blank'>Framework Groups DIV</a></strong></div>
<br><div style="padding:3px;"><strong><a href='/ExACT_frameworkFrameworkSettingsDIV' target='_blank'>Framework Settings DIV</a></strong></div>
<div style="padding:3px;"><strong><a href='/ExACT_frameworkPublishingPage' target='_blank'>Framework Publishing Page</a></strong></div>
<div style="padding:3px;"><strong><a href='/ExACT_frameworkPublishFrameworkDIV' target='_blank'>Publish Framework DIV</a></strong></div>
<div style="padding:3px;"><strong><a href='/ExACT_frameworkFrameworkGroupsDIV' target='_blank'>Framework Groups DIV</a></strong></div>
<div style="padding:3px;"><strong><a href='/ExACT_frameworkFrameworkSettingsDIV' target='_blank'>Framework Settings DIV</a></strong></div>
<br>
</div>
`);
})
//Landing:
app.get('/ExACT_landingPage', ExACT_landingPage);
app.get('/ExACT_landingPage', ExACT_landingPage);
//Login
app.get('/ExACT_login', ExACT_login);
//app.get('/ExACT_login', ExACT_login);
//Dashboard
app.get('/ExACT_dashboard', ExACT_dashboard);
//My Content
app.get('/ExACT_dashboardMyContent', ExACT_dashboardMyContent);
app.get('/ExACT_dashboardSemanticStandardsComparison', ExACT_dashboardSemanticStandardsComparison);
app.get('/dashboardMyStandards', dashboardMyStandards);
app.get('/myStandardsSearchAlignedContent', myStandardsSearchAlignedContent);
app.get('/myStandardsSearchRelatedStandards', myStandardsSearchRelatedStandards);
//Content
app.get('/ExACT_contentPage', ExACT_contentPage);
//Edit Item
app.get('/ExACT_contentPage', ExACT_contentPage);
//Edit Item
app.get('/ExACT_editItem', ExACT_editItem);
//Align
app.get('/ExACT_alignContentPage', ExACT_alignContentPage);
@@ -81,6 +93,7 @@ app.get('/ExACT_contentPage', ExACT_contentPage);
app.get('/ExACT_frameworkPublishFrameworkDIV', ExACT_frameworkPublishFrameworkDIV);
app.get('/ExACT_frameworkFrameworkGroupsDIV', ExACT_frameworkFrameworkGroupsDIV);
app.get('/ExACT_frameworkFrameworkSettingsDIV', ExACT_frameworkFrameworkSettingsDIV);
app.listen(8000, () => {
app.listen(8000, () => {
console.log('Server is up and running on port 8000');
});

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

5596
tests/ExACT_dashboard.js Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -55,10 +55,11 @@ const steps = [
action: async () => {
const element = await driver.findElement(By.css('.e-heading'));
//Get text, color, and size
//Get text, font, size, and color
const elementText = await element.getText();
const elementColor = await element.getCssValue('color');
const elementFont = await element.getCssValue('font-family');
const elementSize = await element.getCssValue('font-size');
const elementColor = await element.getCssValue('color');
//Track all errors
const errors = [];
@@ -71,6 +72,14 @@ const steps = [
errors.push(message);
}
//Validate font
if (elementFont === 'Poppins, sans-serif') {
console.log('Passed: Dashboard - Page title text font matched as expected');
} else {
const message = `Expected: Dashboard - Page title text font "Poppins, sans-serif"; Actual: "${elementFont}"`;
errors.push(message);
}
//Validate color -navy blue
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Dashboard - Page title text color matched as expected');
@@ -122,10 +131,11 @@ const steps = [
action: async () => {
const element = await driver.findElement(By.css('.standards-compare h2'));
//Get text, color, and size
//Get text, font, size, and color
const elementText = await element.getText();
const elementColor = await element.getCssValue('color');
const elementFont = await element.getCssValue('font-family');
const elementSize = await element.getCssValue('font-size');
const elementColor = await element.getCssValue('color');
//Track all errors
const errors = [];
@@ -138,6 +148,22 @@ const steps = [
errors.push(message);
}
//Validate font
if (elementFont === 'Poppins, sans-serif') {
console.log('Passed: Dashboard - Semantic Standards Comparison Widget title font matched as expected');
} else {
const message = `Expected: Dashboard - Semantic Standards Comparison Widget title font "Poppins, sans-serif"; Actual: "${elementFont}"`;
errors.push(message);
}
//Validate size
if (elementSize === '18px') {
console.log('Passed: Dashboard - Semantic Standards Comparison Widget title text font-size matched as expected');
} else {
const message = `Expected: Dashboard - Semantic Standards Comparison Widget title text font-size "18px"; Actual: "${elementSize}"`;
errors.push(message);
}
//Validate color -navy blue
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Dashboard - Semantic Standards Comparison Widget title text color matched as expected');
@@ -173,10 +199,11 @@ const steps = [
action: async () => {
const element = await driver.findElement(By.css('#sscMap-tab'));
//Get text, color, and size
//Get text, font, size, and color
const elementText = await element.getText();
const elementColor = await element.getCssValue('color');
const elementFont = await element.getCssValue('font-family');
const elementSize = await element.getCssValue('font-size');
const elementColor = await element.getCssValue('color');
//Track all errors
const errors = [];
@@ -189,6 +216,14 @@ const steps = [
errors.push(message);
}
//Validate font
if (elementFont === 'Poppins, sans-serif') {
console.log('Passed: Dashboard - National Standards tab title font matched as expected');
} else {
const message = `Expected: Dashboard - National Standards tab title font "Poppins, sans-serif"; Actual: "${elementFont}"`;
errors.push(message);
}
//Validate color -navy blue
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Dashboard - National Standards tab title text color matched as expected');
@@ -224,10 +259,11 @@ const steps = [
action: async () => {
const element = await driver.findElement(By.css('#sscFilterLaunch-tab'));
//Get text, color, and size
//Get text, font, size, and color
const elementText = await element.getText();
const elementColor = await element.getCssValue('color');
const elementFont = await element.getCssValue('font-family');
const elementSize = await element.getCssValue('font-size');
const elementColor = await element.getCssValue('color');
//Track all errors
const errors = [];
@@ -240,6 +276,14 @@ const steps = [
errors.push(message);
}
//Validate font
if (elementFont === 'Poppins, sans-serif') {
console.log('Passed: Dashboard - Custom Comparison tab title font matched as expected');
} else {
const message = `Expected: Dashboard - Custom Comparison tab title font "Poppins, sans-serif"; Actual: "${elementFont}"`;
errors.push(message);
}
//Validate color -gray
if (elementColor === 'rgba(182, 186, 181, 1)') {
console.log('Passed: Dashboard - Custom Comparison tab title color matched as expected');
@@ -413,16 +457,17 @@ const steps = [
}
},
//Dashboard - National Standards tab title, text, and font size (dimmed)
//National Standards tab title, text, and font size (dimmed)
{
description: 'Validate Dashboard - National Standards tab title text, color, and size',
description: 'Validate National Standards tab title text, color, and size',
action: async () => {
const element = await driver.findElement(By.css('#sscMap-tab'));
//Get text, color, and size
//Get text, font, size, and color
const elementText = await element.getText();
const elementColor = await element.getCssValue('color');
const elementFont = await element.getCssValue('font-family');
const elementSize = await element.getCssValue('font-size');
const elementColor = await element.getCssValue('color');
//Track all errors
const errors = [];
@@ -435,6 +480,14 @@ const steps = [
errors.push(message);
}
//Validate font
if (elementFont === 'Poppins, sans-serif') {
console.log('Passed: Dashboard - National Standards tab title font matched as expected');
} else {
const message = `Expected: Dashboard - National Standards tab title font "Poppins, sans-serif"; Actual: "${elementFont}"`;
errors.push(message);
}
//Validate color -gray
if (elementColor === 'rgba(182, 186, 181, 1)') {
console.log('Passed: Dashboard - National Standards tab title text color matched as expected');
@@ -464,41 +517,50 @@ const steps = [
}
},
//Dashboard - Custom Comparison tab title and color (active)
//Custom Comparison tab title and color (active)
{
description: 'Validate Dashboard - Custom Comparison tab title, text color, and size',
description: 'Validate Custom Comparison tab title, text color, and size',
action: async () => {
const element = await driver.findElement(By.css('#sscFilterLaunch-tab'));
//Get text, color, and size
//Get text, font, size, and color
const elementText = await element.getText();
const elementColor = await element.getCssValue('color');
const elementFont = await element.getCssValue('font-family');
const elementSize = await element.getCssValue('font-size');
const elementColor = await element.getCssValue('color');
//Track all errors
const errors = [];
//Validate text
if (elementText === 'Custom Comparison') {
console.log('Passed: Dashboard - Custom Comparison tab title matched as expected');
console.log('Passed: Custom Comparison tab title matched as expected');
} else {
const message = `Expected: Dashboard - "Custom Comparison" tab title; Actual: "${elementText}"`;
const message = `Expected: "Custom Comparison" tab title; Actual: "${elementText}"`;
errors.push(message);
}
//Validate font
if (elementFont === 'Poppins, sans-serif') {
console.log('Passed: Custom Comparison tab title font matched as expected');
} else {
const message = `Expected: Custom Comparison tab title font "Poppins, sans-serif"; Actual: "${elementFont}"`;
errors.push(message);
}
//Validate color -navy blue
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Dashboard - Custom Comparison tab title color matched as expected');
console.log('Passed: Custom Comparison tab title color matched as expected');
} else {
const message = `Expected: Dashboard - Custom Comparison tab title color "rgba(40, 39, 90, 1)"; Actual: "${elementColor}"`;
const message = `Expected: Custom Comparison tab title color "rgba(40, 39, 90, 1)"; Actual: "${elementColor}"`;
errors.push(message);
}
//Validate font size
if (elementSize === '15px') {
console.log('Passed: Dashboard - Custom Comparison tab title font size matched as expected');
console.log('Passed: Custom Comparison tab title font size matched as expected');
} else {
const message = `Expected: Dashboard - Custom Comparison tab title font size "15px"; Actual: "${elementSize}"`;
const message = `Expected: Custom Comparison tab title font size "15px"; Actual: "${elementSize}"`;
errors.push(message);
}
@@ -522,9 +584,9 @@ const steps = [
const elementText = await driver.findElement(By.css('#sscFilterLaunchPane > div > div')).getText();
if (elementText === `EdGate's advanced analysis tool provides semantic similarities, differences, and gaps across different state or organizational standards. Our advanced text analysis calculates semantic matches and provides a comprehensive comparison dataset for your team to make informed decisions faster and more effectively.`) {
console.log("Passed: Dashboard - Custom Comparison info text matched as expected");
console.log("Passed: Custom Comparison - info text matched as expected");
} else {
throw new Error(`Expected: Dashboard - "Custom Comparison info text did not match"; Actual: "${elementText}"`);
throw new Error(`Expected: Custom Comparison - "Custom Comparison info text did not match"; Actual: "${elementText}"`);
}
}
},
@@ -558,25 +620,25 @@ const steps = [
//Validate text
if (elementText === 'Get Started') {
console.log('Passed: Dashboard - Get Started button text matched as expected');
console.log('Passed: Custom Comparison - Get Started button text matched as expected');
} else {
const message = `Expected: Dashboard - "Get Started" button text; Actual: "${elementText}"`;
const message = `Expected: Custom Comparison - "Get Started" button text; Actual: "${elementText}"`;
errors.push(message);
}
//Validate color -green
if (elementColor === 'rgba(48, 200, 172, 1)') {
console.log('Passed: Dashboard - Get Started button color matched as expected');
console.log('Passed: Custom Comparison - Get Started button color matched as expected');
} else {
const message = `Expected: Dashboard - Get Started button color "rgba(48, 200, 172, 1)"; Actual: "${elementColor}"`;
const message = `Expected: Custom Comparison - Get Started button color "rgba(48, 200, 172, 1)"; Actual: "${elementColor}"`;
errors.push(message);
}
//Validate button icon is present
if (icon) {
console.log('Passed: Dashboard - Get Started button icon is present');
console.log('Passed: Custom Comparison - Get Started button icon is present');
} else {
const message = 'Expected: Dashboard - Get Started button icon not found';
const message = 'Expected: Custom Comparison - Get Started button icon not found';
errors.push(message);
}
@@ -621,9 +683,9 @@ const steps = [
}
},
//Dashboard - National Standards tab title, text, and font size (active)
//Custom Comparison - National Standards tab title, text, and font size (active)
{
description: 'Validate Dashboard - National Standards tab title text, color, and size',
description: 'Validate Custom Comparison - National Standards tab title text, color, and size',
action: async () => {
const element = await driver.findElement(By.css('#sscMap-tab'));
@@ -637,25 +699,25 @@ const steps = [
//Validate text
if (elementText === 'National Standards') {
console.log('Passed: Dashboard - National Standards tab title matched as expected');
console.log('Passed: Custom Comparison - National Standards tab title matched as expected');
} else {
const message = `Expected: Dashboard - "National Standards"; Actual: "${elementText}"`;
const message = `Expected: Custom Comparison - "National Standards"; Actual: "${elementText}"`;
errors.push(message);
}
//Validate color -navy blue
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Dashboard - National Standards tab title text color matched as expected');
console.log('Passed: Custom Comparison - National Standards tab title text color matched as expected');
} else {
const message = `Expected: Dashboard - National Standards tab title text color "rgba(40, 39, 90, 1)"'; Actual: "${elementColor}"`;
const message = `Expected: Custom Comparison - National Standards tab title text color "rgba(40, 39, 90, 1)"'; Actual: "${elementColor}"`;
errors.push(message);
}
//Validate font size
if (elementSize === '15px') {
console.log('Passed: Dashboard - National Standards tab title text font-size matched as expected');
console.log('Passed: Custom Comparison - National Standards tab title text font-size matched as expected');
} else {
const message = `Expected: Dashboard - National Standards tab title text font-size "15px"; Actual: "${elementSize}"`;
const message = `Expected: Custom Comparison - National Standards tab title text font-size "15px"; Actual: "${elementSize}"`;
errors.push(message);
}
@@ -672,9 +734,9 @@ const steps = [
}
},
//Dashboard - Custom Comparison tab title and color (dimmed)
//Custom Comparison - Custom Comparison tab title and color (dimmed)
{
description: 'Validate Dashboard - Custom Comparison tab title, text color, and size',
description: 'Validate Custom Comparison - Custom Comparison tab title, text color, and size',
action: async () => {
const element = await driver.findElement(By.css('#sscFilterLaunch-tab'));
@@ -688,25 +750,25 @@ const steps = [
//Validate text
if (elementText === 'Custom Comparison') {
console.log('Passed: Dashboard - Custom Comparison tab title matched as expected');
console.log('Passed: Custom Comparison - Custom Comparison tab title matched as expected');
} else {
const message = `Expected: Dashboard - "Custom Comparison" tab title; Actual: "${elementText}"`;
const message = `Expected: Custom Comparison - "Custom Comparison" tab title; Actual: "${elementText}"`;
errors.push(message);
}
//Validate color -gray
if (elementColor === 'rgba(182, 186, 181, 1)') {
console.log('Passed: Dashboard - Custom Comparison tab title color matched as expected');
console.log('Passed: Custom Comparison - Custom Comparison tab title color matched as expected');
} else {
const message = `Expected: Dashboard - Custom Comparison tab title color "rgba(182, 186, 181, 1)"; Actual: "${elementColor}"`;
const message = `Expected: Custom Comparison - Custom Comparison tab title color "rgba(182, 186, 181, 1)"; Actual: "${elementColor}"`;
errors.push(message);
}
//Validate font size
if (elementSize === '15px') {
console.log('Passed: Dashboard - Custom Comparison tab title font size matched as expected');
console.log('Passed: Custom Comparison - Custom Comparison tab title font size matched as expected');
} else {
const message = `Expected: Dashboard - Custom Comparison tab title font size "15px"; Actual: "${elementSize}"`;
const message = `Expected: Custom Comparison - Custom Comparison tab title font size "15px"; Actual: "${elementSize}"`;
errors.push(message);
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,12 @@
import { Builder, By, Key, until } from 'selenium-webdriver';
import { Builder, By, Key, until, Select } from 'selenium-webdriver';
import { Options as ChromeOptions } from 'selenium-webdriver/chrome.js';
import fs from 'fs';
import XLSX from 'xlsx';
import path from 'path';
import { error } from 'console';
const ExACT_landingPage = (req, res) => {
res.send('<h2>ExACT Automated Test Script: ExACT Login Page(ExACT_landingPage); Initiated</h2>');
res.send('<h2>ExACT Automated Test Script: EGATE LANDING PAGE: ExACT Login Page (ExACT_landingPage) | Initiated</h2>');
(async function example() {
let driver = await new Builder()
.forBrowser('chrome')
@@ -30,13 +31,7 @@ const steps = [
{
description: 'Loading Page',
action: async () => {
//Wait for page to load completely
await driver.wait(async () => {
const readyState = await driver.executeScript('return document.readyState');
return readyState === 'complete';
}, 30000, 'ExACT Landing Page did not fully load within 30 seconds');
console.log('------------->| BEGIN SCRIPT |<-------------');
console.log('---------->| ExACT Landing Page |<----------');
console.log('------------->| ExACT LANDING PAGE |<-------------');
//Wait until the element exists in the DOM
const exactLogo = await driver.wait(
@@ -55,7 +50,7 @@ const steps = [
const readyState = await driver.executeScript('return document.readyState');
return readyState === 'complete';
}, 30000, 'ExACT Langing page did not fully load within 30 seconds');
console.log('Passed: ExACT Landing Page loaded successfully');
console.log('Passed: ExACT Landing Page loaded successfully');
}
},
@@ -90,7 +85,7 @@ const steps = [
errors.push(`Expected: Title font "DM Serif Display", serif; Actual: ${elementFont}`);
}
//color -white
//color
if (elementColor === 'rgba(255, 255, 255, 1)') {
console.log('Passed: Title text color matched as expected');
} else {
@@ -147,7 +142,7 @@ const steps = [
errors.push(`Expected: Descriptive text 1 text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -white
//color
if (elementColor === 'rgba(255, 255, 255, 1)') {
console.log('Passed: Descriptive text 1 text color matched as expected');
} else {
@@ -204,7 +199,7 @@ const steps = [
errors.push(`Expected: Descriptive text 2 text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -white
//color
if (elementColor === 'rgba(255, 255, 255, 1)') {
console.log('Passed: Descriptive text 2 text color matched as expected');
} else {
@@ -261,7 +256,7 @@ const steps = [
errors.push(`Expected: Sign up text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -white
//color
if (elementColor === 'rgba(255, 255, 255, 1)') {
console.log('Passed: Sign up text color matched as expected');
} else {
@@ -326,7 +321,7 @@ const steps = [
errors.push(`Expected: Free trial link text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -red/orange
//color
if (elementColor === 'rgba(255, 111, 97, 1)') {
console.log('Passed: Free trial link text color matched as expected');
} else {
@@ -353,7 +348,7 @@ const steps = [
}
},
//NEXT ACTION - Click Free Trial link
//NEXT ACTION
{
description: 'Click Free Trial link',
action: async () => {
@@ -383,11 +378,16 @@ const steps = [
},
//Left Panel
//ExACT logo
{
description: 'Verify ExACT logo is present',
action: async () => {
const expectedExactLogo = await driver.wait(until.elementLocated(By.css('.logo')), 5000).catch(() => false);
//Track all errors
const errors = [];
if (expectedExactLogo) {
console.log('Passed: ExACT logo present');
} else {
@@ -426,7 +426,7 @@ const steps = [
errors.push(`Expected: ExACT Free trial text font "DM Serif Display", serif; Actual: ${elementFont}`);
}
//color -white
//color
if (elementColor === 'rgba(255, 255, 255, 1)') {
console.log('Passed: ExACT Free trial color matched as expected');
} else {
@@ -483,7 +483,7 @@ const steps = [
errors.push(`Expected: ExACT Free trial text font "DM Serif Display", serif; Actual: ${elementFont}`);
}
//color -red/orange
//color
if (elementColor === 'rgba(255, 111, 97, 1)') {
console.log('Passed: ExACT Free trial color matched as expected');
} else {
@@ -540,7 +540,7 @@ const steps = [
errors.push(`Expected: 30 Day Free trial,...text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -white
//color
if (elementColor === 'rgba(255, 255, 255, 1)') {
console.log('Passed: 30 Day Free trial,...text color matched as expected');
} else {
@@ -597,7 +597,7 @@ const steps = [
errors.push(`Expected: See for yourself why ExACT...text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -white
//color
if (elementColor === 'rgba(255, 255, 255, 1)') {
console.log('Passed: See for yourself why ExACT...text color matched as expected');
} else {
@@ -696,7 +696,7 @@ const steps = [
} else {
errors.push(`Expected: Absolutely Free text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color - white
//color
if (elementColor === 'rgb(255, 255, 255)') {
console.log('Passed: Absolutely Free text color matched as expected');
} else {
@@ -723,7 +723,7 @@ const steps = [
errors.push(`Expected: "- no credit card required or hidden fees" text font "Poppins, sans-serif"; Actual: ${spanFont?.fontFamily}`);
}
//color - span
//color
if (spanFont?.color === 'rgb(255, 255, 255)') {
console.log('Passed: "- no credit card required or hidden fees" text color matched as expected');
} else {
@@ -819,7 +819,7 @@ const steps = [
} else {
errors.push(`Expected: Instant Access text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color - white
//color
if (elementColor === 'rgb(255, 255, 255)') {
console.log('Passed: Instant Access text color matched as expected');
} else {
@@ -846,7 +846,7 @@ const steps = [
errors.push(`Expected: "- Sign up and log-in, it’s that easy" text font "Poppins, sans-serif"; Actual: ${spanFont?.fontFamily}`);
}
//color - span
//color
if (spanFont?.color === 'rgb(255, 255, 255)') {
console.log(`Passed: "- Sign up and log-in, it’s that easy" text color matched as expected`);
} else {
@@ -942,7 +942,7 @@ const steps = [
} else {
errors.push(`Expected: Access Standards text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color - white
//color
if (elementColor === 'rgb(255, 255, 255)') {
console.log('Passed: Access Standards text color matched as expected');
} else {
@@ -969,7 +969,7 @@ const steps = [
errors.push(`Expected: "- Access all Common Core, NGSS, and NCSS Standards free" text font "Poppins, sans-serif"; Actual: ${spanFont?.fontFamily}`);
}
//color - span
//color
if (spanFont?.color === 'rgb(255, 255, 255)') {
console.log(`Passed: "- Access all Common Core, NGSS, and NCSS Standards free" text color matched as expected`);
} else {
@@ -1023,7 +1023,7 @@ const steps = [
errors.push(`Expected: Want to talk to a representative...text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -white
//color
if (elementColor === 'rgba(255, 255, 255, 1)') {
console.log('Passed: Want to talk to a representative...text color matched as expected');
} else {
@@ -1088,7 +1088,7 @@ const steps = [
errors.push(`Expected: Contact Us link text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -teal
//color
if (elementColor === 'rgba(48, 200, 172, 1)') {
console.log('Passed: Contact Us link text color matched as expected');
} else {
@@ -1135,32 +1135,28 @@ const steps = [
if (elementText === 'Sign Up') {
console.log('Passed: Sign Up title text matched as expected');
} else {
const message = `Expected: "Sign Up"; Actual: "${elementText}"`;
errors.push(message);
errors.push(`Expected: "Sign Up"; Actual: "${elementText}"`);
}
//font-family
if (elementFont === "Poppins, sans-serif") {
console.log('Passed: Sign Up title text font matched as expected');
} else {
const message = `Expected: Sign Up title text font "Poppins, sans-serif"; Actual: ${elementFont}`;
errors.push(message);
errors.push(`Expected: Sign Up title text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Sign Up title color matched as expected');
} else {
const message = `Expected: Sign Up title color "rgba(40, 39, 90, 1)"; Actual: "${elementColor}"`;
errors.push(message);
errors.push(`Expected: Sign Up title color "rgba(40, 39, 90, 1)"; Actual: "${elementColor}"`);
}
//font size
if (elementSize === '24px') {
console.log('Passed: Sign Up title text font-size matched as expected');
} else {
const message = `Expected: Sign Up title text font-size "24px"; Actual: "${elementSize}"`;
errors.push(message);
errors.push(`Expected: Sign Up title text font-size "24px"; Actual: "${elementSize}"`);
}
//Throw summary if any validation failed
@@ -1196,32 +1192,28 @@ const steps = [
if (elementText === 'Already Have an account? Sign In') {
console.log('Passed: Already Have an account? Sign In text matched as expected');
} else {
const message = `Expected: "Already Have an account? Sign In"; Actual: "${elementText}"`;
errors.push(message);
errors.push(`Expected: "Already Have an account? Sign In"; Actual: "${elementText}"`);
}
//font-family
if (elementFont === "Poppins, sans-serif") {
console.log('Passed: Already Have an account? Sign In text font matched as expected');
} else {
const message = `Expected: Already Have an account? Sign In text font "Poppins, sans-serif"; Actual: ${elementFont}`;
errors.push(message);
errors.push(`Expected: Already Have an account? Sign In text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -black
//color
if (elementColor === 'rgba(32, 32, 32, 1)') {
console.log('Passed: Already Have an account? Sign In color matched as expected');
} else {
const message = `Expected: Already Have an account? Sign In color "rgba(32, 32, 32, 1)"; Actual: "${elementColor}"`;
errors.push(message);
errors.push(`Expected: Already Have an account? Sign In color "rgba(32, 32, 32, 1)"; Actual: "${elementColor}"`);
}
//font size
if (elementSize === '12px') {
console.log('Passed: Already Have an account? Sign In text font-size matched as expected');
} else {
const message = `Expected: Already Have an account? Sign In text font-size "12px"; Actual: "${elementSize}"`;
errors.push(message);
errors.push(`Expected: Already Have an account? Sign In text font-size "12px"; Actual: "${elementSize}"`);
}
//Throw summary if any validation failed
@@ -1275,7 +1267,7 @@ const steps = [
errors.push(`Expected: Sign In link text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color - teal
//color
if (elementColor === 'rgba(48, 200, 172, 1)') {
console.log('Passed: Sign In link text color matched as expected');
} else {
@@ -1340,7 +1332,7 @@ const steps = [
errors.push(`Expected: First name label text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgb(108, 117, 125)') {
console.log('Passed: First name label text color matched as expected');
} else {
@@ -1420,7 +1412,7 @@ const steps = [
errors.push(`Expected: Last name label text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgb(108, 117, 125)') {
console.log('Passed: Last name label text color matched as expected');
} else {
@@ -1500,7 +1492,7 @@ const steps = [
errors.push(`Expected: Username label text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgb(108, 117, 125)') {
console.log('Passed: Username label text color matched as expected');
} else {
@@ -1591,7 +1583,7 @@ const steps = [
errors.push(`Expected: Password label text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgb(108, 117, 125)') {
console.log('Passed: Password label text color matched as expected');
} else {
@@ -1671,7 +1663,7 @@ const steps = [
errors.push(`Expected: Password Requirements: text font "DM Serif Display", serif; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Password Requirements: text color matched as expected');
} else {
@@ -1728,7 +1720,7 @@ const steps = [
errors.push(`Expected: Must be at least 8 characters. text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Must be at least 8 characters. text color matched as expected');
} else {
@@ -1794,7 +1786,7 @@ const steps = [
errors.push(`Expected: Contain at least one of each: text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Contain at least one of each: text color matched as expected');
} else {
@@ -1851,7 +1843,7 @@ const steps = [
errors.push(`Expected: Uppercase letter text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Uppercase letter text color matched as expected');
} else {
@@ -1908,7 +1900,7 @@ const steps = [
errors.push(`Expected: Lowercase letter text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Lowercase letter text color matched as expected');
} else {
@@ -1965,7 +1957,7 @@ const steps = [
errors.push(`Expected: Number text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Number text color matched as expected');
} else {
@@ -2022,7 +2014,7 @@ const steps = [
errors.push(`Expected: Special character (e.g. - ! @ # $ etc.) text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Special character (e.g. - ! @ # $ etc.) text color matched as expected');
} else {
@@ -2090,7 +2082,7 @@ const steps = [
errors.push(`Expected: Email address label text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgb(108, 117, 125)') {
console.log('Passed: Email address label text color matched as expected');
} else {
@@ -2177,7 +2169,7 @@ const steps = [
errors.push(`Expected: Organization label text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgb(108, 117, 125)') {
console.log('Passed: Organization label text color matched as expected');
} else {
@@ -2257,7 +2249,7 @@ const steps = [
errors.push(`Expected: Position label text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgb(108, 117, 125)') {
console.log('Passed: Position label text color matched as expected');
} else {
@@ -2325,7 +2317,7 @@ const steps = [
errors.push(`Expected: Phone number label text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgb(108, 117, 125)') {
console.log('Passed: Phone number label text color matched as expected');
} else {
@@ -2390,7 +2382,7 @@ const steps = [
errors.push(`Expected: I agree to the terms of service text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: I agree to the terms of service text color matched as expected');
} else {
@@ -2477,7 +2469,7 @@ const steps = [
errors.push(`Expected: terms of service link text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -teal
//color
if (elementColor === 'rgba(48, 200, 172, 1)') {
console.log('Passed: terms of service link text color matched as expected');
} else {
@@ -2534,7 +2526,7 @@ const steps = [
errors.push(`Expected: Start Your Free Trial button text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Start Your Free Trial button background color matched as expected');
} else {
@@ -2566,6 +2558,10 @@ const steps = [
description: 'Verify edgate logo is present',
action: async () => {
const expectedExactLogo = await driver.wait(until.elementLocated(By.css('.signuplogo > img')), 5000).catch(() => false);
//Track all errors
const errors = [];
if (expectedExactLogo) {
console.log('Passed: edgate logo present');
} else {
@@ -2604,7 +2600,7 @@ const steps = [
errors.push(`Expected: © Copyright 2026 EdGate Correlation Services text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: © Copyright 2026 EdGate Correlation Services text color matched as expected');
} else {
@@ -2631,7 +2627,7 @@ const steps = [
}
},
//NEXT ACTION - Click Sign In link
//NEXT ACTION
{
description: 'Click Sign In link',
action: async () => {
@@ -2665,7 +2661,7 @@ const steps = [
description: 'Validate bullet point 1',
action: async () => {
const multipleChecks = 'Bullet point 1';
const elementicon = await driver.wait(until.elementLocated(By.css('li:nth-child(1) img')), 5000).catch(() => false);
const elementIcon = await driver.wait(until.elementLocated(By.css('li:nth-child(1) img')), 5000).catch(() => false);
const element = await driver.findElement(By.css('li:nth-child(1) > .list-flex'));
//Get icon, text, color, and size
@@ -2678,7 +2674,7 @@ const steps = [
const errors = [];
//icon
if (elementicon) {
if (elementIcon) {
console.log('Passed: Bullet Point Icon 1 present');
} else {
errors.push("Bullet Point Icon 1 not found");
@@ -2698,7 +2694,7 @@ const steps = [
errors.push(`Expected: Bullet point 1 text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -white
//color
if (elementColor === 'rgba(255, 255, 255, 1)') {
console.log('Passed: Bullet point 1 text color matched as expected');
} else {
@@ -2763,7 +2759,7 @@ const steps = [
errors.push(`Expected: ExACT AutoAlign, link text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -teal
//color
if (elementColor === 'rgba(48, 200, 172, 1)') {
console.log('Passed: ExACT AutoAlign, link text color matched as expected');
} else {
@@ -2795,7 +2791,7 @@ const steps = [
description: 'Validate bullet point 2',
action: async () => {
const multipleChecks = 'Bullet point 2';
const elementicon = await driver.wait(until.elementLocated(By.css('li:nth-child(2) img')), 5000).catch(() => false);
const elementIcon = await driver.wait(until.elementLocated(By.css('li:nth-child(2) img')), 5000).catch(() => false);
const element = await driver.findElement(By.css('li:nth-child(2) > .list-flex'));
//Get icon, text, color, and size
@@ -2808,7 +2804,7 @@ const steps = [
const errors = [];
//icon
if (elementicon) {
if (elementIcon) {
console.log('Passed: Bullet Point Icon 2 present');
} else {
errors.push("Bullet Point Icon 2 not found");
@@ -2828,7 +2824,7 @@ const steps = [
errors.push(`Expected: Bullet point 2 text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -white
//color
if (elementColor === 'rgba(255, 255, 255, 1)') {
console.log('Passed: Bullet point 2 text color matched as expected');
} else {
@@ -2893,7 +2889,7 @@ const steps = [
errors.push(`Expected: Correlation Analytics. link text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -teal
//color
if (elementColor === 'rgba(48, 200, 172, 1)') {
console.log('Passed: Correlation Analytics. link text color matched as expected');
} else {
@@ -2925,7 +2921,7 @@ const steps = [
description: 'Validate bullet point 3',
action: async () => {
const multipleChecks = 'Bullet point 3';
const elementicon = await driver.wait(until.elementLocated(By.css('li:nth-child(3) img')), 5000).catch(() => false);
const elementIcon = await driver.wait(until.elementLocated(By.css('li:nth-child(3) img')), 5000).catch(() => false);
const element = await driver.findElement(By.css('li:nth-child(3) > .list-flex'));
//Get icon, text, color, and size
@@ -2938,7 +2934,7 @@ const steps = [
const errors = [];
//icon
if (elementicon) {
if (elementIcon) {
console.log('Passed: Bullet Point Icon 3 present');
} else {
errors.push("Bullet Point Icon 3 not found");
@@ -2958,7 +2954,7 @@ const steps = [
errors.push(`Expected: Bullet point 3 text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -white
//color
if (elementColor === 'rgba(255, 255, 255, 1)') {
console.log('Passed: Bullet point 3 text color matched as expected');
} else {
@@ -3023,7 +3019,7 @@ const steps = [
errors.push(`Expected: International Standards. link text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -teal
//color
if (elementColor === 'rgba(48, 200, 172, 1)') {
console.log('Passed: International Standards. link text color matched as expected');
} else {
@@ -3051,11 +3047,16 @@ const steps = [
},
//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);
//Track all errors
const errors = [];
if (expectedExactLogo) {
console.log('Passed: ExACT logo present');
} else {
@@ -3070,7 +3071,7 @@ const steps = [
action: async () => {
const multipleChecks = 'Welcome Back!';
const element = await driver.findElement(By.css('#formLogin > p'));
const elementicon = await driver.wait(until.elementLocated(By.css('p > img')), 5000).catch(() => false);
const elementIcon = await driver.wait(until.elementLocated(By.css('p > img')), 5000).catch(() => false);
//Get icon, text, color, and size
const elementText = await element.getText();
@@ -3095,7 +3096,7 @@ const steps = [
errors.push(`Expected: Welcome Back text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgba(117, 117, 117, 1)') {
console.log('Passed: Welcome Back text color matched as expected');
} else {
@@ -3110,7 +3111,7 @@ const steps = [
}
//icon
if (elementicon) {
if (elementIcon) {
console.log('Passed: Welcome Back Icon present');
} else {
errors.push("Welcome Back Icon not found");
@@ -3159,7 +3160,7 @@ const steps = [
errors.push(`Expected: Login header text font "DM Serif Display", serif; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Login header text color matched as expected');
} else {
@@ -3216,7 +3217,7 @@ const steps = [
errors.push(`Expected: Username label text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Username label text color matched as expected');
} else {
@@ -3284,7 +3285,7 @@ const steps = [
errors.push(`Expected: Username placeholder text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgb(108, 117, 125)') {
console.log('Passed: Username placeholder text color matched as expected');
} else {
@@ -3356,7 +3357,7 @@ const steps = [
errors.push(`Expected: Password label text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Password label text color matched as expected');
} else {
@@ -3424,7 +3425,7 @@ const steps = [
errors.push(`Expected: Password placeholder text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgb(108, 117, 125)') {
console.log('Passed: Password placeholder text color matched as expected');
} else {
@@ -3519,7 +3520,7 @@ const steps = [
errors.push(`Expected: Alert text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -red/orange
//color
if (elementColor === 'rgba(231, 76, 60, 0.88)') {
console.log('Passed: Alert text color matched as expected');
} else {
@@ -3584,7 +3585,7 @@ const steps = [
errors.push(`Expected: Forgot password link text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Forgot password link text color matched as expected');
} else {
@@ -3641,7 +3642,7 @@ const steps = [
errors.push(`Expected: Login buttonk text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -teal
//color
if (elementColor === 'rgba(48, 200, 172, 1)') {
console.log('Passed: Login button text background color matched as expected');
} else {
@@ -3698,7 +3699,7 @@ const steps = [
errors.push(`Expected: Dont have an account text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -black
//color
if (elementColor === 'rgba(32, 32, 32, 1)') {
console.log('Passed: Dont have an account text color matched as expected');
} else {
@@ -3763,7 +3764,7 @@ const steps = [
errors.push(`Expected: Free trial button text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -white
//color
if (elementColor === 'rgba(255, 255, 255, 1)') {
console.log('Passed: Free trial button background color matched as expected');
} else {
@@ -3795,6 +3796,10 @@ const steps = [
description: 'Verify EdGate copyright logo is present',
action: async () => {
const expectedEdGateCopyright = await driver.wait(until.elementLocated(By.css('.logincopyright > img')), 5000).catch(() => false);
//Track all errors
const errors = [];
if (expectedEdGateCopyright) {
console.log('Passed: EdGate copyright logo present');
} else {
@@ -3803,7 +3808,7 @@ const steps = [
}
},
//NEXT ACTION - Click Forgot password link
//NEXT ACTION
{
description: 'Click Forgot password link',
action: async () => {
@@ -3825,7 +3830,7 @@ const steps = [
}
},
//Recover Username textbox
//Recover Username textbox (SPECIAL CASE: Placeholder validation with trigger)
{
description: 'Validate Recover Username textbox',
action: async () => {
@@ -3866,7 +3871,7 @@ const steps = [
errors.push(`Expected: Username placeholder text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgb(108, 117, 125)') {
console.log('Passed: Username placeholder text color matched as expected');
} else {
@@ -3938,7 +3943,7 @@ const steps = [
errors.push(`Expected: Submit buttonk text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -teal
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Submit button text background color matched as expected');
} else {
@@ -4003,7 +4008,7 @@ const steps = [
errors.push(`Expected: < Back to Login link text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: < Back to Login link text color matched as expected');
} else {
@@ -4030,7 +4035,7 @@ const steps = [
}
},
//NEXT ACTION - Click Back to Login link
//NEXT ACTION
{
description: 'Click Back to Login link',
action: async () => {
@@ -4053,11 +4058,16 @@ const steps = [
},
//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);
//Track all errors
const errors = [];
if (expectedExactLogo) {
console.log('Passed: ExACT logo present');
} else {
@@ -4072,7 +4082,7 @@ const steps = [
action: async () => {
const multipleChecks = 'Welcome Back!';
const element = await driver.findElement(By.css('#formLogin > p'));
const elementicon = await driver.wait(until.elementLocated(By.css('p > img')), 5000).catch(() => false);
const elementIcon = await driver.wait(until.elementLocated(By.css('p > img')), 5000).catch(() => false);
//Get icon, text, color, and size
const elementText = await element.getText();
@@ -4097,7 +4107,7 @@ const steps = [
errors.push(`Expected: Welcome Back text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgba(117, 117, 117, 1)') {
console.log('Passed: Welcome Back text color matched as expected');
} else {
@@ -4112,7 +4122,7 @@ const steps = [
}
//icon
if (elementicon) {
if (elementIcon) {
console.log('Passed: Welcome Back Icon present');
} else {
errors.push("Welcome Back Icon not found");
@@ -4161,7 +4171,7 @@ const steps = [
errors.push(`Expected: Login header text font "DM Serif Display", serif; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Login header text color matched as expected');
} else {
@@ -4218,7 +4228,7 @@ const steps = [
errors.push(`Expected: Username label text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Username label text color matched as expected');
} else {
@@ -4286,7 +4296,7 @@ const steps = [
errors.push(`Expected: Username label text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgb(108, 117, 125)') {
console.log('Passed: Username label text color matched as expected');
} else {
@@ -4343,7 +4353,7 @@ const steps = [
errors.push(`Expected: Password label text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Password label text color matched as expected');
} else {
@@ -4411,7 +4421,7 @@ const steps = [
errors.push(`Expected: Password label text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -gray
//color
if (elementColor === 'rgb(108, 117, 125)') {
console.log('Passed: Password label text color matched as expected');
} else {
@@ -4476,7 +4486,7 @@ const steps = [
errors.push(`Expected: Forgot password link text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -navy blue
//color
if (elementColor === 'rgba(40, 39, 90, 1)') {
console.log('Passed: Forgot password link text color matched as expected');
} else {
@@ -4533,7 +4543,7 @@ const steps = [
errors.push(`Expected: Login buttonk text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -teal
//color
if (elementColor === 'rgba(48, 200, 172, 1)') {
console.log('Passed: Login button text background color matched as expected');
} else {
@@ -4590,7 +4600,7 @@ const steps = [
errors.push(`Expected: Dont have an account text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -black
//color
if (elementColor === 'rgba(32, 32, 32, 1)') {
console.log('Passed: Dont have an account text color matched as expected');
} else {
@@ -4655,7 +4665,7 @@ const steps = [
errors.push(`Expected: Free trial button text font "Poppins, sans-serif"; Actual: ${elementFont}`);
}
//color -white
//color
if (elementColor === 'rgba(255, 255, 255, 1)') {
console.log('Passed: Free trial button background color matched as expected');
} else {
@@ -4687,6 +4697,10 @@ const steps = [
description: 'Verify EdGate copyright logo is present',
action: async () => {
const expectedEdGateCopyright = await driver.wait(until.elementLocated(By.css('.logincopyright > img')), 5000).catch(() => false);
//Track all errors
const errors = [];
if (expectedEdGateCopyright) {
console.log('Passed: EdGate copyright logo present');
} else {
@@ -4695,7 +4709,7 @@ const steps = [
}
},
//Login and Log out
//NEXT ACTION
{
description: 'Login and Log Out',
action: async () => {
@@ -4713,11 +4727,6 @@ const steps = [
await driver.findElement(By.css('.login')).click();
console.log('----->| NEXT ACTION: Clicked Login button');
//Wait for page to load completely
await driver.wait(async () => {
const readyState = await driver.executeScript('return document.readyState');
return readyState === 'complete';
}, 30000, 'ExACT Dashboard did not fully load within 30 seconds');
console.log('------------->| ExACT Dashboard |<-------------');
//Wait until the element exists in the DOM
@@ -4742,12 +4751,18 @@ const steps = [
errors.push(`Expected: "Correlation Dashboard"; Actual: "${elementText}"`);
}
//Wait for page to load completely
//Wait for the slowest resource to complete
await driver.wait(async () => {
const readyState = await driver.executeScript('return document.readyState');
return readyState === 'complete';
}, 30000, 'ExACT Dashboard did not fully load within 30 seconds');
console.log('Passed: ExACT Dashboard loaded successfully');
const completed = await driver.executeScript(`
const entries = performance.getEntriesByType('resource');
return entries.some(entry =>
entry.name.includes('content_sets.php') &&
entry.responseEnd > 0
);
`);
return completed;
}, 30000, 'My Content widget (content_sets.php) did not complete loading within 30 seconds');
console.log('Passed: My Content widget (content_sets.php) loaded successfully - Dashboard fully loaded');
await driver.findElement(By.css('#navbarDropdown > span')).click();
await driver.findElement(By.linkText('Log Out')).click();
@@ -4832,26 +4847,24 @@ try {
let allStepsPassed = true;
const failedSteps = []; //Track failed steps
for (const step of steps) {
const stepIndex = steps.indexOf(step) + 1;
const timestamp = new Date().toISOString();
try {
//Screenshot of failed step
try {
await step.action();
//Log a successful step with no screenshot
worksheet = logStep(
worksheet,
step.description,
'Passed',
stepIndex,
timestamp,
null //No screenshot for passed steps
null
);
} catch (error) {
//Only take screenshot if the step fails
const screenshotPath = await takeScreenshot(
driver,
stepIndex,
@@ -4868,17 +4881,21 @@ try {
);
console.error(`Step ${stepIndex} FAILED: ${error.message}`);
failedSteps.push(`Step ${stepIndex}: ${step.description} - ${error.message}`); //Track failed step
testStatus = 'Failed';
allStepsPassed = false;
}
}
//Script completed
if (allStepsPassed) {
console.log('PASSED: ExACT Login Page(ExACT_landingPage); All test steps completed successfully');
console.log('------------->| THE END |<-------------');
console.log('PASSED: EDGATE LANDING PAGE - ExACT Landing Page (ExACT_landingPage); All test steps completed successfully');
testStatus = 'Passed';
} else {
console.log('FAILED: ExACT Login Page(ExACT_landingPage); One or more test steps failed');
console.log('------------->| THE END |<-------------');
console.log('FAILED: EDGATE LANDING PAGE - ExACT Landing Page (ExACT_landingPage); One or more test steps failed');
console.log('FAILED STEPS:');
failedSteps.forEach(step => console.error(` ✗ ${step}`));
testStatus = 'Failed';
}
@@ -4892,7 +4909,7 @@ try {
} finally {
await driver.quit();
}
})();
})();
}
export default ExACT_landingPage;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff