diff --git a/.github/workflows/django.yml b/.github/workflows/django.yml index c90703bc..1b289a10 100644 --- a/.github/workflows/django.yml +++ b/.github/workflows/django.yml @@ -9,9 +9,13 @@ on: jobs: build: if: "!contains(github.event.head_commit.message, '[ci skip]')" + runs-on: ubuntu-latest + strategy: + matrix: + browser: ['chrome', 'firefox'] env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - runs-on: ubuntu-latest + BROWSER: ${{ matrix.browser }} steps: - uses: actions/checkout@v2 - uses: bahmutov/npm-install@v1 @@ -25,14 +29,6 @@ jobs: with: path: ${{ env.pythonLocation }} key: ${{ env.pythonLocation }}-${{ hashFiles('requirements.txt') }} - - name: Setup Chromedriver - if: \!${{ matrix.parallel }} - run: | - wget https://chromedriver.storage.googleapis.com/2.36/chromedriver_linux64.zip - unzip chromedriver_linux64.zip - export PATH=$PATH:$(pwd) - chmod +x chromedriver - export PATH=$PATH:/usr/lib/chromium-browser/ - name: Install Dependencies run: | python -m pip install --upgrade pip diff --git a/PyRIGS/tests/base.py b/PyRIGS/tests/base.py index 7056b1e8..5cc5aaa6 100644 --- a/PyRIGS/tests/base.py +++ b/PyRIGS/tests/base.py @@ -11,6 +11,7 @@ from selenium.webdriver.support.wait import WebDriverWait from RIGS import models as rigsmodels from . import pages +from envparse import env def create_datetime(year, month, day, hour, min): @@ -18,20 +19,25 @@ def create_datetime(year, month, day, hour, min): return tz.localize(datetime(year, month, day, hour, min)).astimezone(pytz.utc) -def create_browser(): - options = webdriver.ChromeOptions() - options.add_argument("--window-size=1920,1080") - options.add_argument("--headless") - if settings.CI: - options.add_argument("--no-sandbox") - driver = webdriver.Chrome(options=options) +def create_browser(browser): + if browser == "firefox": + options = webdriver.FirefoxOptions() + options.headless = True + driver = webdriver.Firefox(options=options) + else: + options = webdriver.ChromeOptions() + options.add_argument("--window-size=1920,1080") + options.add_argument("--headless") + if settings.CI: + options.add_argument("--no-sandbox") + driver = webdriver.Chrome(options=options) return driver class BaseTest(LiveServerTestCase): def setUp(self): super().setUpClass() - self.driver = create_browser() + self.driver = create_browser(env('BROWSER', default="chrome")) self.wait = WebDriverWait(self.driver, 15) def tearDown(self): @@ -75,4 +81,3 @@ def screenshot_failure_cls(cls): def assert_times_equal(first_time, second_time): assert first_time.replace(microsecond=0) == second_time.replace(microsecond=0) -