Skip to content

check for geckodriver binary before bothering to install it #284

check for geckodriver binary before bothering to install it

check for geckodriver binary before bothering to install it #284

Workflow file for this run

name: Test Baselayer
on:
push:
branches:
- main
pull_request:
defaults:
run:
working-directory: ..
jobs:
test:
name: Test Baselayer
runs-on: ubuntu-latest
services:
postgres:
image: postgres
env:
POSTGRES_USER: baselayer
POSTGRES_PASSWORD: anything
ports:
- 5432:5432
# needed because the postgres container does not provide a
# healthcheck
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/setup-python@v5
with:
python-version: "3.8"
- uses: actions/setup-node@v3
with:
node-version: 20
- name: Checkout
uses: actions/checkout@v4
- name: Install template app
run: |
git clone https://github.com/cesium-ml/baselayer_template_app
cp -rf baselayer baselayer_template_app/
- uses: actions/cache@v3
with:
path: |
~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('baselayer_template_app/package.json') }}
- uses: actions/cache@v3
with:
path: |
~/.cache/pip
key: ${{ runner.os }}-${{ hashFiles('**/requirements*.txt') }}
- uses: browser-actions/setup-geckodriver@latest
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Install system dependencies
run: |
cd baselayer
sudo apt update -y
### firefox installation
sudo snap remove firefox
sudo add-apt-repository ppa:mozillateam/ppa
printf 'Package: *\nPin: release o=LP-PPA-mozillateam\nPin-Priority: 1001' | sudo tee /etc/apt/preferences.d/mozilla-firefox
sudo apt install -y wget nodejs unzip firefox
# if nginx is already installed, remove it
sudo apt remove -y nginx nginx-common nginx-core nginx-full
sudo apt purge -y nginx nginx-common nginx-core nginx-full
# add the PPA repository with brotli support for nginx
sudo add-apt-repository ppa:ondrej/nginx -y
sudo apt update -y
sudo apt install nginx libnginx-mod-http-brotli-static libnginx-mod-http-brotli-filter -y
pip install --upgrade pip
pip install wheel
export NPM_PACKAGES="${HOME}/.npm-packages"
export PATH=${NPM_PACKAGES}/bin:$PATH
export NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
sudo npm -g install npm@latest
which python; python --version
echo npm $(npm --version)
echo node $(node --version)
nginx -v
firefox --version
- name: Install Geckodriver / Selenium
run: |
geckodriver --version
pip install selenium==4.8.3
python -c "import selenium; print(f'Selenium {selenium.__version__}')"
- name: Write configuration & build DB
run: |
cd baselayer_template_app
cat << EOF > config.yaml
database:
database: template_app
user: baselayer
host: localhost
port: 5432
password: anything
EOF
cat << EOF > test_config.yaml
database:
database: template_app_test
user: baselayer
host: localhost
port: 5432
password: anything
EOF
echo "localhost:5432:*:baselayer:anything" > ~/.pgpass
chmod 600 ~/.pgpass
createdb -h localhost -U baselayer template_app
psql -U baselayer -h localhost -c "GRANT ALL PRIVILEGES ON DATABASE template_app TO baselayer;" template_app
createdb -h localhost -U baselayer template_app_test
psql -U baselayer -h localhost -c "GRANT ALL PRIVILEGES ON DATABASE template_app_test TO baselayer;" template_app_test
make db_init
- name: Test template app
run: |
cd baselayer_template_app
make test_headless
- name: Upload logs
uses: actions/upload-artifact@v2
if: ${{ always() }}
with:
name: logs
path: baselayer_template_app/log