Skip to content

Commit 4076792

Browse files
chore: add E2E test for upgrade links
1 parent 26021b1 commit 4076792

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

tests/e2e/specs/upsell.spec.js

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/**
2+
* WordPress dependencies
3+
*/
4+
import { test, expect } from '@wordpress/e2e-test-utils-playwright';
5+
import {tryCloseTourModal, deleteAllFeedImports} from '../utils';
6+
7+
test.describe( 'Upsell', () => {
8+
9+
const FEED_URL = 'https://s3.amazonaws.com/verti-utils/sample-feed-import.xml';
10+
11+
test.beforeEach( async ( { requestUtils, page } ) => {
12+
await deleteAllFeedImports( requestUtils );
13+
await requestUtils.deleteAllPosts();
14+
15+
await page.goto('/wp-admin/post-new.php?post_type=feedzy_imports');
16+
await tryCloseTourModal( page );
17+
} );
18+
19+
test( 'upgrade banner', async({ editor, page }) => {
20+
const bannerLinkElement = page.getByRole('link', { name: 'upgrading to Feedzy Pro', exact: true });
21+
await expect( bannerLinkElement ).toBeVisible();
22+
23+
const bannerLink = new URL( await bannerLinkElement.getAttribute('href') );
24+
expect( bannerLink.host ).toBe('themeisle.com');
25+
expect( bannerLink.searchParams.get('utm_source') ).toBe('wpadmin');
26+
expect( bannerLink.searchParams.get('utm_medium') ).toBe('import-screen');
27+
expect( bannerLink.searchParams.get('utm_content') ).toBe('feedzy-rss-feeds');
28+
});
29+
30+
test( 'filters', async({ editor, page }) => {
31+
await page.getByRole('button', { name: 'Step 2 Filters' }).click({ force: true });
32+
33+
// Hover over text named Filter by Keyword
34+
const filtersTab = page.locator('#feedzy-import-form > div.feedzy-accordion > div:nth-child(2)');
35+
36+
// It should have 3 elements with .only-pro-content class.
37+
await expect( filtersTab.locator('.only-pro-content').count() ).resolves.toBe(3);
38+
39+
const filterByKeywordAlert = await filtersTab.locator('.upgrade-alert').first();
40+
let upgradeLink = new URL( await filterByKeywordAlert.locator('a').first().getAttribute('href') );
41+
expect( upgradeLink.searchParams.get('utm_campaign') ).toBe('filter-keyword');
42+
43+
const excludeItemsAlert = await filtersTab.locator('.upgrade-alert').nth(1);
44+
upgradeLink = new URL( await excludeItemsAlert.locator('a').first().getAttribute('href') );
45+
expect( upgradeLink.searchParams.get('utm_campaign') ).toBe('exclude-items');
46+
47+
const filterByTimeRangeAlert = await filtersTab.locator('.upgrade-alert').nth(2);
48+
upgradeLink = new URL( await filterByTimeRangeAlert.locator('a').first().getAttribute('href') );
49+
expect( upgradeLink.searchParams.get('utm_campaign') ).toBe('filter-time-range');
50+
} );
51+
52+
test( 'map content', async({ editor, page }) => {
53+
await page.getByRole('button', { name: 'Step 3 Map content' }).click({ force: true });
54+
55+
const magicTagsUpsell = page.getByTitle('upgrading to Feedzy Pro');
56+
await expect( magicTagsUpsell ).toBeVisible();
57+
const upgradeLink = new URL( await magicTagsUpsell.getAttribute('href') );
58+
expect( upgradeLink.searchParams.get('utm_campaign') ).toBe('magictags');
59+
} );
60+
});

0 commit comments

Comments
 (0)