'edit' submit should force recalculation of diff (should be moved to … #4247
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: ChangeDetection.io App Test | |
# Triggers the workflow on push or pull request events | |
on: [push, pull_request] | |
jobs: | |
test-application: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
# Mainly just for link/flake8 | |
- name: Set up Python 3.10 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.10' | |
- name: Lint with flake8 | |
run: | | |
pip3 install flake8 | |
# stop the build if there are Python syntax errors or undefined names | |
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics | |
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide | |
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics | |
- name: Spin up ancillary testable services | |
run: | | |
docker network create changedet-network | |
# Selenium+browserless | |
docker run --network changedet-network -d --hostname selenium -p 4444:4444 --rm --shm-size="2g" selenium/standalone-chrome-debug:3.141.59 | |
docker run --network changedet-network -d --hostname browserless -e "FUNCTION_BUILT_INS=[\"fs\",\"crypto\"]" -e "DEFAULT_LAUNCH_ARGS=[\"--window-size=1920,1080\"]" --rm -p 3000:3000 --shm-size="2g" browserless/chrome:1.53-chrome-stable | |
- name: Build changedetection.io container for testing | |
run: | | |
# Build a changedetection.io container and start testing inside | |
docker build . -t test-changedetectionio | |
# Debug info | |
docker run test-changedetectionio bash -c 'pip list' | |
- name: Spin up ancillary SMTP+Echo message test server | |
run: | | |
# Debug SMTP server/echo message back server | |
docker run --network changedet-network -d -p 11025:11025 -p 11080:11080 --hostname mailserver test-changedetectionio bash -c 'python changedetectionio/tests/smtp/smtp-test-server.py' | |
- name: Test built container with pytest | |
run: | | |
# Unit tests | |
docker run test-changedetectionio bash -c 'python3 -m unittest changedetectionio.tests.unit.test_notification_diff' | |
# All tests | |
docker run --network changedet-network test-changedetectionio bash -c 'cd changedetectionio && ./run_basic_tests.sh' | |
- name: Test built container selenium+browserless/playwright | |
run: | | |
# Selenium fetch | |
docker run --rm -e "WEBDRIVER_URL=http://selenium:4444/wd/hub" --network changedet-network test-changedetectionio bash -c 'cd changedetectionio;pytest tests/fetchers/test_content.py && pytest tests/test_errorhandling.py' | |
# Playwright/Browserless fetch | |
docker run --rm -e "PLAYWRIGHT_DRIVER_URL=ws://browserless:3000" --network changedet-network test-changedetectionio bash -c 'cd changedetectionio;pytest tests/fetchers/test_content.py && pytest tests/test_errorhandling.py && pytest tests/visualselector/test_fetch_data.py' | |
# Settings headers playwright tests - Call back in from Browserless, check headers | |
docker run --name "changedet" --hostname changedet --rm -e "FLASK_SERVER_NAME=changedet" -e "PLAYWRIGHT_DRIVER_URL=ws://browserless:3000?dumpio=true" --network changedet-network test-changedetectionio bash -c 'cd changedetectionio; pytest --live-server-host=0.0.0.0 --live-server-port=5004 tests/test_request.py' | |
docker run --name "changedet" --hostname changedet --rm -e "FLASK_SERVER_NAME=changedet" -e "WEBDRIVER_URL=http://selenium:4444/wd/hub" --network changedet-network test-changedetectionio bash -c 'cd changedetectionio; pytest --live-server-host=0.0.0.0 --live-server-port=5004 tests/test_request.py' | |
docker run --name "changedet" --hostname changedet --rm -e "FLASK_SERVER_NAME=changedet" -e "USE_EXPERIMENTAL_PUPPETEER_FETCH=yes" -e "PLAYWRIGHT_DRIVER_URL=ws://browserless:3000?dumpio=true" --network changedet-network test-changedetectionio bash -c 'cd changedetectionio; pytest --live-server-host=0.0.0.0 --live-server-port=5004 tests/test_request.py' | |
# restock detection via playwright - added name=changedet here so that playwright/browserless can connect to it | |
docker run --rm --name "changedet" -e "FLASK_SERVER_NAME=changedet" -e "PLAYWRIGHT_DRIVER_URL=ws://browserless:3000" --network changedet-network test-changedetectionio bash -c 'cd changedetectionio;pytest --live-server-port=5004 --live-server-host=0.0.0.0 tests/restock/test_restock.py' | |
- name: Test SMTP notification mime types | |
run: | | |
# SMTP content types - needs the 'Debug SMTP server/echo message back server' container from above | |
docker run --rm --network changedet-network test-changedetectionio bash -c 'cd changedetectionio;pytest tests/smtp/test_notification_smtp.py' | |
- name: Test with puppeteer fetcher and disk cache | |
run: | | |
docker run --rm -e "PUPPETEER_DISK_CACHE=/tmp/data/" -e "USE_EXPERIMENTAL_PUPPETEER_FETCH=yes" -e "PLAYWRIGHT_DRIVER_URL=ws://browserless:3000" --network changedet-network test-changedetectionio bash -c 'cd changedetectionio;pytest tests/fetchers/test_content.py && pytest tests/test_errorhandling.py && pytest tests/visualselector/test_fetch_data.py' | |
# Browserless would have had -e "FUNCTION_BUILT_INS=[\"fs\",\"crypto\"]" added above | |
- name: Test proxy interaction | |
run: | | |
cd changedetectionio | |
./run_proxy_tests.sh | |
cd .. | |
- name: Test changedetection.io container starts+runs basically without error | |
run: | | |
docker run -p 5556:5000 -d test-changedetectionio | |
sleep 3 | |
# Should return 0 (no error) when grep finds it | |
curl -s http://localhost:5556 |grep -q checkbox-uuid | |
# and IPv6 | |
curl -s -g -6 "http://[::1]:5556"|grep -q checkbox-uuid | |
#export WEBDRIVER_URL=http://localhost:4444/wd/hub | |
#pytest tests/fetchers/test_content.py | |
#pytest tests/test_errorhandling.py |