Skip to content

CI Build 1 (Ubuntu with MySQL) #11060

CI Build 1 (Ubuntu with MySQL)

CI Build 1 (Ubuntu with MySQL) #11060

name: CI Build 1 (Ubuntu with MySQL)
on:
schedule:
- cron: "22 * * * *"
push:
branches: [ master ]
pull_request:
branches:
workflow_dispatch:
branches:
jobs:
build:
env:
PY_COLORS: "1"
strategy:
fail-fast: false
max-parallel: 6
matrix:
os: [ubuntu-latest]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Configure MySQL DB
if: runner.os == 'Linux'
run: |
sudo /etc/init.d/mysql start
mysql -e 'CREATE DATABASE IF NOT EXISTS test_db;' -uroot -proot
wget https://raw.githubusercontent.com/seleniumbase/SeleniumBase/master/seleniumbase/core/create_db_tables.sql
sudo mysql -h 127.0.0.1 -uroot -proot test_db < create_db_tables.sql
sudo mysql -e 'ALTER USER "root"@"localhost" IDENTIFIED BY "test";' -uroot -proot
sudo service mysql restart
- name: Install dependencies
run: |
python -m pip install --upgrade pip wheel setuptools
pip install -r requirements.txt
- name: Install SeleniumBase
run: |
pip install .
- name: Lint with flake8
run: |
pip install flake8
# Stop the build if there are flake8 issues
flake8 . --count --show-source --statistics --exclude=temp
- name: Install Chrome and Edge
if: runner.os == 'Linux'
run: |
sudo apt install google-chrome-stable
sudo apt install microsoft-edge-stable
- name: Check the console scripts interface (methods)
run: |
seleniumbase methods
sbase methods
- name: Check the console scripts interface
run: |
seleniumbase
sbase
- name: Install chromedriver and edgedriver
run: |
seleniumbase install chromedriver
seleniumbase install edgedriver
- name: Make sure pytest is working
run: |
echo "def test_1(): pass" > nothing.py
pytest nothing.py
- name: Get CPU count
run: |
echo "import os; print(os.cpu_count())" > get_cpu_count.py
python get_cpu_count.py
- name: Run pytest boilerplate_test.py --chrome --xvfb --reruns=1
if: runner.os == 'Linux'
run: |
pytest examples/boilerplates/boilerplate_test.py --chrome --xvfb --reruns=1 -v -s --junit-xml=junit/test-results.xml --with-db_reporting
- name: Run pytest boilerplate_test.py --chrome --uc --headless --reruns=2 --reruns-delay=10
run: |
pytest examples/boilerplates/boilerplate_test.py --chrome --uc --headless --reruns=2 --reruns-delay=10 -v -s --junit-xml=junit/test-results.xml --with-db_reporting
- name: Run pytest examples/test_calculator.py --headless --rs -v -s --junit-xml=junit/test-results.xml --reruns=2
run: |
pytest examples/test_calculator.py --headless --rs -v -s --junit-xml=junit/test-results.xml --list-fail-page --with-db_reporting --reruns=2
- name: Run pytest examples/test_canvas.py --reruns=2 --headless2 -v -s --junit-xml=junit/test-results.xml
run: |
pytest examples/test_canvas.py --reruns=2 --headless2 -v -s --junit-xml=junit/test-results.xml --list-fail-page --with-db_reporting
- name: Run pytest examples/test_user_agent.py --reruns=2 --headless2 -v -s --junit-xml=junit/test-results.xml
run: |
pytest examples/test_user_agent.py --reruns=2 --headless2 -v -s --junit-xml=junit/test-results.xml --list-fail-page --with-db_reporting
- name: Run pytest examples/test_ua_with_uc.py --reruns=2 --uc --headless2 -v -s --junit-xml=junit/test-results.xml
run: |
pytest examples/test_ua_with_uc.py --reruns=2 --uc --headless2 -v -s --junit-xml=junit/test-results.xml --list-fail-page --with-db_reporting
- name: Run pytest examples/test_tinymce.py --reruns=2 --headless2 --uc -v -s --junit-xml=junit/test-results.xml
run: |
pytest examples/test_tinymce.py --reruns=2 --headless2 --uc -v -s --junit-xml=junit/test-results.xml --list-fail-page --with-db_reporting
- name: Run pytest examples/test_simple_login.py --reruns=2 --headless2 -v -s --junit-xml=junit/test-results.xml --bl="chs"
run: |
pytest examples/test_simple_login.py --reruns=2 --headless2 -v -s --junit-xml=junit/test-results.xml --list-fail-page --with-db_reporting --bl="chs"
- name: Run pytest examples/test_swag_suite.py --gui --xvfb --rs -v -s --reruns=2 --junit-xml=junit/test-results.xml
run: |
pytest examples/test_swag_suite.py --gui --xvfb --rs -v -s --reruns=2 --junit-xml=junit/test-results.xml --list-fail-page --with-db_reporting
- name: Run python examples/raw_sb.py --headless2 --uc
run: |
python examples/raw_sb.py --headless2 --uc
- name: Run pytest examples/test_mfa_login.py --reruns=2 --headless2 --uc -v -s --junit-xml=junit/test-results.xml
run: |
pytest examples/test_mfa_login.py --reruns=2 --headless2 --uc -v -s --junit-xml=junit/test-results.xml --list-fail-page --with-db_reporting
- name: Run pytest examples/test_drag_and_drop.py --reruns=2 --headless2 --uc -v -s --junit-xml=junit/test-results.xml
run: |
pytest examples/test_drag_and_drop.py --reruns=2 --headless2 --uc -v -s --junit-xml=junit/test-results.xml --list-fail-page --with-db_reporting
- name: Run pytest examples/test_demo_site.py --reruns=2 --headless2 --uc -v -s --junit-xml=junit/test-results.xml
run: |
pytest examples/test_demo_site.py --reruns=2 --headless2 --uc -v -s --junit-xml=junit/test-results.xml --list-fail-page
- name: Run pytest examples/test_docs_site.py --reruns=2 --headless2 --uc --reruns=2 -v -s --junit-xml=junit/test-results.xml
if: runner.os == 'Linux'
run: |
pytest examples/test_docs_site.py --reruns=2 --headless2 --uc -v -s --junit-xml=junit/test-results.xml --list-fail-page --with-db_reporting
- name: Run pytest -m ready --reruns=2 --browser=chrome --rs --headless -v -s --dashboard
run: |
pytest -m ready --reruns=2 --browser=chrome --rs --headless -v -s --junit-xml=junit/test-results.xml --dashboard --list-fail-page --with-db_reporting
- name: Query MySQL Results
if: runner.os == 'Linux'
run: |
mysql -e 'select test_address,browser,state,start_time,runtime from test_db.test_run_data;' -uroot -ptest
- name: Verify sbvirtualdisplay install from PyPI
run: |
pip install sbvirtualdisplay -U --no-deps --force-reinstall --no-cache-dir
- name: Verify tabcompleter install from PyPI
run: |
pip install tabcompleter -U --no-deps --force-reinstall --no-cache-dir
- name: Verify pynose install from PyPI
run: |
pip install pynose -U --no-deps --force-reinstall --no-cache-dir
- name: Verify pdbp install from PyPI
run: |
pip install pdbp -U --no-deps --force-reinstall --no-cache-dir
- name: Verify seleniumbase install from PyPI
run: |
pip install seleniumbase -U --no-deps --force-reinstall --no-cache-dir