Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert "chore: Isolate e2e tests and reset them for each run (#8041)" #8256

Closed
wants to merge 1 commit into from
Closed
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
48 changes: 35 additions & 13 deletions bin/install-docker.sh
Original file line number Diff line number Diff line change
@@ -1,44 +1,66 @@
#!/bin/bash

# Exit if any command fails.
# Exit if any command fails
set -e

# Include useful functions.
# Include useful functions
. "$(dirname "$0")/includes.sh"

# Check that Docker is installed.
# Check that Docker is installed
if ! command_exists "docker"; then
echo -e $(error_message "Docker doesn't seem to be installed. Please head on over to the Docker site to download it: $(action_format "https://www.docker.com/community-edition#/download")")
exit 1
fi

# Check that Docker is running.
# Check that Docker is running
if ! docker info >/dev/null 2>&1; then
echo -e $(error_message "Docker isn't running. Please check that you've started your Docker app, and see it in your system tray.")
exit 1
fi

# Stop existing containers.
# Stop existing containers
echo -e $(status_message "Stopping Docker containers...")
docker-compose down --remove-orphans >/dev/null 2>&1

# Download image updates.
# Download image updates
echo -e $(status_message "Downloading Docker image updates...")
docker-compose pull

# Launch the containers.
# Launch the containers
echo -e $(status_message "Starting Docker containers...")
docker-compose up -d >/dev/null

# Set up WordPress Development site.
# Note: we don't bother installing the test site right now, because that's
# done on every time `npm run test-e2e` is run.
. "$(dirname "$0")/install-wordpress.sh"
HOST_PORT=$(docker-compose port wordpress 80 | awk -F : '{printf $2}')

# Install the PHPUnit test scaffolding.
# Wait until the docker containers are setup properely
echo -en $(status_message "Attempting to connect to wordpress...")
until $(curl -L http://localhost:$HOST_PORT -so - 2>&1 | grep -q "WordPress"); do
echo -n '.'
sleep 5
done
echo ''

# Install WordPress
echo -e $(status_message "Installing WordPress...")
docker-compose run --rm -u 33 cli core install --url=localhost:$HOST_PORT --title=Gutenberg --admin_user=admin --admin_password=password [email protected] >/dev/null
# Check for WordPress updates, just in case the WordPress image isn't up to date.
docker-compose run --rm -u 33 cli core update >/dev/null

# If the 'wordpress' volume wasn't during the down/up earlier, but the post port has changed, we need to update it.
CURRENT_URL=$(docker-compose run -T --rm cli option get siteurl)
if [ "$CURRENT_URL" != "http://localhost:$HOST_PORT" ]; then
docker-compose run --rm cli option update home "http://localhost:$HOST_PORT" >/dev/null
docker-compose run --rm cli option update siteurl "http://localhost:$HOST_PORT" >/dev/null
fi

# Activate Gutenberg
echo -e $(status_message "Activating Gutenberg...")
docker-compose run --rm cli plugin activate gutenberg >/dev/null

# Install the PHPUnit test scaffolding
echo -e $(status_message "Installing PHPUnit test scaffolding...")
docker-compose run --rm wordpress_phpunit /app/bin/install-wp-tests.sh wordpress_test root example mysql latest false >/dev/null

# Install Composer. This is only used to run WordPress Coding Standards checks.
# Install Composer
echo -e $(status_message "Installing and updating Composer modules...")
docker-compose run --rm composer install
2 changes: 1 addition & 1 deletion bin/install-php-phpunit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ if [[ ${SWITCH_TO_PHP:0:3} == "5.2" ]] || [[ ${SWITCH_TO_PHP:0:3} == "5.3" ]]; t

# php and phpunit3.6 installs should be cached, only build if they're not there.
if [ ! -f $PHPBREW_BUILT_CHECK ]; then

# init with known --old to get 5.2 and 5.3
$HOME/php-utils-bin/phpbrew init
$HOME/php-utils-bin/phpbrew known --old
Expand Down
63 changes: 0 additions & 63 deletions bin/install-wordpress.sh

This file was deleted.

10 changes: 0 additions & 10 deletions bin/reset-e2e-tests.sh

This file was deleted.

21 changes: 0 additions & 21 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,27 +40,6 @@ services:
volumes:
- .:/app

wordpress_e2e_tests:
image: wordpress
ports:
- 8889:80
environment:
WORDPRESS_DB_NAME: wordpress_e2e_tests
WORDPRESS_DB_PASSWORD: example
ABSPATH: /usr/src/wordpress/
volumes:
- wordpress_e2e_tests:/var/www/html
- .:/var/www/html/wp-content/plugins/gutenberg
- ./test/e2e/test-plugins:/var/www/html/wp-content/plugins/gutenberg-test-plugins
- ./test/e2e/test-mu-plugins:/var/www/html/wp-content/mu-plugins

cli_e2e_tests:
image: wordpress:cli
volumes:
- wordpress_e2e_tests:/var/www/html
- .:/var/www/html/wp-content/plugins/gutenberg

volumes:
testsuite:
wordpress:
wordpress_e2e_tests:
1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,6 @@
"publish:dev": "npm run build:packages && lerna publish --npm-tag next",
"publish:prod": "npm run build:packages && lerna publish",
"test": "npm run lint && npm run test-unit",
"pretest-e2e": "./bin/reset-e2e-tests.sh",
"test-e2e": "wp-scripts test-unit-js --config test/e2e/jest.config.json --runInBand",
"test-e2e:watch": "npm run test-e2e -- --watch",
"test-php": "npm run lint-php && npm run test-unit-php",
Expand Down
46 changes: 2 additions & 44 deletions test/e2e/support/bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,10 @@
*/
import puppeteer from 'puppeteer';

/**
* Node dependencies
*/
import { visitAdmin } from './utils';

const { PUPPETEER_HEADLESS, PUPPETEER_SLOWMO, PUPPETEER_TIMEOUT } = process.env;
const { PUPPETEER_HEADLESS, PUPPETEER_SLOWMO } = process.env;

// The Jest timeout is increased because these tests are a bit slow
jest.setTimeout( PUPPETEER_TIMEOUT || 100000 );
jest.setTimeout( 100000 );

beforeAll( async () => {
global.browser = await puppeteer.launch( {
Expand All @@ -20,43 +15,6 @@ beforeAll( async () => {
} );
} );

// After every test run, delete all content created by the test. This ensures
// other posts/comments/etc. aren't dirtying tests and tests don't depend on
// each other's side-effects.
//
// Right now we run the cleanup _after_ each test but we may want to do
// this in the `beforeAll` call instead, as mentioned here:
// https://github.com/WordPress/gutenberg/pull/8041#discussion_r203940770
//
// We can't do that while we rely on the global page object, but if we ditched
// the global approach we could use `visitAdmin` before
// `newDesktopBrowserPage()` is called.
afterAll( async () => {
if ( ! global.page ) {
return;
}

// This accepts a page dialog that may appear when navigating away from
// Gutenberg to the admin, where we need to go to delete posts.
page.on( 'dialog', ( dialog ) => {
dialog.accept();
} );

// Visit `/wp-admin/edit.php` so we can see a list of posts and delete them.
await visitAdmin( 'edit.php' );

// If this selector doesn't exist there are no posts for us to delete.
const bulkSelector = await page.$( '#bulk-action-selector-top' );
if ( bulkSelector ) {
// Select all posts.
await page.waitForSelector( '#cb-select-all-1' );
await page.click( '#cb-select-all-1' );
// Select the "bulk actions" > "trash" option.
await page.select( '#bulk-action-selector-top', 'trash' );
// Submit the form to send all draft/scheduled/published posts to the trash.
await page.click( '#doaction' );
await page.waitForNavigation();
}

await browser.close();
} );
2 changes: 1 addition & 1 deletion test/e2e/support/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { URL } from 'url';
import { times } from 'lodash';

const {
WP_BASE_URL = 'http://localhost:8889',
WP_BASE_URL = 'http://localhost:8888',
WP_USERNAME = 'admin',
WP_PASSWORD = 'password',
} = process.env;
Expand Down