Updated scripts

This commit is contained in:
2025-01-13 12:39:19 -08:00
parent 35590d07a6
commit 9edfd048d7
3 changed files with 548 additions and 75 deletions

View File

@@ -214,6 +214,7 @@ const steps = [
} }
}, },
//Biology-QA edit icon color
{ {
description: 'Validate Biology-QA edit icon color', description: 'Validate Biology-QA edit icon color',
action: async () => { action: async () => {
@@ -1631,7 +1632,7 @@ const steps = [
description: 'Validate Filtered Content 1 Alignment Pending label', description: 'Validate Filtered Content 1 Alignment Pending label',
action: async () => { action: async () => {
const elementText = await driver.findElement(By.css('#alignstatuslink873578654 > .display-alignment')).getText(); const elementText = await driver.findElement(By.css('#alignstatuslink873578654 > .display-alignment')).getText();
if (elementText !== 'Aligned (reset)') { if (elementText !== 'Alignment Pending (reset)') {
throw new Error(`Expected: Filtered Content 1 Alignment Pending label did not match; Actual: "${elementText}"`); throw new Error(`Expected: Filtered Content 1 Alignment Pending label did not match; Actual: "${elementText}"`);
} }
console.log('Passed: Filtered Content 1 Alignment Pending label matched as expected'); console.log('Passed: Filtered Content 1 Alignment Pending label matched as expected');

View File

@@ -4,7 +4,7 @@ import XLSX from 'xlsx';
import path from 'path'; import path from 'path';
const ExACT_dashboardMyContent = (req, res) => { const ExACT_dashboardMyContent = (req, res) => {
res.send('<h2>ExACT Automated Test Script - Dashboard - My Content: Initiated</h2>'); res.send('<h2>ExACT Automated Test Script - Dashboard - My Content widget: Initiated</h2>');
(async function example() { (async function example() {
let driver = await new Builder().forBrowser('chrome').build(); let driver = await new Builder().forBrowser('chrome').build();
let testStatus = 'Failed'; let testStatus = 'Failed';
@@ -221,28 +221,89 @@ const steps = [
if (elementStyle !== 'rgba(73, 80, 87, 1)') { if (elementStyle !== 'rgba(73, 80, 87, 1)') {
throw new Error(`Biology-QA edit icon color did not match; Actual: "${elementStyle}"`); throw new Error(`Biology-QA edit icon color did not match; Actual: "${elementStyle}"`);
} }
console.log('Passed: Bioloby-QA edit icon color matched as expected'); console.log('Passed: Biology-QA edit icon color matched as expected');
} }
}, },
//Biology-QA Count //Validate default sort order top6
//Biology - QA = 1046 (1st)
{ {
description: 'Validate Biology-QA Count', description: 'Validate default QA: Biology - QA 1046 count in 1st place',
action: async () => { action: async () => {
const elementText = await driver.findElement(By.css('#mycontentlist > #content-org-list > .content-org .badge')).getText(); const elementText = await driver.findElement(By.xpath('//li/div/span')).getText();
if (elementText !== '1046') { if (elementText !== '1046') {
throw new Error(`Expected: "1046"; Actual: "${elementText}"`); throw new Error(`Expected: Default content set order: Biology - QA count "1046" not listed in 1st place; Actual: "${elementText}"`);
} }
console.log('Passed: Biology-QA Count matched as expected'); console.log('Passed: Default content set order: Biology - QA count 1046 listed in 1st place');
}
},
//Geometry - QA = 981 (2nd)
{
description: 'Validate default QA: Geometry - QA 981 count in 2nd place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/li/div/span')).getText();
if (elementText !== '981') {
throw new Error(`Expected: Default content set order: Geometry - QA count "981" not listed in 2nd place; Actual: "${elementText}"`);
}
console.log('Passed: Default content set order: Geometry - QA count 981 listed in 2nd place');
}
},
//Math Alignment Import Test = 730 (3rd)
{
description: 'Validate default QA: Math Alignment Import Test 730 count in 3rd place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/li/div/span')).getText();
if (elementText !== '730') {
throw new Error(`Expected: Default content set order: Math Alignment Import Testcount "730" not listed in 3rd place; Actual: "${elementText}"`);
}
console.log('Passed: Default content set order: Math Alignment Import Test count 730 listed in 3rd place');
}
},
//English - QA = 409 (4th)
{
description: 'Validate default QA: English - QA 409 count in 4th place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/ul/li/div/span')).getText();
if (elementText !== '409') {
throw new Error(`Expected: Default content set order: English - QA count "409" not listed in 4th place; Actual: "${elementText}"`);
}
console.log('Passed: Default content set order: English - QA count 409 listed in 4th place');
}
},
//Algebra - QA = 188 (5th)
{
description: 'Validate default QA: Algebra- QA 188 count in 5th place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/ul/ul/li/div/span')).getText();
if (elementText !== '188') {
throw new Error(`Expected: Default content set order: Algebra - QA count "1882" not listed in 5th place; Actual: "${elementText}"`);
}
console.log('Passed: Default content set order: Algebra - QA count 188 listed in 5th place');
}
},
//US History - QA = 62 (6th)
{
description: `Validate default QA: US History - QA 62 count in 6th place`,
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/ul/ul/ul/li/div/span')).getText();
if (elementText !== '62') {
throw new Error(`Expected: Default content set order: US History - QA count "62" not listed in 6th place; Actual: "${elementText}"`);
}
console.log(`Passed: Default content set order: US History - QA count 62 listed in 6th place`);
} }
}, },
//MY CONTENT ITEM COUNT //MY CONTENT ITEM COUNT
//Click My Content Items Count button //NEXT ACTION -Click My Content Items Count button
{ description: 'Click My Content Items Count button', action: async () => await driver.findElement(By.css('#content_total')).click() }, { description: 'Click My Content Items Count button', action: async () => await driver.findElement(By.css('#content_total')).click() },
{ description: 'Wait for My Content Totals DIV to open', action: async () => await driver.sleep(2000) }, { description: 'Wait for My Content Totals DIV to open', action: async () => await driver.sleep(2000) },
//Wait for DIV REMOVE? //Wait for DIV
{ {
description: 'Wait for DIV to open', description: 'Wait for DIV to open',
action: async () => { action: async () => {
@@ -526,11 +587,11 @@ const steps = [
} }
}, },
//Close DIV button //NEXT ACTION -Close DIV button
{ description: 'Click My Contents Count DIV Close button', action: async () => await driver.findElement(By.css('#all_content_modal .btn-secondary')).click() }, { description: 'Click My Contents Count DIV Close button', action: async () => await driver.findElement(By.css('#all_content_modal .btn-secondary')).click() },
{ description: 'Wait for My Content Totals DIV to close', action: async () => await driver.sleep(2000) }, { description: 'Wait for My Content Totals DIV to close', action: async () => await driver.sleep(2000) },
//EDIT BIOLOGY - QA CONTENT SET //NEXT ACTION -EDIT BIOLOGY - QA CONTENT SET
{ description: 'Click Biology-QA edit icon', action: async () => await driver.findElement(By.css('#mycontentlist > #content-org-list > .content-org .fa')).click() }, { description: 'Click Biology-QA edit icon', action: async () => await driver.findElement(By.css('#mycontentlist > #content-org-list > .content-org .fa')).click() },
{ description: 'Wait for Edit Content DIV to open', action: async () => await driver.sleep(5000) }, { description: 'Wait for Edit Content DIV to open', action: async () => await driver.sleep(5000) },
@@ -674,12 +735,12 @@ const steps = [
} }
}, },
//Close edit DIV //NEXT ACTION -Close edit DIV
{ description: 'Click X icon', action: async () => await driver.findElement(By.css('.modal-lg .modal-header span')).click() }, { description: 'Click X icon', action: async () => await driver.findElement(By.css('.modal-lg .modal-header span')).click() },
{ description: 'Driver sleep', action: async () => await driver.sleep(2000) }, { description: 'Driver sleep', action: async () => await driver.sleep(2000) },
//BIOLOGY - QA ITEM COUNT CHECK //BIOLOGY - QA ITEM COUNT CHECK
//Verify Biology - QA item Count //NEXT ACTION -Verify Biology - QA item Count
{ description: 'Click Biology-QA item Count link', action: async () => await driver.findElement(By.css('#mycontentlist > #content-org-list > .content-org .badge')).click() }, { description: 'Click Biology-QA item Count link', action: async () => await driver.findElement(By.css('#mycontentlist > #content-org-list > .content-org .badge')).click() },
{ description: 'Wait for My Content Totals DIV to open', action: async () => await driver.sleep(5000) }, { description: 'Wait for My Content Totals DIV to open', action: async () => await driver.sleep(5000) },
@@ -871,11 +932,11 @@ const steps = [
} }
}, },
//Click Close DIV button //NEXT ACTION -Click Close DIV button
{ description: 'Click My Contents Count DIV Close button', action: async () => await driver.findElement(By.css('#all_content_modal .btn-secondary')).click() }, { description: 'Click My Contents Count DIV Close button', action: async () => await driver.findElement(By.css('#all_content_modal .btn-secondary')).click() },
{ description: 'Wait for My Content Totals DIV to close', action: async () => await driver.sleep(2000) }, { description: 'Wait for My Content Totals DIV to close', action: async () => await driver.sleep(2000) },
//Click My Content ellipsis icon //NEXT ACTION -Click My Content ellipsis icon
{ description: 'Click Ellipsis icon', action: async () => await driver.findElement(By.css('.fa-ellipsis-h')).click() }, { description: 'Click Ellipsis icon', action: async () => await driver.findElement(By.css('.fa-ellipsis-h')).click() },
{ description: 'Driver sleep', action: async () => await driver.sleep(2000) }, { description: 'Driver sleep', action: async () => await driver.sleep(2000) },
@@ -951,11 +1012,11 @@ const steps = [
} }
}, },
//CREATE CONTENT SET //NEXT ACTION -CREATE CONTENT SET
{ description: 'Click Create Content Set link', action: async () => await driver.findElement(By.linkText('Create Content Set')).click() }, { description: 'Click Create Content Set link', action: async () => await driver.findElement(By.linkText('Create Content Set')).click() },
{ description: 'Driver sleep', action: async () => await driver.sleep(5000) }, { description: 'Driver sleep', action: async () => await driver.sleep(5000) },
//Wait for dashboard to load //Wait for DIV to open
{ {
description: 'Wait for DIV to open', description: 'Wait for DIV to open',
action: async () => { action: async () => {
@@ -1035,7 +1096,7 @@ const steps = [
} }
}, },
//Create Content Set Validation - No Name //NEXT ACTION -Create Content Set Validation - No Name
{ description: 'Click create button without content set name', action: async () => await driver.findElement(By.css('.modal-lg #modalop')).click() }, { description: 'Click create button without content set name', action: async () => await driver.findElement(By.css('.modal-lg #modalop')).click() },
{ description: 'Driver sleep', action: async () => await driver.sleep(2000) }, { description: 'Driver sleep', action: async () => await driver.sleep(2000) },
@@ -1063,7 +1124,7 @@ const steps = [
} }
}, },
//Create Content Set Validation - Existing Name //NEXT ACTION -Create Content Set Validation - Existing Name
{ description: 'Enter existing content set name', action: async () => await driver.findElement(By.css('#orgname')).sendKeys('Biology - QA') }, { description: 'Enter existing content set name', action: async () => await driver.findElement(By.css('#orgname')).sendKeys('Biology - QA') },
{ description: 'Click create button', action: async () => await driver.findElement(By.css('.modal-lg #modalop')).click() }, { description: 'Click create button', action: async () => await driver.findElement(By.css('.modal-lg #modalop')).click() },
{ description: 'Driver sleep', action: async () => await driver.sleep(2000) }, { description: 'Driver sleep', action: async () => await driver.sleep(2000) },
@@ -1092,7 +1153,7 @@ const steps = [
} }
}, },
//Enter Content Set name: "Automated Content Set - To be deleted" //NEXT ACTION -Enter Content Set name: "Automated Content Set - To be deleted"
{ description: 'Clear content set name', action: async () => await driver.findElement(By.css('.form-row:nth-child(2) #orgname')).clear() }, { description: 'Clear content set name', action: async () => await driver.findElement(By.css('.form-row:nth-child(2) #orgname')).clear() },
{ description: 'Driver sleep', action: async () => await driver.sleep(1000) }, { description: 'Driver sleep', action: async () => await driver.sleep(1000) },
{ description: 'Enter content set name', action: async () => await driver.findElement(By.css('.form-row:nth-child(2) #orgname')).sendKeys(createContentSetName) }, { description: 'Enter content set name', action: async () => await driver.findElement(By.css('.form-row:nth-child(2) #orgname')).sendKeys(createContentSetName) },
@@ -1105,9 +1166,9 @@ const steps = [
action: async () => { action: async () => {
const elementText = await driver.findElement(By.css('strong')).getText(); const elementText = await driver.findElement(By.css('strong')).getText();
if (elementText !== 'The content set was successfuly created') { if (elementText !== 'The content set was successfuly created') {
throw new Error(`Expected: confirmation message did not match; Actual: "${elementText}"`); throw new Error(`Expected: Alert banner created confirmation message did not match; Actual: "${elementText}"`);
} }
console.log('Passed: Confirmation message displayed as expected'); console.log('Passed: Alert banner created confirmation message displayed as expected');
} }
}, },
@@ -1117,9 +1178,9 @@ const steps = [
action: async () => { action: async () => {
const elementStyle = await driver.findElement(By.css('#statalert')).getCssValue('background-color'); const elementStyle = await driver.findElement(By.css('#statalert')).getCssValue('background-color');
if (elementStyle !== 'rgba(40, 167, 69, 1)') { if (elementStyle !== 'rgba(40, 167, 69, 1)') {
throw new Error(`Expected: Confirmation message background color did not match; Actual: "${elementStyle}"`); throw new Error(`Expected: Alert banner background color did not match; Actual: "${elementStyle}"`);
} }
console.log('Passed: Confirmation background color matched as expected'); console.log('Passed: Alert banner background color matched as expected');
} }
}, },
@@ -1144,7 +1205,7 @@ const steps = [
}, },
//ITEMS PAGE //ITEMS PAGE
//Click created content set link //NEXT ACTION -Click created content set link
{ description: 'Click created content set title link', action: async () => await driver.findElement(By.linkText(createContentSetName)).click() }, { description: 'Click created content set title link', action: async () => await driver.findElement(By.linkText(createContentSetName)).click() },
//Wait for DIV //Wait for DIV
@@ -1215,7 +1276,7 @@ const steps = [
} }
}, },
//NAVIGATE BACK TO DASHBOARD //NEXT ACTION -NAVIGATE BACK TO DASHBOARD
{ description: 'Click Dashboard navigation link', action: async () => await driver.findElement(By.linkText('Dashboard')).click() }, { description: 'Click Dashboard navigation link', action: async () => await driver.findElement(By.linkText('Dashboard')).click() },
{ description: 'Wait for login process to complete', action: async () => await driver.sleep(10000) }, { description: 'Wait for login process to complete', action: async () => await driver.sleep(10000) },
@@ -1227,7 +1288,7 @@ const steps = [
} }
}, },
//EXPORT CONTENT //NEXT ACTION -EXPORT CONTENT
{ description: 'Click Ellipsis icon', action: async () => await driver.findElement(By.css('.fa-ellipsis-h')).click() }, { description: 'Click Ellipsis icon', action: async () => await driver.findElement(By.css('.fa-ellipsis-h')).click() },
{ description: 'Driver sleep', action: async () => await driver.sleep(2000) }, { description: 'Driver sleep', action: async () => await driver.sleep(2000) },
@@ -1303,7 +1364,7 @@ const steps = [
} }
}, },
//Click Export Content Set link //NEXT ACTION -Click Export Content Set link
{ description: 'Click Export Content Set link', action: async () => await driver.findElement(By.linkText('Export Content Set')).click() }, { description: 'Click Export Content Set link', action: async () => await driver.findElement(By.linkText('Export Content Set')).click() },
{ description: 'Driver sleep', action: async () => await driver.sleep(2000) }, { description: 'Driver sleep', action: async () => await driver.sleep(2000) },
@@ -1423,7 +1484,7 @@ const steps = [
} }
}, },
//Click dropdown //NEXT ACTION -Click dropdown
{ description: 'Click Export Content dropdown', action: async () => await driver.findElement(By.css('.form-group:nth-child(1) .multiselect-selected-text')).click() }, { description: 'Click Export Content dropdown', action: async () => await driver.findElement(By.css('.form-group:nth-child(1) .multiselect-selected-text')).click() },
{ description: 'Driver sleep', action: async () => await driver.sleep(2000) }, { description: 'Driver sleep', action: async () => await driver.sleep(2000) },
@@ -1488,7 +1549,7 @@ const steps = [
} }
}, },
//Filter content list by QA //NEXT ACTION -Filter content list by QA
{ description: 'Filter Content Set Search list by QA', action: async () => await driver.findElement(By.css('.show > .multiselect-item .form-control')).sendKeys('QA') }, { description: 'Filter Content Set Search list by QA', action: async () => await driver.findElement(By.css('.show > .multiselect-item .form-control')).sendKeys('QA') },
{ description: 'Driver sleep', action: async () => await driver.sleep(2000) }, { description: 'Driver sleep', action: async () => await driver.sleep(2000) },
@@ -1637,31 +1698,31 @@ const steps = [
} }
}, },
//Automated - QA Content Set - To be deleted checkbox //Created Content Set Name checkbox
{ {
description: 'Verify Automated - QA Content Set - To be deleted checkbox icon is present', description: `Verify ${createContentSetName} checkbox icon is present`,
action: async () => action: async () =>
{ const expectedIcon = await driver.wait(until.elementLocated(By.css('.show > li:nth-child(19) input')), 5000).catch(() => false); { const expectedIcon = await driver.wait(until.elementLocated(By.css('.show > li:nth-child(19) input')), 5000).catch(() => false);
if (!expectedIcon) { if (!expectedIcon) {
throw new Error('Export Automated - QA Content Set - To be deleted checkbox icon not found'); throw new Error(`Export "${createContentSetName}" checkbox icon not found`);
} }
console.log('Passed: Export Automated - QA Content Set - To be deleted checkbox icon present'); console.log(`Passed: Export "${createContentSetName}" checkbox icon present`);
} }
}, },
//Automated - QA Content Set - To be deleted search handle text //Created Content Set Name search handle text
{ {
description: 'Validate export Automated - QA Content Set - To be deleted handle text', description: `Validate export ${createContentSetName} handle text`,
action: async () => { action: async () => {
const elementText = await driver.findElement(By.css('.show > li:nth-child(19) .checkbox')).getText(); const elementText = await driver.findElement(By.css('.show > li:nth-child(19) .checkbox')).getText();
if (elementText !== 'Automated - QA Content Set - To be deleted') { if (elementText !== createContentSetName) {
throw new Error(`Expected: "Automated - QA Content Set - To be deleted"; Actual: "${elementText}"`); throw new Error(`Expected: "${createContentSetName}"; Actual: "${elementText}"`);
} }
console.log('Passed: Automated - QA Content Set - To be deleted handle text matched as expected'); console.log(`Passed: "${createContentSetName}" handle text matched as expected`);
} }
}, },
//Select created content set to export //NEXT ACTION -Select created content set to export
{ description: 'Click Automated QA checkbox', action: async () => await driver.findElement(By.css('.show > li:nth-child(19) input')).click() }, { description: 'Click Automated QA checkbox', action: async () => await driver.findElement(By.css('.show > li:nth-child(19) input')).click() },
{ description: 'Wait for login process to complete', action: async () => await driver.sleep(2000) }, { description: 'Wait for login process to complete', action: async () => await driver.sleep(2000) },
{ description: 'Click Export button', action: async () => await driver.findElement(By.css('.modal-footer:nth-child(6) > .btn-primary')).click() }, { description: 'Click Export button', action: async () => await driver.findElement(By.css('.modal-footer:nth-child(6) > .btn-primary')).click() },
@@ -1751,7 +1812,7 @@ const steps = [
} }
}, },
//NAVIGATE BACK TO DASHBOARD //NEXT ACTION -NAVIGATE BACK TO DASHBOARD
{ description: 'Click Dashboard navigation link', action: async () => await driver.findElement(By.linkText('Dashboard')).click() }, { description: 'Click Dashboard navigation link', action: async () => await driver.findElement(By.linkText('Dashboard')).click() },
{ description: 'Wait for login process to complete', action: async () => await driver.sleep(10000) }, { description: 'Wait for login process to complete', action: async () => await driver.sleep(10000) },
@@ -1763,24 +1824,237 @@ const steps = [
} }
}, },
//Filter content list by - QA //NEXT ACTION -Filter content list by - QA
{ description: 'Enter content set name', action: async () => await driver.findElement(By.css('#content-org-filter')).sendKeys('QA') }, { description: 'Enter content set name', action: async () => await driver.findElement(By.css('#content-org-filter')).sendKeys('QA') },
{ description: 'Wait for content list to filter', action: async () => await driver.sleep(2000) }, { description: 'Wait for content list to filter', action: async () => await driver.sleep(2000) },
//Validate created content item count //Validate sort order by applying filter QA
//Biology - QA = 1046 (1st)
{ {
description: 'Validate created content count', description: 'Validate by filter QA: Biology - QA 1046 count in 1st place',
action: async () => { action: async () => {
const elementText = await driver.findElement(By.css('#content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list .badge')).getText(); const elementText = await driver.findElement(By.xpath('//li/div/span')).getText();
if (elementText !== '0') { if (elementText !== '1046') {
throw new Error(`Expected: created content item count did not match; Actual: "${elementText}"`); throw new Error(`Expected: Filtered by QA: Biology - QA count "1046" not sorted in 1st place; Actual: "${elementText}"`);
} }
console.log('Passed: Created content item count matched as expected'); console.log('Passed: Filtered by QA: Biology - QA count 1046 sorted in 1st place');
} }
}, },
//DELETE CREATED CONTENT SET //Geometry - QA = 981 (2nd)
{ description: 'Click Automated - QA Content Set - To be deleted edit icon', action: async () => await driver.findElement(By.css('#content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list > #content-org-list .fa')).click() }, {
description: 'Validate by filter QA: Geometry - QA 981 count in 2nd place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/li/div/span')).getText();
if (elementText !== '981') {
throw new Error(`Expected: Filtered by QA: Geometry - QA count "981" not sorted in 2nd place; Actual: "${elementText}"`);
}
console.log('Passed: Filtered by QA: Geometry - QA count 981 sorted in 2nd place');
}
},
//English II - QA = 409 (3rd)
{
description: 'Validate by filter QA: English II - QA 409 count in 3rd place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/ul/li/div/span')).getText();
if (elementText !== '409') {
throw new Error(`Expected: Filtered by QA: English II - QA count "409" not sorted in 3rd place; Actual: "${elementText}"`);
}
console.log('Passed: Filtered by QA: English II - QA count 409 sorted in 3rd place');
}
},
//Algebra - QA = 188 (4th)
{
description: 'Validate by filter QA: Algebra - QA 188 count in 4th place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/ul/ul/li/div/span')).getText();
if (elementText !== '188') {
throw new Error(`Expected: Filtered by QA: Algebra - QA count "188" not sorted in 4th place; Actual: "${elementText}"`);
}
console.log('Passed: Filtered by QA: Algebra - QA count 188 sorted in 4th place');
}
},
//US History - QA = 62 (5th)
{
description: 'Validate by filter QA: US History - QA 162 count in 5th place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/ul/ul/ul/li/div/span')).getText();
if (elementText !== '62') {
throw new Error(`Expected: Filtered by QA: US History - QA count "62" not sorted in 5th place; Actual: "${elementText}"`);
}
console.log('Passed: Filtered by QA: US History - QA count 62 sorted in 5th place');
}
},
//Created Content Set = 0 (6th)
{
description: `Validate by filter QA: ${createContentSetName} 0 count in 6th place`,
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/li/div/span')).getText();
if (elementText !== '0') {
throw new Error(`Expected: Filtered by QA: ${createContentSetName} count "0" not sorted in 6th place; Actual: "${elementText}"`);
}
console.log(`Passed: Filtered by QA: ${createContentSetName} count 0 sorted in 6th place`);
}
},
//NEXT ACTION -Sort content set list by applying sort by Name
{ description: 'Select filter sort order by Name', action: async () => await driver.findElement(By.css('#orgsort > option:nth-child(2)')).click() },
{ description: 'Wait for content list to filter', action: async () => await driver.sleep(2000) },
//Algebra - QA = 188 (1st)
{
description: 'Validate by filter name: Algebra - QA 188 count in 1st place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//li/div/span')).getText();
if (elementText !== '188') {
throw new Error(`Expected: Filtered by Name: Algebra - QA count "188" not sorted in 1st place; Actual: "${elementText}"`);
}
console.log('Passed: Filtered by Name: Algebra - QA count 188 sorted in 1st place');
}
},
//Created Content Set = 0 (2nd)
{
description: `Validate by filter name: ${createContentSetName} 0 count in 2nd place`,
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/li/div/span')).getText();
if (elementText !== '0') {
throw new Error(`Expected: Filtered by Name: ${createContentSetName} count "0" not sorted in 2nd place; Actual: "${elementText}"`);
}
console.log(`Passed: Filtered by Name: ${createContentSetName} count 0 sorted in 2nd place`);
}
},
//Biology - QA = 1046 (3rd)
{
description: 'Validate by filter name: Biology - QA 1046 count in 3rd place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/li/div/span')).getText();
if (elementText !== '1046') {
throw new Error(`Expected: Filtered by Name: Biology - QA count "1046" not sorted in 3rd place; Actual: "${elementText}"`);
}
console.log('Passed: Filtered by Name: Biology - QA count 1046 sorted in 3rd place');
}
},
//Demo - User Submitted Content = 17 (4th)
{
description: 'Validate by filter name: Demo - User Submitted Content 17 count in 4th place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/ul/li/div/span')).getText();
if (elementText !== '17') {
throw new Error(`Expected: Filtered by Name: Demo - User Submitted ContentA count "17" not sorted in 4th place; Actual: "${elementText}"`);
}
console.log('Passed: Filtered by Name: Demo - User Submitted Content count 17 sorted in 4th place');
}
},
//English II - QA = 409 (5th)
{
description: 'Validate by filter name: English II - QA 409 count in 5th place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/ul/ul/li/div/span')).getText();
if (elementText !== '409') {
throw new Error(`Expected: Filtered by Name: English II - QA count "409" not sorted in 5th place; Actual: "${elementText}"`);
}
console.log('Passed: Filtered by Name: English II - QA 409 count 409 sorted in 5th place');
}
},
//Exploring - Access = 0 (6th)
{
description: `Validate by filter name: Exploring - Access 0 count in 6th place`,
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/ul/ul/ul/li/div/span')).getText();
if (elementText !== '0') {
throw new Error(`Expected: Filtered by Name: Exploring - Access count "0" not sorted in 6th place; Actual: "${elementText}"`);
}
console.log(`Passed: Filtered by Name: Exploring - Access count 0 sorted in 6th place`);
}
},
//NEXT ACTION -Filter content list by - QA by applying sort by Name and filtered by QA
{ description: 'Enter content set name', action: async () => await driver.findElement(By.css('#content-org-filter')).sendKeys('QA') },
{ description: 'Wait for content list to filter', action: async () => await driver.sleep(2000) },
//Algebra - QA = 188 (1st)
{
description: 'Validate by filter QA and sorted by name: Algebra - QA 188 count in 1st place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//li/div/span')).getText();
if (elementText !== '188') {
throw new Error(`Expected: Filtered by QA and sorted by Name: Algebra - QA count "188" not sorted in 1st place; Actual: "${elementText}"`);
}
console.log('Passed: Filtered by QA and sorted by Name: Algebra - QA count 188 sorted in 1st place');
}
},
//Created Content Set = 0 (2nd)
{
description: `Validate by filter QA and sorted by name: ${createContentSetName} 0 count in 2nd place`,
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/li/div/span')).getText();
if (elementText !== '0') {
throw new Error(`Expected: Filtered by QA and sorted by Name: ${createContentSetName} count "0" not sorted in 2nd place; Actual: "${elementText}"`);
}
console.log(`Passed: Filtered by QA and sorted by Name: ${createContentSetName} count 0 sorted in 2nd place`);
}
},
//Biology - QA = 1046 (3rd)
{
description: 'Validate by filter QA and sorted by name: Biology - QA 1046 count in 3rd place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/li/div/span')).getText();
if (elementText !== '1046') {
throw new Error(`Expected: Filtered by QA and sorted by Name: Biology - QA count "1046" not sorted in 3rd place; Actual: "${elementText}"`);
}
console.log('Passed: Filtered by QA and sorted by Name: Biology - QA count 1046 sorted in 3rd place');
}
},
//English II - QA = 409 (4th)
{
description: 'Validate by filter QA and sorted by name: English II - QA 409 count in 4th place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/ul/ul/li/div/span')).getText();
if (elementText !== '409') {
throw new Error(`Expected: Filtered by QA and sorted by Name: English II - QA count "409" not sorted in 4th place; Actual: "${elementText}"`);
}
console.log('Passed: Filtered by QA and sorted by Name: English II - QA 409 count 409 sorted in 4th place');
}
},
//Geometry - QA = 981 (5th)
{
description: 'Validate by filter QA and sorted by name: Geometry - QA 981 count in 5th place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/ul/ul/ul/ul/ul/ul/li/div/span')).getText();
if (elementText !== '981') {
throw new Error(`Expected: Filtered by QA and sorted by Name: Geometry - QA count "981" not sorted in 5th place; Actual: "${elementText}"`);
}
console.log('Passed: Filtered by QA and sorted by Name: Geometry - QA count 981 sorted in 5th place');
}
},
//US History - QA = 62 (6th)
{
description: 'Validate by filter QA and sorted by name: US History - QA 162 count in 6th place',
action: async () => {
const elementText = await driver.findElement(By.xpath('//ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/ul/li/div/span')).getText();
if (elementText !== '62') {
throw new Error(`Expected: Filtered by QA and sorted by Name: US History - QA count "62" not sorted in 6th place; Actual: "${elementText}"`);
}
console.log('Passed: Filtered by QA and sorted by Name: US History - QA count 62 sorted in 6th place');
}
},
//NEXT ACTION -DELETE CREATED CONTENT SET
{ description: `Click ${createContentSetName} edit icon`, action: async () => await driver.findElement(By.css('#mycontentlist > #content-org-list > #content-org-list > .content-org .fa')).click() },
{ description: 'Wait for Edit Content DIV to open', action: async () => await driver.sleep(5000) }, { description: 'Wait for Edit Content DIV to open', action: async () => await driver.sleep(5000) },
//Wait for dashboard to load //Wait for dashboard to load
@@ -1820,8 +2094,8 @@ const steps = [
description: 'Validate Edit DIV textbox', description: 'Validate Edit DIV textbox',
action: async () => { action: async () => {
const elementValue = await driver.findElement(By.css('#orgname')).getAttribute('value'); const elementValue = await driver.findElement(By.css('#orgname')).getAttribute('value');
if (elementValue !== 'Automated - QA Content Set - To be deleted') { if (elementValue !== createContentSetName) {
throw new Error(`Edit DIV textbox Expected: "Automated - QA Content Set - To be deleted"; Actual: "${elementValue}"`); throw new Error(`Edit DIV textbox Expected: "${createContentSetName}"; Actual: "${elementValue}"`);
} }
console.log('Passed: Edit DIV textbox matched as expected'); console.log('Passed: Edit DIV textbox matched as expected');
} }
@@ -1899,10 +2173,100 @@ const steps = [
} }
}, },
//Click Delete content button //NEXT ACTION -Delete created content set
{ description: 'Click Delete button', action: async () => await driver.findElement(By.css('#orgdelete')).click() }, {
{ description: 'Driver sleep', action: async () => await driver.sleep(5000) }, description: 'Delete created content and validate assert message',
//NEED TO READ ALERT MESSAGE AND CLICK OK TO DELETE CONTENT action: async () => {
await driver.wait(
until.elementLocated(By.css('#myModal')),
5000
);
await driver.sleep(2000);
const deleteButton = await driver.wait(
until.elementLocated(By.css('#orgdelete')),
5000
);
await deleteButton.click();
await driver.sleep(2000);
const alert = await driver.wait(
until.alertIsPresent(),
5000
);
const alertText = await alert.getText();
try {
if (alertText !== `Are you sure you want to delete ${createContentSetName}? This operation cannot be undone or recovered.`) {
throw new Error(`Expected: "Are you sure you want to delete ${createContentSetName}? This operation cannot be undone or recovered."; Actual: "${alertText}"`);
}
console.log('Passed: Delete Alert DIV text matched as expected');
console.log('Passed: Delete Alert DIV, OK/Cancel button text matched as expected');
} catch (error) {
console.error('FAILED: Delete Alert DIV, unable to validate text; Error Message: ', error.message);
await alert.dismiss();
throw error;
}
await alert.accept();
await driver.sleep(2000);
}
},
//Validate confirmation message
{
description: 'Validate confirmation message',
action: async () => {
const elementText = await driver.findElement(By.css('strong')).getText();
if (elementText !== 'The content set was successfuly deleted') {
throw new Error(`Expected: Alert banner deleted confirmation message did not match; Actual: "${elementText}"`);
}
console.log('Passed: Alert banner deleted confirmation message displayed as expected');
}
},
//Validate confirmation message background color -green
{
description: 'Validate confirmation message background color',
action: async () => {
const elementStyle = await driver.findElement(By.css('#statalert')).getCssValue('background-color');
if (elementStyle !== 'rgba(40, 167, 69, 1)') {
throw new Error(`Expected: Alert banner background color did not match; Actual: "${elementStyle}"`);
}
console.log('Passed: Alert banner background color matched as expected');
}
},
//Wait for dashboard to load
{
description: 'Wait for dashboard load to completely',
action: async () => {
return await driver.wait(until.elementLocated(By.linkText('View Details')), 10000).catch(() => false);
}
},
//Verify content was deleted
{
description: 'Verify content set deletion',
action: async () => {
const filterSearch = await driver.wait(
until.elementLocated(By.css('#content-org-filter')),
5000
);
await filterSearch.clear();
await filterSearch.sendKeys('QA');
await driver.sleep(2000);
const createdContentSet = await driver.findElements(
By.linkText(createContentSetName)
);
if (createdContentSet.length > 0) {
throw new Error('Content set was not deleted successfully');
}
}
}
]; ];

