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
33 changes: 33 additions & 0 deletions tests/e2e/specs/tracking-parameters.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { beforeAll, beforeEach, describe, expect, test } from '@jest/globals';
import { load as parseDom } from 'cheerio';
import { updateSettings } from '../lib/plugin-settings';
import { deleteCacheDirectory, getAuthCookie } from '../lib/plugin-tools';
import { loadPage } from '../lib/test-tools';
import { resetEnvironmnt, wpcli } from '../lib/wordpress-tools';

describe( 'ignored tracking parameters', () => {
beforeAll( async () => {
await resetEnvironmnt();
await wpcli( 'plugin', 'activate', 'wp-super-cache' );
await updateSettings( await getAuthCookie(), {
wp_cache_enabled: true,
} );
await wpcli(
'eval',
"wp_cache_setting( 'wpsc_tracking_parameters', array( 'gclid', 'fbclid', 'utm_source' ) ); wp_cache_setting( 'wpsc_ignore_tracking_parameters', 1 );"
);
} );

beforeEach( async () => {
await deleteCacheDirectory();
} );

test( 'does not cache visitor A click ID in visitor B form action', async () => {
const visitorA = await loadPage( '/', { gclid: 'A' } );
const visitorB = await loadPage();

expect( visitorA ).toBe( visitorB );
expect( parseDom( visitorA )( '#wpsc-request-uri-form' ).attr( 'action' ) ).toBe( '/' );
expect( parseDom( visitorB )( '#wpsc-request-uri-form' ).attr( 'action' ) ).toBe( '/' );
} );
} );
10 changes: 10 additions & 0 deletions tests/e2e/tools/mu-test-helpers.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,16 @@ function wpsc_test_inject_footer() {
add_action( 'wp_footer', 'wpsc_test_inject_footer' );
add_action( 'admin_footer', 'wpsc_test_inject_footer' );

/**
* Render a request-derived form action, matching the boundary used by Gravity Forms.
*/
function wpsc_test_request_uri_form() {
$action = isset( $_SERVER['REQUEST_URI'] ) ? wp_unslash( $_SERVER['REQUEST_URI'] ) : '/';

echo '<form id="wpsc-request-uri-form" method="post" action="' . esc_url( $action ) . '"></form>';
}
add_action( 'wp_footer', 'wpsc_test_request_uri_form' );

/**
* Allow per-request login via HTTP header for a single request. Makes testing easier.
*/
Expand Down