diff --git a/mailpoet/tests/performance/scenarios.js b/mailpoet/tests/performance/scenarios.js index 5e0fdd9966..10d7779cc9 100644 --- a/mailpoet/tests/performance/scenarios.js +++ b/mailpoet/tests/performance/scenarios.js @@ -19,6 +19,7 @@ import { onboardingWizard } from './tests/onboarding-wizard.js'; import { subscribersTrashingRestoring } from './tests/subscribers-trashing-restoring.js'; import { automationCreateCustom } from './tests/automation-create-custom.js'; import { automationCreateWelcome } from './tests/automation-create-welcome.js'; +import { automationAnalytics } from './tests/automation-analytics.js'; // Scenarios, Thresholds, Tags and Project ID used for K6 Cloud export let options = { @@ -101,6 +102,7 @@ export async function nightly() { await newsletterSending(); await automationCreateCustom(); await automationCreateWelcome(); + await automationAnalytics(); await subscribersListing(); await subscribersFiltering(); await subscribersAdding(); diff --git a/mailpoet/tests/performance/tests/automation-analytics.js b/mailpoet/tests/performance/tests/automation-analytics.js new file mode 100644 index 0000000000..8d564467f4 --- /dev/null +++ b/mailpoet/tests/performance/tests/automation-analytics.js @@ -0,0 +1,115 @@ +/** + * External dependencies + */ +import { sleep } from 'k6'; +import { browser } from 'k6/experimental/browser'; +import { randomIntBetween } from 'https://jslib.k6.io/k6-utils/1.1.0/index.js'; +import { + expect, + describe, +} from 'https://jslib.k6.io/k6chaijs/4.3.4.2/index.js'; + +/** + * Internal dependencies + */ +import { + baseURL, + thinkTimeMin, + thinkTimeMax, + automationsPageTitle, + fullPageSet, + screenshotPath, +} from '../config.js'; +import { login } from '../utils/helpers.js'; + +export async function automationAnalytics() { + const page = browser.newPage(); + + try { + // Log in to WP Admin + await login(page); + + // Go to the Automation Analytics page + await page.goto( + `${baseURL}/wp-admin/admin.php?page=mailpoet-automation-analytics&id=142`, + { + waitUntil: 'networkidle', + }, + ); + + await page.waitForLoadState('networkidle'); + await page.screenshot({ + path: screenshotPath + 'Automation_Analytics_01.png', + fullPage: fullPageSet, + }); + + // Check Emails tab + await page.locator('.mailpoet-analytics-tab-emails').click(); + await page.waitForSelector('.mailpoet-automation-analytics-email-name'); + await page.waitForLoadState('networkidle'); + + describe(automationsPageTitle, () => { + describe('automation-analytics: should be able to see Emails tab loaded', () => { + expect(page.$$('.mailpoet-automation-analytics-email-name')).to.exist; + }); + }); + + // Check Orders tab + await page.locator('.mailpoet-analytics-tab-orders').click(); + await page.waitForSelector('.mailpoet-analytics-filter-controls'); + await page.waitForLoadState('networkidle'); + + describe(automationsPageTitle, () => { + describe('automation-analytics: should be able to see Orders tab loaded', () => { + expect(page.$$('.mailpoet-analytics-filter-controls')).to.exist; + }); + }); + + // Check Subscribers tab + await page.locator('.mailpoet-analytics-tab-subscribers').click(); + await page.waitForSelector('.mailpoet-analytics-multiselect'); + // Switch to second page using pagination + await page.locator('.woocommerce-pagination__page-picker-input').fill('2'); + await page.locator('.components-text-control__input').click(); + await page.waitForLoadState('networkidle'); + + describe(automationsPageTitle, () => { + describe('automation-analytics: should be able to see Subscribers items loaded', () => { + expect(page.$$('.woocommerce-table__item')[0]).to.exist; + }); + }); + + await page.screenshot({ + path: screenshotPath + 'Automation_Analytics_02.png', + fullPage: fullPageSet, + }); + + // Filter results by date range Today + await page.locator('.woocommerce-dropdown-button').click(); + await page.locator('//span[contains(text(),"Today")]').click(); + await page.locator('.woocommerce-filters-date__button').click(); + await page.waitForLoadState('networkidle'); + + // Filter results by date range Year to date + await page.locator('.woocommerce-dropdown-button').click(); + await page.locator('//span[contains(text(),"Year to date")]').click(); + await page.locator('.woocommerce-filters-date__button').click(); + await page.waitForLoadState('networkidle'); + + describe(automationsPageTitle, () => { + describe('automation-analytics: should be able to see items in the listing', () => { + expect(page.$$('.mailpoet-analytics-orders__customer')[0]).to.exist; + }); + }); + + // Thinking time and closing + sleep(randomIntBetween(thinkTimeMin, thinkTimeMax)); + } finally { + page.close(); + browser.context().close(); + } +} + +export default function automationAnalyticsTest() { + automationAnalytics(); +}