From abb4d41e5b9a64e1a6af0ebabdbebdf33ff7e2ad Mon Sep 17 00:00:00 2001 From: Aviv Palivoda Date: Fri, 15 Mar 2019 10:03:35 +0200 Subject: [PATCH] Add selenium test to travis --- .travis.yml | 20 ++++++++++++++++++++ wasm/demo/package.json | 7 +++++-- wasm/tests/.travis-runner.sh | 23 +++++++++++++++++++++++ wasm/tests/test_demo.py | 12 +++++------- 4 files changed, 53 insertions(+), 9 deletions(-) create mode 100755 wasm/tests/.travis-runner.sh diff --git a/.travis.yml b/.travis.yml index cbab6ae21..aff28cd6a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -115,6 +115,26 @@ matrix: - TRAVIS_RUST_VERSION=nightly - REGULAR_TEST=false - CODE_COVERAGE=true + - name: test WASM + language: python + python: 3.6 + cache: + pip: true + # Because we're using the Python Travis environment, we can't use + # the built-in cargo cacher + directories: + - /home/travis/.cargo + - target + addons: + firefox: latest + install: + - nvm install node + - pip install pipenv + script: + - wasm/tests/.travis-runner.sh + env: + - REGULAR_TEST=true + - TRAVIS_RUST_VERSION=stable allow_failures: - rust: nightly env: REGULAR_TEST=true diff --git a/wasm/demo/package.json b/wasm/demo/package.json index 2184c6db8..a03c80ace 100644 --- a/wasm/demo/package.json +++ b/wasm/demo/package.json @@ -16,12 +16,15 @@ "raw-loader": "^1.0.0", "webpack": "^4.16.3", "webpack-cli": "^3.1.0", - "webpack-dev-server": "^3.1.5" + "webpack-dev-server": "^3.1.5", + "start-server-and-test": "^1.7.11" }, "scripts": { "dev": "webpack-dev-server -d", "build": "webpack", - "dist": "webpack --mode production" + "dist": "webpack --mode production", + "test": "cd ../tests; pipenv run pytest", + "ci": "start-server-and-test dev http-get://localhost:8080 test" }, "repository": { "type": "git", diff --git a/wasm/tests/.travis-runner.sh b/wasm/tests/.travis-runner.sh new file mode 100755 index 000000000..add96c6b2 --- /dev/null +++ b/wasm/tests/.travis-runner.sh @@ -0,0 +1,23 @@ +#!/bin/sh -eux +# This script is intended to be run in Travis from the root of the repository + +# Install Rust +curl -sSf https://build.travis-ci.org/files/rustup-init.sh | sh -s -- --default-toolchain=$TRAVIS_RUST_VERSION -y +export PATH=$HOME/.cargo/bin:$PATH + +# install wasm-pack +if [ ! -f $HOME/.cargo/bin/wasm-pack ]; then + curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh +fi + +# install geckodriver +wget https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux32.tar.gz +mkdir geckodriver +tar -xzf geckodriver-v0.24.0-linux32.tar.gz -C geckodriver +export PATH=$PATH:$PWD/geckodriver + +# Install pipenv +pip install pipenv +(cd wasm/tests; pipenv install) + +(cd wasm/demo; npm install; npm run ci) diff --git a/wasm/tests/test_demo.py b/wasm/tests/test_demo.py index 89a3f73fa..9dce40681 100644 --- a/wasm/tests/test_demo.py +++ b/wasm/tests/test_demo.py @@ -1,7 +1,7 @@ import time from selenium import webdriver -from selenium.webdriver.chrome.options import Options +from selenium.webdriver.firefox.options import Options import pytest RUN_CODE_TEMPLATE = """ @@ -19,15 +19,13 @@ return output; @pytest.fixture(scope="module") def driver(request): options = Options() - options.headless = True - options.add_argument('--disable-gpu') - driver = webdriver.Chrome(options=options) + options.add_argument('-headless') + driver = webdriver.Firefox(options=options) driver.get("http://localhost:8080") - assert "RustPython" in driver.title time.sleep(5) yield driver - driver.close() - + driver.close() + @pytest.mark.parametrize("script, output", [