Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 59 additions & 42 deletions src/features/performance-hints.feature
Original file line number Diff line number Diff line change
@@ -1,52 +1,69 @@
@setup @performancehints
@setup @delaylcp @performancehints
Feature: Clear lcp/performance hints data tests

Background:
Given I am logged in
And plugin is installed 'new_release'

Scenario: When I change site homepage to page with links
When I go '/wp-admin/options-reading.php'
And I changed homepage to 'homepage_10URLs'
Given plugin is installed 'new_release'
And plugin is activated
And I log out
When I visit site url
Then homepage and n URLs is added to Database

Scenario: C16387 - Should clear performance hints data when click clear PH in admin bar
Given performance hints data added to DB
Scenario: Shouldn't cause error if no links in home page
Given I am logged in
When I go '/wp-admin/options-reading.php'
And I changed homepage to 'homepage_noURLs'
When clear performance hints is clicked in admin bar
Then data is removed from the performance hints tables
Then I must not see any error in debug.log
And only homepage is added to Database



#Scenario: C16387 - Should clear performance hints data when click clear PH in admin bar
# Given performance hints data added to DB
# When clear performance hints is clicked in admin bar
# Then data is removed from the performance hints tables

Scenario: C16389 - Should clear performance hints when change permalinks
Given performance hints data added to DB
When permalink structure is changed to '/%postname%'
Then data is removed from the performance hints tables
#Scenario: C16389 - Should clear performance hints when change permalinks
# Given performance hints data added to DB
# When permalink structure is changed to '/%postname%'
# Then data is removed from the performance hints tables

Scenario: C16390 - Should clear performance hints when switch theme
Given performance hints data added to DB
And switching the theme
Then data is removed from the performance hints tables

Scenario: Should clear performance hints of the current URL
Given I log out
And I visit beacon driven page 'atf-lrc-1' with browser dimension 1600 x 700
And I visit beacon driven page 'atf-lrc-2' with browser dimension 1600 x 700
And data for 'atf-lrc-1' present in the performance hints tables
And data for 'atf-lrc-2' present in the performance hints tables
And I am logged in
And I go to 'atf-lrc-1'
When clear performance hints for this URL is clicked in admin bar
Then data for 'atf-lrc-1' is removed from the performance hints tables
Then data for 'atf-lrc-2' present in the performance hints tables
#Scenario: C16390 - Should clear performance hints when switch theme
# Given performance hints data added to DB
# And switching the theme
# Then data is removed from the performance hints tables

#Scenario: Should clear performance hints of the current URL
# Given I log out
# And I visit beacon driven page 'atf-lrc-1' with browser dimension 1600 x 700
# And I visit beacon driven page 'atf-lrc-2' with browser dimension 1600 x 700
# And data for 'atf-lrc-1' present in the performance hints tables
# And data for 'atf-lrc-2' present in the performance hints tables
# And I am logged in
# And I go to 'atf-lrc-1'
# When clear performance hints for this URL is clicked in admin bar
# Then data for 'atf-lrc-1' is removed from the performance hints tables
# Then data for 'atf-lrc-2' present in the performance hints tables

Scenario: C16388 - Should clear performance hints of the URL when edited
Given I log out
And I visit beacon driven page 'atf-lrc-1' with browser dimension 1600 x 700
And data for 'atf-lrc-1' present in the performance hints tables
And I am logged in
And I go to 'atf-lrc-1'
When I edit the content of post
Then data for 'atf-lrc-1' is removed from the performance hints tables

Scenario: C16388 - Should clear performance hints of the URL when deleted
Given I log out
And I visit beacon driven page 'atf-lrc-1' with browser dimension 1600 x 700
And data for 'atf-lrc-1' present in the performance hints tables
And I am logged in
When 'atf-lrc-1' page is deleted
Then data for 'atf-lrc-1' is removed from the performance hints tables
Then untrash and republish 'atf-lrc-1' page
#Scenario: C16388 - Should clear performance hints of the URL when edited
# Given I log out
# And I visit beacon driven page 'atf-lrc-1' with browser dimension 1600 x 700
# And data for 'atf-lrc-1' present in the performance hints tables
# And I am logged in
# And I go to 'atf-lrc-1'
# When I edit the content of post
# Then data for 'atf-lrc-1' is removed from the performance hints tables

#Scenario: C16388 - Should clear performance hints of the URL when deleted
# Given I log out
# And I visit beacon driven page 'atf-lrc-1' with browser dimension 1600 x 700
# And data for 'atf-lrc-1' present in the performance hints tables
# And I am logged in
# When 'atf-lrc-1' page is deleted
# Then data for 'atf-lrc-1' is removed from the performance hints tables
# Then untrash and republish 'atf-lrc-1' page
44 changes: 44 additions & 0 deletions src/support/steps/performance-hints.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { WP_BASE_URL } from '../../../config/wp.config';
import { When, Then, Given } from '@cucumber/cucumber';
import { dbQuery, getWPTablePrefix, getPostDataFromTitle, updatePostStatus } from "../../../utils/commands";
import { extractFromStdout, seedData, checkData } from "../../../utils/helpers";
import {Row} from "../../../utils/types";

/*
* Executes step to add hardcoded data to DB: ATF & LRC tables
Expand Down Expand Up @@ -141,4 +142,47 @@ Then ('untrash and republish {string} page', async function (this: ICustomWorld,
const postDataStdout = await getPostDataFromTitle(permalink, 'trash', 'ID,post_title');
const postData = await extractFromStdout(postDataStdout);
await updatePostStatus(parseInt(postData[0].ID, 10), 'publish');
});

When('I changed homepage to {string}', async function(this: ICustomWorld, page: string){
await this.page.locator('input[name="show_on_front"][value="page"]').click();
await this.page.pause()
await this.page.selectOption('select#page_on_front', { label: page });
await this.page.locator('#submit').click();
})

Then('homepage and n URLs is added to Database', async function (this: ICustomWorld) {
let sql: string,
result: string,
resultFromStdout: Row[];

const tablePrefix: string = await getWPTablePrefix();

const links = await this.page.locator('ul li:not(li:has(comment)) a')
.evaluateAll((elements) => {
return elements.map(el => {
const href = el.getAttribute('href') || '';
try {
const url = new URL(href);
return url.pathname;
} catch {
return href;
}
});
});

for (const link in links) {
sql = `SELECT lcp, viewport
FROM ${tablePrefix}wpr_above_the_fold
WHERE url LIKE "%${link}%"
AND is_mobile = 0`;
result = await dbQuery(sql);
resultFromStdout = await extractFromStdout(result);

console.log(resultFromStdout)
}
});

When('only homepage is added to Database', async function (this: ICustomWorld) {
//
});