Skip to content
This repository has been archived by the owner on Jun 7, 2022. It is now read-only.

Common Issues

Bec Scott edited this page Jan 6, 2021 · 7 revisions

This page aims to document a comprehensive list of known issues, commonly encountered problems, and their solutions or workaround. If you have encountered an issue that's not mentioned here and should be, please don't hesitate to add to the list!

Composer error on Automattic\Jetpack\Autoloader\AutoloadGenerator

[ErrorException]
  Declaration of Automattic\Jetpack\Autoloader\AutoloadGenerator::dump(Composer\Config $config, Composer\Repository\Inst
  alledRepositoryInterface $localRepo, Composer\Package\PackageInterface $mainPackage, Composer\Installer\InstallationMa
  nager $installationManager, $targetDir, $scanPsrPackages = false, $suffix = NULL) should be compatible with Composer\A
  utoload\AutoloadGenerator::dump(Composer\Config $config, Composer\Repository\InstalledRepositoryInterface $localRepo,
  Composer\Package\RootPackageInterface $rootPackage, Composer\Installer\InstallationManager $installationManager, $targ
  etDir, $scanPsrPackages = false, $suffix = '')

A recent change in composer released in 2.0.7 had made our autoloader incompatible with the new AutoloadGenerator signature. In the meantime, try to downgrade to older composer version 2.0.6 using composer self-update 2.0.6.

VVV: HostsUpdater vagrant plugin error

...vagrant-hostsupdater/HostsUpdater.rb:126:in ``digest': no implicit conversion of nil into String (TypeError)

You might be running with an unsupported version of Vagrant. At the time of writing, I confirm that VVV works with Vagrant 2.2.7. Please check VVV's requirements.

VVV: install-wp-tests.sh error

mysqladmin: CREATE DATABASE failed; error: 'Access denied for user 'wp'@'localhost' to database 'wordpress-one-tests''

Fix

  • Open mysql with sudo mysql
  • Run GRANT ALL PRIVILEGES ON * . * TO 'wp'@'localhost'; you can exit by typing exit;.
  • Run the install-wp-tests.sh script again.

Timeout/404 errors while running e2e tests

 Store owner can complete onboarding wizard › can complete the product types section

    TimeoutError: waiting for function failed: timeout 30000ms exceeded

      1 | export const waitForElementCount = function ( page, domSelector, count ) {
    > 2 | 	return page.waitForFunction(
        | 	            ^
      3 | 		( domSelector, count ) => {
      4 | 			return document.querySelectorAll( domSelector ).length === count;
      5 | 		},

Timeout or 404 errors while e2e signals that the existing build is broken. Run npm install && npm run clean && npm run build to generate a fresh build. It should also be noted that some of our npm scripts also removes the current build, so it's a good practice to always run a build before running e2e tests.

Docker container couldn't be built when attempting e2e test

Thu Dec  3 11:55:56 +08 2020 - Docker container is still being built
Thu Dec  3 11:56:06 +08 2020 - Docker container is still being built
Thu Dec  3 11:56:16 +08 2020 - Docker container is still being built
Thu Dec  3 11:56:26 +08 2020 - Docker container couldn't be built
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @woocommerce/e2e-environment@0.1.6 test:e2e: `bash ./bin/wait-for-build.sh && ./bin/e2e-test-integration.js`
npm ERR! Exit status 1

Check your docker, is it running? While the script says Docker container is still being built, it is not actually responsible for running docker; it's just waiting for an existing docker instance to respond. Run npm run docker:up if it's not.

Generate a test zip for the plugin

This can be used to upload to a test site.

npm run test:zip

Note that the generated test zip:

  • uses the 'plugin' config
  • also changes the local config to 'plugin', so you need to rerun npm i & npm start locally.

Set up WooCommerce Payments dev mode

Add this to wp-config.php:

define( 'WCPAY_DEV_MODE', true );

See https://docs.woocommerce.com/document/payments/testing/dev-mode.

WooCommerce Admin install timestamp

To get the install timestamp (used in wc_admin_active_for() in NoteTraits for example) try this SQL:

SELECT * FROM wp_options WHERE option_name = 'woocommerce_admin_install_timestamp'

Reset the onboarding wizard

Delete the woocommerce_onboarding_profile option:

DELETE FROM wp_options WHERE option_name = 'woocommerce_onboarding_profile'

Enable tracks debugging in the console:

localStorage.setItem( 'debug', 'wc-admin:tracks' );

and set Chrome's log level verbose to checked.

Running PHP unit tests using Vagrant (VVV)

  1. SSH into Vagrant box (vagrant ssh)
  2. cd /srv/www/<WP_INSTANCE>/public_html/wp-content/plugins/woocommerce-admin
  3. Set up: bin/install-wp-tests.sh wc-admin-tests root root
  4. Fast tests: ./vendor/bin/phpunit --group fast
  5. All tests: ./vendor/bin/phpunit You might need to composer install if phpunit doesn't exist.

Running end-to-end (E2E) tests

Make sure you're connected to the A8C VPN if appropriate.

npm run docker up
npm run test:e2e-dev

Show the welcome modal again

Delete the option woocommerce_task_list_welcome_modal_dismissed:

DELETE FROM wp_options WHERE option_name = 'woocommerce_task_list_welcome_modal_dismissed'

Testing a WooCommerce Admin subpackage

By creating a test plugin:

npm run build
cd packages/PACKAGE_NAME
npm link
cd ../..
npm run create-wc-extension
cd ../PACKAGE_NAME_TEST
npm install
npm link @woocommerce/PACKAGE_NAME
npm start
Clone this wiki locally