Commit a1e3e17872 for woocommerce

commit a1e3e17872dfb66d35ed5a23ff2f5de2cf2ec2d8
Author: theAverageDev (Luca Tumedei) <luca@theaveragedev.com>
Date:   Tue Feb 10 13:28:19 2026 +0100

    Convert e2e-pw test specs to TypeScript (batch 5) (#63214)

diff --git a/plugins/woocommerce/changelog/e2e-pw-ts-conversion-06 b/plugins/woocommerce/changelog/e2e-pw-ts-conversion-06
new file mode 100644
index 0000000000..6091022673
--- /dev/null
+++ b/plugins/woocommerce/changelog/e2e-pw-ts-conversion-06
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Convert fifth set of e2e-pw test files to TypeScript.
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-loads.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-loads.spec.ts
similarity index 95%
rename from plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-loads.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-loads.spec.ts
index 8c5d92bc84..3fa13ead6b 100644
--- a/plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-loads.spec.js
+++ b/plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-loads.spec.ts
@@ -2,11 +2,9 @@
  * Internal dependencies
  */
 import { expect, test } from '../../fixtures/fixtures';
-const { ADMIN_STATE_PATH } = require( '../../playwright.config' );
-const {
-	disableEmailEditor,
-} = require( './helpers/enable-email-editor-feature' );
-const { accessTheEmailEditor } = require( '../../utils/email' );
+import { ADMIN_STATE_PATH } from '../../playwright.config';
+import { disableEmailEditor } from './helpers/enable-email-editor-feature';
+import { accessTheEmailEditor } from '../../utils/email';

 test.describe( 'WooCommerce Email Editor Core', () => {
 	test.use( { storageState: ADMIN_STATE_PATH } );
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-reset-template.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-reset-template.spec.ts
similarity index 91%
rename from plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-reset-template.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-reset-template.spec.ts
index 02ff77abf8..e219168dae 100644
--- a/plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-reset-template.spec.js
+++ b/plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-reset-template.spec.ts
@@ -1,18 +1,25 @@
-const { test, expect } = require( '@playwright/test' );
-const { ADMIN_STATE_PATH } = require( '../../playwright.config' );
-const {
+/**
+ * External dependencies
+ */
+import { test, expect, type Page } from '@playwright/test';
+
+/**
+ * Internal dependencies
+ */
+import { ADMIN_STATE_PATH } from '../../playwright.config';
+import {
 	enableEmailEditor,
 	disableEmailEditor,
 	resetWCTransactionalEmail,
-} = require( './helpers/enable-email-editor-feature' );
-const { accessTheEmailEditor } = require( '../../utils/email' );
+} from './helpers/enable-email-editor-feature';
+import { accessTheEmailEditor } from '../../utils/email';

 /**
  * Helper function to switch from email editor to template editing mode.
  *
- * @param {import('@playwright/test').Page} page The Playwright page.
+ * @param page The Playwright page.
  */
-async function switchToTemplateEditingMode( page ) {
+async function switchToTemplateEditingMode( page: Page ) {
 	// Open the Settings panel if not already open
 	const settingsPanel = page.locator(
 		'.woocommerce-email-editor__settings-panel'
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-settings-sidebar.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-settings-sidebar.spec.ts
similarity index 95%
rename from plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-settings-sidebar.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-settings-sidebar.spec.ts
index 8dda990dce..e13ce0ef59 100644
--- a/plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-settings-sidebar.spec.js
+++ b/plugins/woocommerce/tests/e2e-pw/tests/email-editor/email-editor-settings-sidebar.spec.ts
@@ -1,14 +1,21 @@
-const { test, expect } = require( '@playwright/test' );
-const { ADMIN_STATE_PATH } = require( '../../playwright.config' );
-const {
+/**
+ * External dependencies
+ */
+import { test, expect } from '@playwright/test';
+
+/**
+ * Internal dependencies
+ */
+import { ADMIN_STATE_PATH } from '../../playwright.config';
+import {
 	enableEmailEditor,
 	disableEmailEditor,
 	resetWCTransactionalEmail,
-} = require( './helpers/enable-email-editor-feature' );
-const {
+} from './helpers/enable-email-editor-feature';
+import {
 	accessTheEmailEditor,
 	ensureEmailEditorSettingsPanelIsOpened,
-} = require( '../../utils/email' );
+} from '../../utils/email';

 test.describe( 'WooCommerce Email Editor Settings Sidebar Integration', () => {
 	test.use( { storageState: ADMIN_STATE_PATH } );
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/email-editor/helpers/enable-email-editor-feature.js b/plugins/woocommerce/tests/e2e-pw/tests/email-editor/helpers/enable-email-editor-feature.ts
similarity index 80%
rename from plugins/woocommerce/tests/e2e-pw/tests/email-editor/helpers/enable-email-editor-feature.js
rename to plugins/woocommerce/tests/e2e-pw/tests/email-editor/helpers/enable-email-editor-feature.ts
index 10a7e9d228..3b366be87b 100644
--- a/plugins/woocommerce/tests/e2e-pw/tests/email-editor/helpers/enable-email-editor-feature.js
+++ b/plugins/woocommerce/tests/e2e-pw/tests/email-editor/helpers/enable-email-editor-feature.ts
@@ -17,7 +17,10 @@ import { admin } from '../../../test-data/data';
  * @param {string} value   The value to set ('yes' or 'no').
  * @return {Promise<void>}
  */
-export const setEmailEditorFeatureFlag = async ( baseURL, value ) => {
+export const setEmailEditorFeatureFlag = async (
+	baseURL: string,
+	value: string
+) => {
 	await setOption(
 		request,
 		baseURL,
@@ -32,7 +35,7 @@ export const setEmailEditorFeatureFlag = async ( baseURL, value ) => {
  * @param {string} baseURL The base URL.
  * @return {Promise<void>}
  */
-export const enableEmailEditor = async ( baseURL ) =>
+export const enableEmailEditor = async ( baseURL: string ) =>
 	setEmailEditorFeatureFlag( baseURL, 'yes' );

 /**
@@ -41,7 +44,7 @@ export const enableEmailEditor = async ( baseURL ) =>
  * @param {string} baseURL The base URL.
  * @return {Promise<void>}
  */
-export const disableEmailEditor = async ( baseURL ) =>
+export const disableEmailEditor = async ( baseURL: string ) =>
 	setEmailEditorFeatureFlag( baseURL, 'no' );

 /**
@@ -51,7 +54,7 @@ export const disableEmailEditor = async ( baseURL ) =>
  * @param {string} pageId  The page ID.
  * @return {Promise<void>}
  */
-export const deleteEmailPost = async ( baseURL, pageId ) => {
+export const deleteEmailPost = async ( baseURL: string, pageId: string ) => {
 	console.log( 'Deleting email post', { pageId } );

 	const apiClient = createClient( baseURL, {
@@ -80,5 +83,7 @@ export const deleteEmailPost = async ( baseURL, pageId ) => {
  * @param {string} emailId The transactional email ID.
  * @return {Promise<void>}
  */
-export const resetWCTransactionalEmail = async ( baseURL, emailId ) =>
-	deleteOption( request, baseURL, `woocommerce_${ emailId }_settings` );
+export const resetWCTransactionalEmail = async (
+	baseURL: string,
+	emailId: string
+) => deleteOption( request, baseURL, `woocommerce_${ emailId }_settings` );
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/email/account-emails.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/email/account-emails.spec.ts
similarity index 100%
rename from plugins/woocommerce/tests/e2e-pw/tests/email/account-emails.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/email/account-emails.spec.ts
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/email/editor-tracking-selectors.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/email/editor-tracking-selectors.spec.ts
similarity index 90%
rename from plugins/woocommerce/tests/e2e-pw/tests/email/editor-tracking-selectors.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/email/editor-tracking-selectors.spec.ts
index 52defeac36..aa095feb5e 100644
--- a/plugins/woocommerce/tests/e2e-pw/tests/email/editor-tracking-selectors.spec.js
+++ b/plugins/woocommerce/tests/e2e-pw/tests/email/editor-tracking-selectors.spec.ts
@@ -1,15 +1,26 @@
-const { test, expect, request } = require( '@playwright/test' );
-const { setOption } = require( '../../utils/options' );
-const { getWooEmails } = require( '../../utils/email' );
-const { ADMIN_STATE_PATH } = require( '../../playwright.config' );
+/**
+ * External dependencies
+ */
+import { test, expect, request } from '@playwright/test';
+
+/**
+ * Internal dependencies
+ */
+import { setOption } from '../../utils/options';
+import { getWooEmails } from '../../utils/email';
+import { ADMIN_STATE_PATH } from '../../playwright.config';

-const setFeatureFlag = async ( baseURL, value ) =>
-	await setOption(
+const setFeatureFlag = async ( baseURL: string | undefined, value: string ) => {
+	if ( ! baseURL ) {
+		throw new Error( 'baseURL is required' );
+	}
+	return setOption(
 		request,
 		baseURL,
 		'woocommerce_feature_block_email_editor_enabled',
 		value
 	);
+};

 /**
  * The purpose of this test is to alert us if the selectors that are used to track telemetry events in the email editor are changed.
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/email/helpers/set-email-improvements-feature-flag.js b/plugins/woocommerce/tests/e2e-pw/tests/email/helpers/set-email-improvements-feature-flag.ts
similarity index 87%
rename from plugins/woocommerce/tests/e2e-pw/tests/email/helpers/set-email-improvements-feature-flag.js
rename to plugins/woocommerce/tests/e2e-pw/tests/email/helpers/set-email-improvements-feature-flag.ts
index 9e168ba8e1..f4a0e1617a 100644
--- a/plugins/woocommerce/tests/e2e-pw/tests/email/helpers/set-email-improvements-feature-flag.js
+++ b/plugins/woocommerce/tests/e2e-pw/tests/email/helpers/set-email-improvements-feature-flag.ts
@@ -15,7 +15,10 @@ import { setOption, deleteOption } from '../../../utils/options';
  * @param {string} value   The value to set ('yes' or 'no').
  * @return {Promise<void>}
  */
-export const setFeatureEmailImprovementsFlag = async ( baseURL, value ) => {
+export const setFeatureEmailImprovementsFlag = async (
+	baseURL: string,
+	value: string
+) => {
 	await setOption(
 		request,
 		baseURL,
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/email/order-emails.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/email/order-emails.spec.ts
similarity index 96%
rename from plugins/woocommerce/tests/e2e-pw/tests/email/order-emails.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/email/order-emails.spec.ts
index 0bdca98ad7..1008097d2d 100644
--- a/plugins/woocommerce/tests/e2e-pw/tests/email/order-emails.spec.js
+++ b/plugins/woocommerce/tests/e2e-pw/tests/email/order-emails.spec.ts
@@ -75,7 +75,9 @@ test.beforeEach( async ( { baseURL } ) => {
 		order,
 	} ) => {
 		// Inject the order id into the expected subject and make it a regex
-		subject = new RegExp( subject.replace( 'ORDER_ID', `${ order.id }` ) );
+		const subjectRegex = new RegExp(
+			subject.replace( 'ORDER_ID', `${ order.id }` )
+		);

 		await restApi
 			.put( `${ WC_API_PATH }/orders/${ order.id }`, {
@@ -99,7 +101,7 @@ test.beforeEach( async ( { baseURL } ) => {
 			emailRow = await expectEmail(
 				page,
 				role === 'customer' ? order.billing.email : admin.email,
-				subject
+				subjectRegex
 			);
 		} );

@@ -109,7 +111,7 @@ test.beforeEach( async ( { baseURL } ) => {
 			await expectEmailContent(
 				page,
 				role === 'customer' ? order.billing.email : admin.email,
-				subject,
+				subjectRegex,
 				content
 			);
 		} );
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/email/settings-email-listing.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/email/settings-email-listing.spec.ts
similarity index 89%
rename from plugins/woocommerce/tests/e2e-pw/tests/email/settings-email-listing.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/email/settings-email-listing.spec.ts
index 1afe6fea15..5c48a50a76 100644
--- a/plugins/woocommerce/tests/e2e-pw/tests/email/settings-email-listing.spec.js
+++ b/plugins/woocommerce/tests/e2e-pw/tests/email/settings-email-listing.spec.ts
@@ -1,11 +1,21 @@
-const { test, expect, request } = require( '@playwright/test' );
-const { setOption } = require( '../../utils/options' );
-const { ADMIN_STATE_PATH } = require( '../../playwright.config' );
-
-const setFeatureFlag = async ( baseURL, name, value ) =>
+/**
+ * External dependencies
+ */
+import { test, expect, request } from '@playwright/test';
+
+/**
+ * Internal dependencies
+ */
+import { setOption } from '../../utils/options';
+import { ADMIN_STATE_PATH } from '../../playwright.config';
+
+const setFeatureFlag = async ( baseURL: string, name: string, value: string ) =>
 	await setOption( request, baseURL, name, value );

-const setBlockEmailEditorFeatureFlag = async ( baseURL, value ) =>
+const setBlockEmailEditorFeatureFlag = async (
+	baseURL: string,
+	value: string
+) =>
 	await setFeatureFlag(
 		baseURL,
 		'woocommerce_feature_block_email_editor_enabled',
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/email/settings-email.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/email/settings-email.spec.ts
similarity index 97%
rename from plugins/woocommerce/tests/e2e-pw/tests/email/settings-email.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/email/settings-email.spec.ts
index 422b9f5e2c..f65b5e11cb 100644
--- a/plugins/woocommerce/tests/e2e-pw/tests/email/settings-email.spec.js
+++ b/plugins/woocommerce/tests/e2e-pw/tests/email/settings-email.spec.ts
@@ -1,13 +1,16 @@
+/**
+ * External dependencies
+ */
+import { test, expect, type Page } from '@playwright/test';
+
 /**
  * Internal dependencies
  */
 import { setFeatureEmailImprovementsFlag } from './helpers/set-email-improvements-feature-flag';
+import { tags } from '../../fixtures/fixtures';
+import { ADMIN_STATE_PATH } from '../../playwright.config';

-const { test, expect } = require( '@playwright/test' );
-const { tags } = require( '../../fixtures/fixtures' );
-const { ADMIN_STATE_PATH } = require( '../../playwright.config' );
-
-const pickImageFromLibrary = async ( page, imageName ) => {
+const pickImageFromLibrary = async ( page: Page, imageName: string ) => {
 	await page.getByRole( 'tab', { name: 'Media Library' } ).click();
 	await page.getByLabel( imageName ).first().click();
 	await page.getByRole( 'button', { name: 'Select', exact: true } ).click();
@@ -30,7 +33,7 @@ test.describe( 'WooCommerce Email Settings', () => {
 		const hasIframe = async () => {
 			return ( await page.locator( emailPreviewElement ).count() ) > 0;
 		};
-		const iframeContains = async ( text ) => {
+		const iframeContains = async ( text: string ) => {
 			const iframe = page.frameLocator( emailPreviewElement );
 			return iframe.getByText( text );
 		};
@@ -118,7 +121,7 @@ test.describe( 'WooCommerce Email Settings', () => {
 			// Wait for the iframe content to load
 			const iframeSelector = '#wc_settings_email_preview_slotfill iframe';

-			const iframeContainsHtml = async ( code ) => {
+			const iframeContainsHtml = async ( code: string ) => {
 				const iframe = page.frameLocator( iframeSelector );
 				const content = await iframe.locator( 'html' ).innerHTML();
 				return content.includes( code );
@@ -218,7 +221,7 @@ test.describe( 'WooCommerce Email Settings', () => {
 					( await page.locator( emailPreviewElement ).count() ) > 0
 				);
 			};
-			const iframeContains = async ( text ) => {
+			const iframeContains = async ( text: string ) => {
 				const iframe = page.frameLocator( emailPreviewElement );
 				return iframe.getByText( text );
 			};
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/settings/consumer-token.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/settings/consumer-token.spec.ts
similarity index 100%
rename from plugins/woocommerce/tests/e2e-pw/tests/settings/consumer-token.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/settings/consumer-token.spec.ts
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/settings/settings-general.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/settings/settings-general.spec.ts
similarity index 100%
rename from plugins/woocommerce/tests/e2e-pw/tests/settings/settings-general.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/settings/settings-general.spec.ts
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/settings/settings-tax.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/settings/settings-tax.spec.ts
similarity index 100%
rename from plugins/woocommerce/tests/e2e-pw/tests/settings/settings-tax.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/settings/settings-tax.spec.ts
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/settings/settings-woo-com.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/settings/settings-woo-com.spec.ts
similarity index 93%
rename from plugins/woocommerce/tests/e2e-pw/tests/settings/settings-woo-com.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/settings/settings-woo-com.spec.ts
index 13a8b80cb3..d239dc8ce7 100644
--- a/plugins/woocommerce/tests/e2e-pw/tests/settings/settings-woo-com.spec.js
+++ b/plugins/woocommerce/tests/e2e-pw/tests/settings/settings-woo-com.spec.ts
@@ -6,8 +6,8 @@ import { WC_API_PATH } from '@woocommerce/e2e-utils-playwright';
 /**
  * Internal dependencies
  */
-import { tags, test, expect } from '../../fixtures/fixtures.js';
-import { ADMIN_STATE_PATH } from '../../playwright.config.js';
+import { tags, test, expect } from '../../fixtures/fixtures';
+import { ADMIN_STATE_PATH } from '../../playwright.config';

 test.describe(
 	'WooCommerce woo.com Settings',
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/settings/webhooks.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/settings/webhooks.spec.ts
similarity index 88%
rename from plugins/woocommerce/tests/e2e-pw/tests/settings/webhooks.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/settings/webhooks.spec.ts
index 8fa14a2c1b..2b48f15d31 100644
--- a/plugins/woocommerce/tests/e2e-pw/tests/settings/webhooks.spec.js
+++ b/plugins/woocommerce/tests/e2e-pw/tests/settings/webhooks.spec.ts
@@ -6,8 +6,8 @@ import { WC_API_PATH } from '@woocommerce/e2e-utils-playwright';
 /**
  * Internal dependencies
  */
-import { tags, test, expect } from '../../fixtures/fixtures.js';
-import { ADMIN_STATE_PATH } from '../../playwright.config.js';
+import { tags, test, expect } from '../../fixtures/fixtures';
+import { ADMIN_STATE_PATH } from '../../playwright.config';

 test.describe( 'Manage webhooks', () => {
 	test.use( { storageState: ADMIN_STATE_PATH } );
@@ -47,10 +47,11 @@ test.describe( 'Manage webhooks', () => {
 				page.getByRole( 'row', { name: 'Webhook 1' } )
 			).toBeVisible();

-			let editURL = await page
+			const editHref = await page
 				.getByRole( 'link', { name: 'Webhook 1', exact: true } )
 				.getAttribute( 'href' );
-			editURL = new URL( editURL );
+			expect( editHref ).toBeTruthy();
+			const editURL = new URL( editHref! );
 			const webhookID = editURL.searchParams.get( 'edit-webhook' );

 			await page.goto(
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/user/lost-password.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/user/lost-password.spec.ts
similarity index 85%
rename from plugins/woocommerce/tests/e2e-pw/tests/user/lost-password.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/user/lost-password.spec.ts
index 08f35c9383..0af8d60716 100644
--- a/plugins/woocommerce/tests/e2e-pw/tests/user/lost-password.spec.js
+++ b/plugins/woocommerce/tests/e2e-pw/tests/user/lost-password.spec.ts
@@ -1,6 +1,13 @@
-const { test, expect } = require( '@playwright/test' );
-const { admin } = require( '../../test-data/data' );
-const { tags } = require( '../../fixtures/fixtures' );
+/**
+ * External dependencies
+ */
+import { test, expect } from '@playwright/test';
+
+/**
+ * Internal dependencies
+ */
+import { admin } from '../../test-data/data';
+import { tags } from '../../fixtures/fixtures';

 test.describe( 'Can go to lost password page and submit the form', () => {
 	test(
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/user/users-create.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/user/users-create.spec.ts
similarity index 91%
rename from plugins/woocommerce/tests/e2e-pw/tests/user/users-create.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/user/users-create.spec.ts
index fb54e0bdde..a42fdf4ec3 100644
--- a/plugins/woocommerce/tests/e2e-pw/tests/user/users-create.spec.js
+++ b/plugins/woocommerce/tests/e2e-pw/tests/user/users-create.spec.ts
@@ -24,12 +24,16 @@ const users = [
 const test = baseTest.extend( {
 	storageState: ADMIN_STATE_PATH,
 	user: async ( { restApi }, use ) => {
-		const user = {};
+		const user: Record< string, string | null > = {};
 		await use( user );
-		console.log( `Deleting user ${ user.id }` );
-		await restApi.delete( `${ WC_API_PATH }/customers/${ user.id }`, {
-			force: true,
-		} );
+		if ( user.id ) {
+			console.log( `Deleting user ${ user.id }` );
+			await restApi.delete( `${ WC_API_PATH }/customers/${ user.id }`, {
+				force: true,
+			} );
+		} else {
+			console.log( 'Skipping user deletion because user.id is missing' );
+		}
 	},
 } );

diff --git a/plugins/woocommerce/tests/e2e-pw/tests/user/users-manage.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/user/users-manage.spec.ts
similarity index 98%
rename from plugins/woocommerce/tests/e2e-pw/tests/user/users-manage.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/user/users-manage.spec.ts
index 5c85474680..68d392a125 100644
--- a/plugins/woocommerce/tests/e2e-pw/tests/user/users-manage.spec.js
+++ b/plugins/woocommerce/tests/e2e-pw/tests/user/users-manage.spec.ts
@@ -1,6 +1,7 @@
 /**
  * External dependencies
  */
+import type { Page } from '@playwright/test';
 import { WP_API_PATH } from '@woocommerce/e2e-utils-playwright';

 /**
@@ -60,7 +61,7 @@ const test = baseTest.extend( {
 	},
 } );

-async function userDeletionTest( page, username ) {
+async function userDeletionTest( page: Page, username: string ) {
 	await page.goto( `wp-admin/users.php?s=${ username }` );

 	await test.step( 'hover the username and delete', async () => {
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/wp-core/create-page.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/wp-core/create-page.spec.ts
similarity index 100%
rename from plugins/woocommerce/tests/e2e-pw/tests/wp-core/create-page.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/wp-core/create-page.spec.ts
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/wp-core/create-post.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/wp-core/create-post.spec.ts
similarity index 100%
rename from plugins/woocommerce/tests/e2e-pw/tests/wp-core/create-post.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/wp-core/create-post.spec.ts
diff --git a/plugins/woocommerce/tests/e2e-pw/tests/wp-core/post-comments.spec.js b/plugins/woocommerce/tests/e2e-pw/tests/wp-core/post-comments.spec.ts
similarity index 100%
rename from plugins/woocommerce/tests/e2e-pw/tests/wp-core/post-comments.spec.js
rename to plugins/woocommerce/tests/e2e-pw/tests/wp-core/post-comments.spec.ts