Updated scripts
This commit is contained in:
@@ -214,6 +214,7 @@ const steps = [
|
||||
}
|
||||
},
|
||||
|
||||
//Biology-QA edit icon color
|
||||
{
|
||||
description: 'Validate Biology-QA edit icon color',
|
||||
action: async () => {
|
||||
@@ -1631,7 +1632,7 @@ const steps = [
|
||||
description: 'Validate Filtered Content 1 Alignment Pending label',
|
||||
action: async () => {
|
||||
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}"`);
|
||||
}
|
||||
console.log('Passed: Filtered Content 1 Alignment Pending label matched as expected');
|
||||
|
||||
@@ -4,7 +4,7 @@ import XLSX from 'xlsx';
|
||||
import path from 'path';
|
||||
|
||||
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() {
|
||||
let driver = await new Builder().forBrowser('chrome').build();
|
||||
let testStatus = 'Failed';
|
||||
@@ -221,28 +221,89 @@ const steps = [
|
||||
if (elementStyle !== 'rgba(73, 80, 87, 1)') {
|
||||
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 () => {
|
||||
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') {
|
||||
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
|
||||
//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: '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',
|
||||
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: '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: '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: 'Driver sleep', action: async () => await driver.sleep(2000) },
|
||||
|
||||
//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: '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: '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: '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: 'Driver sleep', action: async () => await driver.sleep(5000) },
|
||||
|
||||
//Wait for dashboard to load
|
||||
//Wait for DIV to open
|
||||
{
|
||||
description: 'Wait for DIV to open',
|
||||
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: '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: 'Click create button', action: async () => await driver.findElement(By.css('.modal-lg #modalop')).click() },
|
||||
{ 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: '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) },
|
||||
@@ -1105,9 +1166,9 @@ const steps = [
|
||||
action: async () => {
|
||||
const elementText = await driver.findElement(By.css('strong')).getText();
|
||||
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 () => {
|
||||
const elementStyle = await driver.findElement(By.css('#statalert')).getCssValue('background-color');
|
||||
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
|
||||
//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() },
|
||||
|
||||
//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: '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: '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: '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: '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: '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 () =>
|
||||
{ const expectedIcon = await driver.wait(until.elementLocated(By.css('.show > li:nth-child(19) input')), 5000).catch(() => false);
|
||||
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 () => {
|
||||
const elementText = await driver.findElement(By.css('.show > li:nth-child(19) .checkbox')).getText();
|
||||
if (elementText !== 'Automated - QA Content Set - To be deleted') {
|
||||
throw new Error(`Expected: "Automated - QA Content Set - To be deleted"; Actual: "${elementText}"`);
|
||||
if (elementText !== createContentSetName) {
|
||||
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: '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() },
|
||||
@@ -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: '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: '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 () => {
|
||||
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();
|
||||
if (elementText !== '0') {
|
||||
throw new Error(`Expected: created content item count did not match; Actual: "${elementText}"`);
|
||||
const elementText = await driver.findElement(By.xpath('//li/div/span')).getText();
|
||||
if (elementText !== '1046') {
|
||||
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
|
||||
{ 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() },
|
||||
//Geometry - QA = 981 (2nd)
|
||||
{
|
||||
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) },
|
||||
|
||||
//Wait for dashboard to load
|
||||
@@ -1820,8 +2094,8 @@ const steps = [
|
||||
description: 'Validate Edit DIV textbox',
|
||||
action: async () => {
|
||||
const elementValue = await driver.findElement(By.css('#orgname')).getAttribute('value');
|
||||
if (elementValue !== 'Automated - QA Content Set - To be deleted') {
|
||||
throw new Error(`Edit DIV textbox Expected: "Automated - QA Content Set - To be deleted"; Actual: "${elementValue}"`);
|
||||
if (elementValue !== createContentSetName) {
|
||||
throw new Error(`Edit DIV textbox Expected: "${createContentSetName}"; Actual: "${elementValue}"`);
|
||||
}
|
||||
console.log('Passed: Edit DIV textbox matched as expected');
|
||||
}
|
||||
@@ -1899,10 +2173,100 @@ const steps = [
|
||||
}
|
||||
},
|
||||
|
||||
//Click Delete content button
|
||||
{ description: 'Click Delete button', action: async () => await driver.findElement(By.css('#orgdelete')).click() },
|
||||
{ description: 'Driver sleep', action: async () => await driver.sleep(5000) },
|
||||
//NEED TO READ ALERT MESSAGE AND CLICK OK TO DELETE CONTENT
|
||||
//NEXT ACTION -Delete created content set
|
||||
{
|
||||
description: 'Delete created content and validate assert message',
|
||||
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');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
];
|
||||
|
||||
|
||||
@@ -1551,7 +1551,7 @@ const steps = [
|
||||
}
|
||||
},
|
||||
|
||||
//Browse tab title
|
||||
//Browse tab title (active)
|
||||
{
|
||||
description: 'Validate browse tab title',
|
||||
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',
|
||||
action: async () => {
|
||||
@@ -1575,7 +1587,7 @@ const steps = [
|
||||
}
|
||||
},
|
||||
|
||||
//By Standard tab title
|
||||
//By Standard tab title (dimmed)
|
||||
{
|
||||
description: 'Validate by standard tab title',
|
||||
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',
|
||||
action: async () => {
|
||||
@@ -1599,7 +1623,7 @@ const steps = [
|
||||
}
|
||||
},
|
||||
|
||||
//AutoAlign tab title
|
||||
//AutoAlign tab title (dimmed)
|
||||
{
|
||||
description: 'Validate AutoAlign tab title',
|
||||
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',
|
||||
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: 'Wait for action to complete', action: async () => await driver.sleep(5000) },
|
||||
|
||||
//Browse tab title
|
||||
//Browse tab title (dimmed)
|
||||
{
|
||||
description: 'Validate browse tab title',
|
||||
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',
|
||||
action: async () => {
|
||||
@@ -1975,7 +2023,7 @@ const steps = [
|
||||
}
|
||||
},
|
||||
|
||||
//By Standard tab title
|
||||
//By Standard tab title (active)
|
||||
{
|
||||
description: 'Validate by standard tab title',
|
||||
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',
|
||||
action: async () => {
|
||||
@@ -1999,7 +2059,7 @@ const steps = [
|
||||
}
|
||||
},
|
||||
|
||||
//AutoAlign tab title
|
||||
//AutoAlign tab title (dimmed)
|
||||
{
|
||||
description: 'Validate AutoAlign tab title',
|
||||
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',
|
||||
action: async () => {
|
||||
@@ -2051,7 +2123,7 @@ const steps = [
|
||||
{ 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) },
|
||||
|
||||
//Browse tab title
|
||||
//Browse tab title (dimmed)
|
||||
{
|
||||
description: 'Validate browse tab title',
|
||||
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',
|
||||
action: async () => {
|
||||
@@ -2075,7 +2159,7 @@ const steps = [
|
||||
}
|
||||
},
|
||||
|
||||
//By Standard tab title
|
||||
//By Standard tab title (dimmed)
|
||||
{
|
||||
description: 'Validate by standard tab title',
|
||||
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',
|
||||
action: async () => {
|
||||
@@ -2099,7 +2195,7 @@ const steps = [
|
||||
}
|
||||
},
|
||||
|
||||
//AutoAlign tab title
|
||||
//AutoAlign tab title (active)
|
||||
{
|
||||
description: 'Validate AutoAlign tab title',
|
||||
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',
|
||||
action: async () => {
|
||||
|
||||
Reference in New Issue
Block a user