ci: run cypress tests
This commit is contained in:
parent
8b3cf2a9fc
commit
e8c37d6f4b
59
.github/workflows/build.yml
vendored
59
.github/workflows/build.yml
vendored
|
@ -94,8 +94,8 @@ jobs:
|
|||
# -----------------------------------------------------------------
|
||||
# TESTS
|
||||
# -----------------------------------------------------------------
|
||||
tests:
|
||||
name: Run Tests
|
||||
tests-python:
|
||||
name: Run Tests (Python)
|
||||
if: ${{ github.event.inputs.skiptests == 'false' }}
|
||||
needs: [prepare]
|
||||
runs-on: ubuntu-latest
|
||||
|
@ -155,6 +155,59 @@ jobs:
|
|||
with:
|
||||
name: coverage
|
||||
path: coverage.json
|
||||
|
||||
tests-cypress:
|
||||
name: Run Tests (Cypress)
|
||||
if: ${{ github.event.inputs.skiptests == 'false' }}
|
||||
needs: [prepare]
|
||||
runs-on: ubuntu-latest
|
||||
container: ghcr.io/ietf-tools/datatracker-app-base:latest
|
||||
|
||||
services:
|
||||
db:
|
||||
image: ghcr.io/ietf-tools/datatracker-db:latest
|
||||
volumes:
|
||||
- mariadb-data:/var/lib/mysql
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: ietf
|
||||
MYSQL_DATABASE: ietf_utf8
|
||||
MYSQL_USER: django
|
||||
MYSQL_PASSWORD: RkTkDPFnKpko
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare for tests
|
||||
run: |
|
||||
chmod +x ./dev/tests/prepare.sh
|
||||
sh ./dev/tests/prepare.sh
|
||||
|
||||
- name: Ensure DB is ready
|
||||
run: |
|
||||
/usr/local/bin/wait-for db:3306 -- echo "DB ready"
|
||||
|
||||
- name: Start Datatracker
|
||||
run: |
|
||||
echo "Running checks..."
|
||||
./ietf/manage.py check
|
||||
echo "Starting datatracker..."
|
||||
./ietf/manage.py runserver 0.0.0.0:8000 --settings=settings_local
|
||||
|
||||
- name: Ensure Datatracker is ready
|
||||
run: |
|
||||
/usr/local/bin/wait-for localhost:8000 -- echo "Datatracker ready"
|
||||
|
||||
- name: Run all tests
|
||||
run: |
|
||||
echo "Running tests..."
|
||||
yarn cypress
|
||||
|
||||
- name: Upload Video Recordings
|
||||
uses: actions/upload-artifact@v3.0.0
|
||||
if: ${{ always() }}
|
||||
with:
|
||||
name: videos
|
||||
path: cypress/videos/
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# RELEASE
|
||||
|
@ -162,7 +215,7 @@ jobs:
|
|||
release:
|
||||
name: Make Release
|
||||
if: ${{ always() }}
|
||||
needs: [tests, prepare]
|
||||
needs: [tests-python, tests-cypress, prepare]
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
SHOULD_DEPLOY: ${{needs.prepare.outputs.should_deploy}}
|
||||
|
|
|
@ -5,7 +5,7 @@ docker ps -a
|
|||
echo "Fixing permissions..."
|
||||
chmod -R 777 ./
|
||||
echo "Copying config files..."
|
||||
cp ./docker/configs/settings_local.py ./ietf/settings_local.py
|
||||
cp ./dev/tests/settings_local.py ./ietf/settings_local.py
|
||||
echo "Ensure all requirements.txt packages are installed..."
|
||||
pip --disable-pip-version-check --no-cache-dir install -r requirements.txt
|
||||
echo "Compiling native node packages..."
|
||||
|
|
76
dev/tests/settings_local.py
Normal file
76
dev/tests/settings_local.py
Normal file
|
@ -0,0 +1,76 @@
|
|||
# Copyright The IETF Trust 2007-2019, All Rights Reserved
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from ietf.settings import * # pyflakes:ignore
|
||||
|
||||
ALLOWED_HOSTS = ['*']
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'HOST': 'db',
|
||||
'PORT': 3306,
|
||||
'NAME': 'ietf_utf8',
|
||||
'ENGINE': 'django.db.backends.mysql',
|
||||
'USER': 'django',
|
||||
'PASSWORD': 'RkTkDPFnKpko',
|
||||
'OPTIONS': {
|
||||
'sql_mode': 'STRICT_TRANS_TABLES',
|
||||
'init_command': 'SET storage_engine=InnoDB; SET names "utf8"',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
DATABASE_TEST_OPTIONS = {
|
||||
'init_command': 'SET storage_engine=InnoDB',
|
||||
}
|
||||
|
||||
IDSUBMIT_IDNITS_BINARY = "/usr/local/bin/idnits"
|
||||
IDSUBMIT_REPOSITORY_PATH = "test/id/"
|
||||
IDSUBMIT_STAGING_PATH = "test/staging/"
|
||||
INTERNET_DRAFT_ARCHIVE_DIR = "test/archive/"
|
||||
INTERNET_ALL_DRAFTS_ARCHIVE_DIR = "test/archive/"
|
||||
RFC_PATH = "test/rfc/"
|
||||
|
||||
AGENDA_PATH = '/assets/www6s/proceedings/'
|
||||
MEETINGHOST_LOGO_PATH = AGENDA_PATH
|
||||
|
||||
USING_DEBUG_EMAIL_SERVER=True
|
||||
EMAIL_HOST='localhost'
|
||||
EMAIL_PORT=2025
|
||||
|
||||
MEDIA_BASE_DIR = '/assets'
|
||||
MEDIA_ROOT = MEDIA_BASE_DIR + '/media/'
|
||||
MEDIA_URL = '/media/'
|
||||
|
||||
PHOTOS_DIRNAME = 'photo'
|
||||
PHOTOS_DIR = MEDIA_ROOT + PHOTOS_DIRNAME
|
||||
|
||||
SUBMIT_YANG_CATALOG_MODEL_DIR = '/assets/ietf-ftp/yang/catalogmod/'
|
||||
SUBMIT_YANG_DRAFT_MODEL_DIR = '/assets/ietf-ftp/yang/draftmod/'
|
||||
SUBMIT_YANG_INVAL_MODEL_DIR = '/assets/ietf-ftp/yang/invalmod/'
|
||||
SUBMIT_YANG_IANA_MODEL_DIR = '/assets/ietf-ftp/yang/ianamod/'
|
||||
SUBMIT_YANG_RFC_MODEL_DIR = '/assets/ietf-ftp/yang/rfcmod/'
|
||||
|
||||
# Set INTERNAL_IPS for use within Docker. See https://knasmueller.net/fix-djangos-debug-toolbar-not-showing-inside-docker
|
||||
import socket
|
||||
hostname, _, ips = socket.gethostbyname_ex(socket.gethostname())
|
||||
INTERNAL_IPS = [".".join(ip.split(".")[:-1] + ["1"]) for ip in ips]
|
||||
|
||||
# DEV_TEMPLATE_CONTEXT_PROCESSORS = [
|
||||
# 'ietf.context_processors.sql_debug',
|
||||
# ]
|
||||
|
||||
DOCUMENT_PATH_PATTERN = '/assets/ietf-ftp/{doc.type_id}/'
|
||||
INTERNET_DRAFT_PATH = '/assets/ietf-ftp/internet-drafts/'
|
||||
RFC_PATH = '/assets/ietf-ftp/rfc/'
|
||||
CHARTER_PATH = '/assets/ietf-ftp/charter/'
|
||||
BOFREQ_PATH = '/assets/ietf-ftp/bofreq/'
|
||||
CONFLICT_REVIEW_PATH = '/assets/ietf-ftp/conflict-reviews/'
|
||||
STATUS_CHANGE_PATH = '/assets/ietf-ftp/status-changes/'
|
||||
INTERNET_DRAFT_ARCHIVE_DIR = '/assets/ietf-ftp/internet-drafts/'
|
||||
INTERNET_ALL_DRAFTS_ARCHIVE_DIR = '/assets/ietf-ftp/internet-drafts/'
|
||||
|
||||
NOMCOM_PUBLIC_KEYS_DIR = 'data/nomcom_keys/public_keys/'
|
||||
SLIDE_STAGING_PATH = 'test/staging/'
|
||||
|
||||
DE_GFM_BINARY = '/usr/local/bin/de-gfm'
|
Loading…
Reference in a new issue