[ci-jobs] Add disableHpos test environment variable (#47619)
* Add disableHpos test env variable * Update events for HPOS disabled tests * Add pull_request event to test the env * Remove the pull_request event * Add changelog * Make the disableHpos var a boolean * Also set the env in ci.yml * Remove console log statement * Print woocommerce_custom_orders_table_enabled * Run test setup script again to check output * Capture env setup output and print it * Get woocommerce_custom_orders_table_enabled value in test env script * Get more details on HPOS setting * Remove the DISABLE_HPOS logic from test env setup script * Use DISABLE_HPOS instead of ENABLE_HPOS everywhere * Turn off no-console and jest/no-standalone-expect eslint rules for api core tests * Test API tests with HPOS disabled * Fix eslint error * Clean up debug statements * Remove pull_request test trigger
This commit is contained in:
parent
ccba59ce05
commit
cf6e01d0d6
|
@ -101,6 +101,7 @@ jobs:
|
||||||
runs-on: 'ubuntu-20.04'
|
runs-on: 'ubuntu-20.04'
|
||||||
needs: 'project-jobs'
|
needs: 'project-jobs'
|
||||||
if: ${{ needs.project-jobs.outputs.e2e-test-jobs != '[]' }}
|
if: ${{ needs.project-jobs.outputs.e2e-test-jobs != '[]' }}
|
||||||
|
env: ${{ matrix.testEnv.envVars }}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
|
@ -157,6 +158,7 @@ jobs:
|
||||||
runs-on: 'ubuntu-20.04'
|
runs-on: 'ubuntu-20.04'
|
||||||
needs: 'project-jobs'
|
needs: 'project-jobs'
|
||||||
if: ${{ needs.project-jobs.outputs.api-test-jobs != '[]' }}
|
if: ${{ needs.project-jobs.outputs.api-test-jobs != '[]' }}
|
||||||
|
env: ${{ matrix.testEnv.envVars }}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
|
|
|
@ -38,8 +38,6 @@ jobs:
|
||||||
|
|
||||||
- name: Load docker images and start containers.
|
- name: Load docker images and start containers.
|
||||||
working-directory: plugins/woocommerce
|
working-directory: plugins/woocommerce
|
||||||
env:
|
|
||||||
ENABLE_HPOS: 1
|
|
||||||
run: pnpm --filter=@woocommerce/plugin-woocommerce env:test
|
run: pnpm --filter=@woocommerce/plugin-woocommerce env:test
|
||||||
|
|
||||||
- name: Run API tests
|
- name: Run API tests
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
Significance: patch
|
||||||
|
Type: dev
|
||||||
|
|
||||||
|
Add new disableHpos test env variable in ci-job utility
|
|
@ -29,7 +29,6 @@
|
||||||
"env:start": "pnpm wp-env start",
|
"env:start": "pnpm wp-env start",
|
||||||
"env:stop": "pnpm wp-env stop",
|
"env:stop": "pnpm wp-env stop",
|
||||||
"env:test": "pnpm env:dev && pnpm playwright install chromium",
|
"env:test": "pnpm env:dev && pnpm playwright install chromium",
|
||||||
"env:test:no-hpos": "DISABLE_HPOS=1 pnpm env:test",
|
|
||||||
"env:perf:install-k6": "curl https://github.com/grafana/k6/releases/download/v0.33.0/k6-v0.33.0-linux-amd64.tar.gz -L | tar xvz --strip-components 1",
|
"env:perf:install-k6": "curl https://github.com/grafana/k6/releases/download/v0.33.0/k6-v0.33.0-linux-amd64.tar.gz -L | tar xvz --strip-components 1",
|
||||||
"env:perf": "pnpm env:dev && pnpm env:performance-init && pnpm env:perf:install-k6",
|
"env:perf": "pnpm env:dev && pnpm env:performance-init && pnpm env:perf:install-k6",
|
||||||
"preinstall": "npx only-allow pnpm",
|
"preinstall": "npx only-allow pnpm",
|
||||||
|
@ -254,7 +253,10 @@
|
||||||
"tests/e2e-pw/**"
|
"tests/e2e-pw/**"
|
||||||
],
|
],
|
||||||
"testEnv": {
|
"testEnv": {
|
||||||
"start": "env:test:no-hpos"
|
"start": "env:test",
|
||||||
|
"config": {
|
||||||
|
"disableHpos": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -297,7 +299,10 @@
|
||||||
"push"
|
"push"
|
||||||
],
|
],
|
||||||
"testEnv": {
|
"testEnv": {
|
||||||
"start": "env:test:no-hpos"
|
"start": "env:test",
|
||||||
|
"config": {
|
||||||
|
"disableHpos": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,9 +3,11 @@ module.exports = {
|
||||||
rules: {
|
rules: {
|
||||||
'jsdoc/check-tag-names': 'off',
|
'jsdoc/check-tag-names': 'off',
|
||||||
'jest/no-test-callback': 'off',
|
'jest/no-test-callback': 'off',
|
||||||
'camelcase': 'off',
|
camelcase: 'off',
|
||||||
'jest/no-disabled-tests': 'off',
|
'jest/no-disabled-tests': 'off',
|
||||||
'no-shadow': 'off',
|
'no-shadow': 'off',
|
||||||
'jest/no-identical-title': 'off',
|
'jest/no-identical-title': 'off',
|
||||||
|
'jest/no-standalone-expect': 'off',
|
||||||
|
'no-console': 'off',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
const { ENABLE_HPOS, GITHUB_TOKEN, UPDATE_WC } = process.env;
|
const { DISABLE_HPOS, GITHUB_TOKEN, UPDATE_WC } = process.env;
|
||||||
const { downloadZip, deleteZip } = require( './utils/plugin-utils' );
|
const { downloadZip, deleteZip } = require( './utils/plugin-utils' );
|
||||||
const axios = require( 'axios' ).default;
|
const axios = require( 'axios' ).default;
|
||||||
const playwrightConfig = require( './playwright.config' );
|
const playwrightConfig = require( './playwright.config' );
|
||||||
|
@ -210,10 +210,10 @@ module.exports = async ( config ) => {
|
||||||
console.log( 'No DB update needed' );
|
console.log( 'No DB update needed' );
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// running on localhost using wp-env so ensure HPOS is set if ENABLE_HPOS env variable is passed
|
// running on localhost using wp-env so ensure HPOS is set if DISABLE_HPOS env variable is passed
|
||||||
if ( ENABLE_HPOS ) {
|
if ( DISABLE_HPOS ) {
|
||||||
let hposConfigured = false;
|
let hposConfigured = false;
|
||||||
const value = ENABLE_HPOS === '0' ? 'no' : 'yes';
|
const value = DISABLE_HPOS === '1' ? 'no' : 'yes';
|
||||||
try {
|
try {
|
||||||
const auth = {
|
const auth = {
|
||||||
username: playwrightConfig.userKey,
|
username: playwrightConfig.userKey,
|
||||||
|
@ -240,7 +240,7 @@ module.exports = async ( config ) => {
|
||||||
}
|
}
|
||||||
if ( ! hposConfigured ) {
|
if ( ! hposConfigured ) {
|
||||||
console.error(
|
console.error(
|
||||||
'Cannot proceed to api tests, HPOS configuration failed. Please check if the correct ENABLE_HPOS value was used and the test site has been setup correctly.'
|
'Cannot proceed to api tests, HPOS configuration failed. Please check if the correct DISABLE_HPOS value was used and the test site has been setup correctly.'
|
||||||
);
|
);
|
||||||
process.exit( 1 );
|
process.exit( 1 );
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,5 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
DISABLE_HPOS="${DISABLE_HPOS:-0}"
|
|
||||||
|
|
||||||
echo -e "DISABLE_HPOS: $DISABLE_HPOS"
|
|
||||||
if [ $DISABLE_HPOS == 1 ]; then
|
|
||||||
echo -e 'Disabling HPOS\n'
|
|
||||||
wp-env run tests-cli wp option update woocommerce_custom_orders_table_enabled 'no'
|
|
||||||
fi
|
|
||||||
|
|
||||||
ENABLE_TRACKING="${ENABLE_TRACKING:-0}"
|
|
||||||
|
|
||||||
echo -e 'Activate default theme \n'
|
echo -e 'Activate default theme \n'
|
||||||
wp-env run tests-cli wp theme activate twentytwentythree
|
wp-env run tests-cli wp theme activate twentytwentythree
|
||||||
|
|
||||||
|
@ -41,6 +31,8 @@ wp-env run tests-cli wp option update blogname 'WooCommerce Core E2E Test Suite'
|
||||||
echo -e 'Preparing Test Files \n'
|
echo -e 'Preparing Test Files \n'
|
||||||
wp-env run tests-cli sudo cp /var/www/html/wp-content/plugins/woocommerce/tests/legacy/unit-tests/importer/sample.csv /var/www/sample.csv
|
wp-env run tests-cli sudo cp /var/www/html/wp-content/plugins/woocommerce/tests/legacy/unit-tests/importer/sample.csv /var/www/sample.csv
|
||||||
|
|
||||||
|
ENABLE_TRACKING="${ENABLE_TRACKING:-0}"
|
||||||
|
|
||||||
if [ $ENABLE_TRACKING == 1 ]; then
|
if [ $ENABLE_TRACKING == 1 ]; then
|
||||||
echo -e 'Enable tracking\n'
|
echo -e 'Enable tracking\n'
|
||||||
wp-env run tests-cli wp option update woocommerce_allow_tracking 'yes'
|
wp-env run tests-cli wp option update woocommerce_allow_tracking 'yes'
|
||||||
|
|
|
@ -3,7 +3,7 @@ const { admin, customer } = require( './test-data/data' );
|
||||||
const fs = require( 'fs' );
|
const fs = require( 'fs' );
|
||||||
const { site } = require( './utils' );
|
const { site } = require( './utils' );
|
||||||
const wcApi = require( '@woocommerce/woocommerce-rest-api' ).default;
|
const wcApi = require( '@woocommerce/woocommerce-rest-api' ).default;
|
||||||
const { ENABLE_HPOS } = process.env;
|
const { DISABLE_HPOS } = process.env;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {import('@playwright/test').FullConfig} config
|
* @param {import('@playwright/test').FullConfig} config
|
||||||
|
@ -185,11 +185,11 @@ module.exports = async ( config ) => {
|
||||||
process.exit( 1 );
|
process.exit( 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// While we're here, let's set HPOS according to the passed in ENABLE_HPOS env variable
|
// While we're here, let's set HPOS according to the passed in DISABLE_HPOS env variable
|
||||||
// (if a value for ENABLE_HPOS was set)
|
// (if a value for DISABLE_HPOS was set)
|
||||||
// This was always being set to 'yes' after login in wp-env so this step ensures the
|
// This was always being set to 'yes' after login in wp-env so this step ensures the
|
||||||
// correct value is set before we begin our tests
|
// correct value is set before we begin our tests
|
||||||
console.log( `ENABLE_HPOS: ${ ENABLE_HPOS }` );
|
console.log( `DISABLE_HPOS: ${ DISABLE_HPOS }` );
|
||||||
|
|
||||||
const api = new wcApi( {
|
const api = new wcApi( {
|
||||||
url: baseURL,
|
url: baseURL,
|
||||||
|
@ -198,10 +198,10 @@ module.exports = async ( config ) => {
|
||||||
version: 'wc/v3',
|
version: 'wc/v3',
|
||||||
} );
|
} );
|
||||||
|
|
||||||
if ( ENABLE_HPOS ) {
|
if ( DISABLE_HPOS ) {
|
||||||
const hposSettingRetries = 5;
|
const hposSettingRetries = 5;
|
||||||
|
|
||||||
const value = ENABLE_HPOS === '0' ? 'no' : 'yes';
|
const value = DISABLE_HPOS === '1' ? 'no' : 'yes';
|
||||||
|
|
||||||
for ( let i = 0; i < hposSettingRetries; i++ ) {
|
for ( let i = 0; i < hposSettingRetries; i++ ) {
|
||||||
try {
|
try {
|
||||||
|
@ -233,7 +233,7 @@ module.exports = async ( config ) => {
|
||||||
|
|
||||||
if ( ! hposConfigured ) {
|
if ( ! hposConfigured ) {
|
||||||
console.error(
|
console.error(
|
||||||
'Cannot proceed e2e test, HPOS configuration failed. Please check if the correct ENABLE_HPOS value was used and the test site has been setup correctly.'
|
'Cannot proceed e2e test, HPOS configuration failed. Please check if the correct DISABLE_HPOS value was used and the test site has been setup correctly.'
|
||||||
);
|
);
|
||||||
process.exit( 1 );
|
process.exit( 1 );
|
||||||
}
|
}
|
||||||
|
@ -242,8 +242,11 @@ module.exports = async ( config ) => {
|
||||||
const response = await api.get(
|
const response = await api.get(
|
||||||
'settings/advanced/woocommerce_custom_orders_table_enabled'
|
'settings/advanced/woocommerce_custom_orders_table_enabled'
|
||||||
);
|
);
|
||||||
|
const dataValue = response.data.value;
|
||||||
console.log( `HPOS configuration ${ response.data.value }` );
|
const enabledOption = response.data.options[ dataValue ];
|
||||||
|
console.log(
|
||||||
|
`HPOS configuration (woocommerce_custom_orders_table_enabled): ${ dataValue } - ${ enabledOption }`
|
||||||
|
);
|
||||||
|
|
||||||
await site.useCartCheckoutShortcodes( baseURL, userAgent, admin );
|
await site.useCartCheckoutShortcodes( baseURL, userAgent, admin );
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
ENABLE_HPOS="${ENABLE_HPOS:-0}"
|
|
||||||
|
|
||||||
echo "Initializing WooCommerce E2E"
|
echo "Initializing WooCommerce E2E"
|
||||||
|
|
||||||
wp-env run tests-cli wp plugin activate woocommerce
|
wp-env run tests-cli wp plugin activate woocommerce
|
||||||
|
@ -33,9 +31,4 @@ wp-env run tests-cli wp import wp-content/plugins/woocommerce/sample-data/sample
|
||||||
# install Storefront
|
# install Storefront
|
||||||
wp-env run tests-cli wp theme install storefront --activate
|
wp-env run tests-cli wp theme install storefront --activate
|
||||||
|
|
||||||
if [ $ENABLE_HPOS == 1 ]; then
|
|
||||||
echo -e 'Enable High-Performance Order Tables\n'
|
|
||||||
wp-env run tests-cli wp plugin install https://gist.github.com/vedanshujain/564afec8f5e9235a1257994ed39b1449/archive/b031465052fc3e04b17624acbeeb2569ef4d5301.zip --activate
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Success! Your E2E Test Environment is now ready."
|
echo "Success! Your E2E Test Environment is now ready."
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -233,6 +233,11 @@ export interface TestEnvConfigVars {
|
||||||
* The version of PHP that should be used.
|
* The version of PHP that should be used.
|
||||||
*/
|
*/
|
||||||
phpVersion?: string;
|
phpVersion?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether the HPOS feature should be disabled in the test environment setup.
|
||||||
|
*/
|
||||||
|
disableHpos?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -264,6 +269,16 @@ function parseTestEnvConfigVars( raw: any ): TestEnvConfigVars {
|
||||||
config.phpVersion = raw.phpVersion;
|
config.phpVersion = raw.phpVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( raw.disableHpos ) {
|
||||||
|
if ( typeof raw.disableHpos !== 'boolean' ) {
|
||||||
|
throw new ConfigError(
|
||||||
|
'The "disableHpos" option must be a boolean.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
config.disableHpos = raw.disableHpos;
|
||||||
|
}
|
||||||
|
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -169,6 +169,7 @@ async function parseWPVersion( wpVersion: string ): Promise< string > {
|
||||||
export interface TestEnvVars {
|
export interface TestEnvVars {
|
||||||
WP_ENV_CORE?: string;
|
WP_ENV_CORE?: string;
|
||||||
WP_ENV_PHP_VERSION?: string;
|
WP_ENV_PHP_VERSION?: string;
|
||||||
|
DISABLE_HPOS?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -197,5 +198,9 @@ export async function parseTestEnvConfig(
|
||||||
envVars.WP_ENV_PHP_VERSION = config.phpVersion;
|
envVars.WP_ENV_PHP_VERSION = config.phpVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( config.disableHpos ) {
|
||||||
|
envVars.DISABLE_HPOS = 1;
|
||||||
|
}
|
||||||
|
|
||||||
return envVars;
|
return envVars;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue