Set up browser tests using the Mediawiki docker set up

==Before your start==
- If you wish to continue using the mw-docker-dev setup in parallel to this one, start by backing up the LocalSettings.php file in your Mediawilki repo (by renaming or copying elsewhere). 
- Switching between the two set ups is possible and requires switching to the corresponding LocalSettings.php for each set up. 
- Note: the two set ups need different MW_DOCKER_PORT ports in order to be run without stepping on each other’s toes. (see .env contents)
== Files required in your Mediawiki home directory ==
1) browsertest.sh
 #!/bin/sh
 set -eu
 # create user needed for certain edit actions (only has effect on the first go)
 
 docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.browsertest.yml \
 run --rm mediawiki php //var/www/html/w/maintenance/createAndPromote.php --bureaucrat --sysop --bot lil-seleni test123456!
 docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.browsertest.yml \
 run --rm seleniumtests npm i
 docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.browsertest.yml \
 run --rm seleniumtests node_modules/.bin/wdio tests/selenium/wdio.conf.js --waitforTimeout=60000 --mochaOpts.timeout=60000 --hostname selenium \
 --spec /app/extensions/Wikibase/repo/tests/selenium/specs/blocked.js
 #--mochaOpts.grep 'can create lexeme with language item not bearing language code'
NOTE: if you have an older version of Mediawiki, the path might not include “/w” part. Look into the ‘working_dir’ key of your docker-compose.yml in your mediawiki home directory.
 
2) Docker-compose.browsertest.yml 
 version: '3.7'
 services:
 seleniumtests:
 image: "docker-registry.wikimedia.org/nodejs10-devel"
 environment:
 - "MW_SERVER=http://mediawiki:8080"
 - "MW_SCRIPT_PATH=/"
 - "MEDIAWIKI_USER=lil-seleni"
 - "MEDIAWIKI_PASSWORD=test123456!"
 - "MEDIAWIKI_SECRET_KEY=a5dca55190e1c3927e098c317dd74e85c7eced36f959275114773b188fbabdbc"
 - NODE_DEBUG
 command: echo 'invoke me through ./browsertest'
 working_dir: /app
 volumes:
 - "${DOCKER_MW_PATH}:/app"
 - "${SELENIUM_LOG_PATH}:/app/tests/selenium/log"
 depends_on:
 - seleniu
 selenium:
 image: selenium/standalone-chrome
 shm_size: '2gb'
 depends_on:
 - mediawiki
3) Your .env file should look like this:
 MW_DOCKER_UID=1000 
 MW_DOCKER_GID=1000
 MW_DOCKER_PORT=8081 
 MW_SCRIPT_PATH=/w 
 DOCKER_MW_PATH=./ 
 SELENIUM_LOG_PATH=./log 
 MW_SERVER=http://localhost:8081
 MEDIAWIKI_USER=Admin 
 MEDIAWIKI_PASSWORD=dockerpass
 XDEBUG_CONFIG=
Then, follow the setup instructions.
Note: for this specific test set up there is no need to use the Fresh container
==Run the tests==
Tests are run by executing ./browsertest.sh in your Mediawiki home directory. You can tell it which test to run inside the file (the path after “--spec”).
Note: Your newly created LocalSettings.php should include:
*$wgServer = WebRequest::detectServer(); 
* header( 'content-encoding: gzip' ); (to avoid gzip compression issues)
* Load any extension you want to test. E.g. Wikibase repo:
** wfLoadExtension( 'WikibaseRepository', "$IP/extensions/Wikibase/extension-repo.json" ); 
** require_once "$IP/extensions/Wikibase/repo/ExampleSettings.php";