View File

@@ -1551,7 +1551,7 @@ const steps = [
} }
}, },
//Browse tab title //Browse tab title (active)
{ {
description: 'Validate browse tab title', description: 'Validate browse tab title',
action: async () => { action: async () => {
@@ -1563,7 +1563,19 @@ const steps = [
} }
}, },
//Browse tab title -navy blue //Browse tab text title -white (active)
{
description: 'Validate browse tab text color',
action: async () => {
const elementStyle = await driver.findElement(By.linkText('Browse')).getCssValue('color');
if (elementStyle !== 'rgba(255, 255, 255, 1)') {
throw new Error(`Expected: "Browse" tab text title color did not match; Actual: "${elementStyle}"`);
}
console.log('Passed: Browse tab text title color matched as expected');
}
},
//Browse tab title -navy blue (active)
{ {
description: 'Validate browse tab color', description: 'Validate browse tab color',
action: async () => { action: async () => {
@@ -1575,7 +1587,7 @@ const steps = [
} }
}, },
//By Standard tab title //By Standard tab title (dimmed)
{ {
description: 'Validate by standard tab title', description: 'Validate by standard tab title',
action: async () => { action: async () => {
@@ -1587,7 +1599,19 @@ const steps = [
} }
}, },
//By Standard tab title -gray (dimmed) //By Standard tab text title -gray (dimmed)
{
description: 'Validate by standard tab text color',
action: async () => {
const elementStyle = await driver.findElement(By.linkText('By Standard')).getCssValue('color');
if (elementStyle !== 'rgba(182, 186, 181, 1)') {
throw new Error(`Expected: "By Standard" tab text title color did not match; Actual: "${elementStyle}"`);
}
console.log('Passed: By Standard tab text title color matched as expected');
}
},
//By Standard tab title -white (dimmed)
{ {
description: 'Validate by standard tab color', description: 'Validate by standard tab color',
action: async () => { action: async () => {
@@ -1599,7 +1623,7 @@ const steps = [
} }
}, },
//AutoAlign tab title //AutoAlign tab title (dimmed)
{ {
description: 'Validate AutoAlign tab title', description: 'Validate AutoAlign tab title',
action: async () => { action: async () => {
@@ -1611,7 +1635,19 @@ const steps = [
} }
}, },
//AutoAlign tab title -gray (dimmed) //AutoAlign tab text title -gray (dimmed)
{
description: 'Validate AutoAlign tab text color',
action: async () => {
const elementStyle = await driver.findElement(By.linkText('AutoAlign')).getCssValue('color');
if (elementStyle !== 'rgba(182, 186, 181, 1)') {
throw new Error(`Expected: "AutoAlign" tab text title color did not match; Actual: "${elementStyle}"`);
}
console.log('Passed: AutoAlign tab text title color matched as expected');
}
},
//AutoAlign tab title -white (dimmed)
{ {
description: 'Validate AutoAlign tab color', description: 'Validate AutoAlign tab color',
action: async () => { action: async () => {
@@ -1951,7 +1987,7 @@ const steps = [
{ description: 'Click By Standard tab link', action: async () => await driver.findElement(By.linkText('By Standard')).click() }, { description: 'Click By Standard tab link', action: async () => await driver.findElement(By.linkText('By Standard')).click() },
{ description: 'Wait for action to complete', action: async () => await driver.sleep(5000) }, { description: 'Wait for action to complete', action: async () => await driver.sleep(5000) },
//Browse tab title //Browse tab title (dimmed)
{ {
description: 'Validate browse tab title', description: 'Validate browse tab title',
action: async () => { action: async () => {
@@ -1963,7 +1999,19 @@ const steps = [
} }
}, },
//Browse tab title -gray (dimmed) //Browse tab text title -gray (dimmed)
{
description: 'Validate browse tab text color',
action: async () => {
const elementStyle = await driver.findElement(By.linkText('Browse')).getCssValue('color');
if (elementStyle !== 'rgba(182, 186, 181, 1)') {
throw new Error(`Expected: "Browse" tab text title color did not match; Actual: "${elementStyle}"`);
}
console.log('Passed: Browse tab text title color matched as expected');
}
},
//Browse tab title -white (dimmed)
{ {
description: 'Validate browse tab color', description: 'Validate browse tab color',
action: async () => { action: async () => {
@@ -1975,7 +2023,7 @@ const steps = [
} }
}, },
//By Standard tab title //By Standard tab title (active)
{ {
description: 'Validate by standard tab title', description: 'Validate by standard tab title',
action: async () => { action: async () => {
@@ -1987,7 +2035,19 @@ const steps = [
} }
}, },
//By Standard tab title -navy blue //By Standard tab text title -navy blue (active)
{
description: 'Validate by standard tab text color',
action: async () => {
const elementStyle = await driver.findElement(By.linkText('By Standard')).getCssValue('color');
if (elementStyle !== 'rgba(255, 255, 255, 1)') {
throw new Error(`Expected: "By Standard" tab text title color did not match; Actual: "${elementStyle}"`);
}
console.log('Passed: By Standard tab text title color matched as expected');
}
},
//By Standard tab title -navy blue (active)
{ {
description: 'Validate by standard tab color', description: 'Validate by standard tab color',
action: async () => { action: async () => {
@@ -1999,7 +2059,7 @@ const steps = [
} }
}, },
//AutoAlign tab title //AutoAlign tab title (dimmed)
{ {
description: 'Validate AutoAlign tab title', description: 'Validate AutoAlign tab title',
action: async () => { action: async () => {
@@ -2011,7 +2071,19 @@ const steps = [
} }
}, },
//AutoAlign tab title -gray (dimmed) //AutoAlign tab text title -gray (dimmed)
{
description: 'Validate AutoAlign tab text color',
action: async () => {
const elementStyle = await driver.findElement(By.linkText('AutoAlign')).getCssValue('color');
if (elementStyle !== 'rgba(182, 186, 181, 1)') {
throw new Error(`Expected: "AutoAlign" tab text title color did not match; Actual: "${elementStyle}"`);
}
console.log('Passed: AutoAlign tab text title color matched as expected');
}
},
//AutoAlign tab title -white (dimmed)
{ {
description: 'Validate AutoAlign tab color', description: 'Validate AutoAlign tab color',
action: async () => { action: async () => {
@@ -2051,7 +2123,7 @@ const steps = [
{ description: 'Click AutoAlign tab link', action: async () => await driver.findElement(By.linkText('AutoAlign')).click() }, { description: 'Click AutoAlign tab link', action: async () => await driver.findElement(By.linkText('AutoAlign')).click() },
{ description: 'Wait for action to complete', action: async () => await driver.sleep(5000) }, { description: 'Wait for action to complete', action: async () => await driver.sleep(5000) },
//Browse tab title //Browse tab title (dimmed)
{ {
description: 'Validate browse tab title', description: 'Validate browse tab title',
action: async () => { action: async () => {
@@ -2063,7 +2135,19 @@ const steps = [
} }
}, },
//Browse tab title -gray (dimmed) //Browse tab text title -gray (dimmed)
{
description: 'Validate browse tab text color',
action: async () => {
const elementStyle = await driver.findElement(By.linkText('Browse')).getCssValue('color');
if (elementStyle !== 'rgba(182, 186, 181, 1)') {
throw new Error(`Expected: "Browse" tab text title color did not match; Actual: "${elementStyle}"`);
}
console.log('Passed: Browse tab text title color matched as expected');
}
},
//Browse tab title -white (dimmed)
{ {
description: 'Validate browse tab color', description: 'Validate browse tab color',
action: async () => { action: async () => {
@@ -2075,7 +2159,7 @@ const steps = [
} }
}, },
//By Standard tab title //By Standard tab title (dimmed)
{ {
description: 'Validate by standard tab title', description: 'Validate by standard tab title',
action: async () => { action: async () => {
@@ -2087,7 +2171,19 @@ const steps = [
} }
}, },
//By Standard tab title -gray (dimmed) //By Standard tab text title -gray (dimmed)
{
description: 'Validate by standard tab text color',
action: async () => {
const elementStyle = await driver.findElement(By.linkText('By Standard')).getCssValue('color');
if (elementStyle !== 'rgba(182, 186, 181, 1)') {
throw new Error(`Expected: "By Standard" tab text title color did not match; Actual: "${elementStyle}"`);
}
console.log('Passed: By Standard tab text title color matched as expected');
}
},
//By Standard tab title -white (dimmed)
{ {
description: 'Validate by standard tab color', description: 'Validate by standard tab color',
action: async () => { action: async () => {
@@ -2099,7 +2195,7 @@ const steps = [
} }
}, },
//AutoAlign tab title //AutoAlign tab title (active)
{ {
description: 'Validate AutoAlign tab title', description: 'Validate AutoAlign tab title',
action: async () => { action: async () => {
@@ -2111,7 +2207,19 @@ const steps = [
} }
}, },
//AutoAlign tab title -navy blue //AutoAlign tab text title -navy blue (active)
{
description: 'Validate AutoAlign tab text color',
action: async () => {
const elementStyle = await driver.findElement(By.linkText('AutoAlign')).getCssValue('color');
if (elementStyle !== 'rgba(255, 255, 255, 1)') {
throw new Error(`Expected: "AutoAlign" tab text title color did not match; Actual: "${elementStyle}"`);
}
console.log('Passed: AutoAlign tab text title color matched as expected');
}
},
//AutoAlign tab title -navy blue (active)
{ {
description: 'Validate AutoAlign tab color', description: 'Validate AutoAlign tab color',
action: async () => { action: async () => {