diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 20c13f8..1160b84 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -1,14 +1,12 @@ -name: Docker +name: Robot Framework in Docker on: push: # Publish `master` as Docker `latest` image. + # Release branches will trigger the creation of a git tag if the build is successful branches: - master - - # Publish `v1.2.3` tags as releases. - tags: - - '*' + - release/* # Run tests for any PRs. pull_request: @@ -27,6 +25,7 @@ jobs: matrix: include: - browser: "chrome" + - browser: "edge" - browser: "firefox" env: BROWSER: ${{ matrix.browser }} @@ -155,127 +154,3 @@ jobs: -e BROWSER=$BROWSER \ -e TZ="America/New_York" \ $IMAGE_NAME - - # Build and run tests for Microsoft Edge. - # This must be processed separately from Firefox and Chrome, due to the Browser library not handling Microsoft Edge by default - # and having no easy way to install new browsers unfortunately. - build-microsoft-edge: - runs-on: ubuntu-latest - env: - BROWSER: "edge" - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Build image - run: - podman build . --tag $IMAGE_NAME --file Dockerfile - - name: Basic Test - run: | - podman run --shm-size=1g \ - -v `pwd`/test/faker.robot:/opt/robotframework/tests/faker.robot:Z \ - -v `pwd`/test/requests.robot:/opt/robotframework/tests/requests.robot:Z \ - -v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \ - -v `pwd`/test/timezones.robot:/opt/robotframework/tests/timezones.robot:Z \ - -e BROWSER=$BROWSER \ - $IMAGE_NAME - - name: Test dependency installation - run: | - podman run --shm-size=1g \ - -v `pwd`/test/pip-dependencies/main.robot:/opt/robotframework/tests/pip-dependencies.robot:Z \ - -v `pwd`/test/pip-dependencies/requirements.txt:/opt/robotframework/pip-requirements.txt:Z \ - -e BROWSER=$BROWSER \ - $IMAGE_NAME - - name: Colour Depth 16 Test - run: | - podman run --shm-size=1g \ - -v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \ - -e BROWSER=$BROWSER \ - -e SCREEN_COLOUR_DEPTH=16 \ - $IMAGE_NAME - - name: Screen Width 800x600 Test - run: | - podman run --shm-size=1g \ - -v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \ - -e BROWSER=$BROWSER \ - -e SCREEN_WIDTH=800 \ - -e SCREEN_HEIGHT=600 \ - $IMAGE_NAME - - name: Screen Width 1024x768 Test - run: | - podman run --shm-size=1g \ - -v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \ - -e BROWSER=$BROWSER \ - -e SCREEN_WIDTH=1024 \ - -e SCREEN_HEIGHT=768 \ - $IMAGE_NAME - - name: Screen Width 1280x1024 Test - run: | - podman run --shm-size=1g \ - -v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \ - -e BROWSER=$BROWSER \ - -e SCREEN_WIDTH=1280 \ - -e SCREEN_HEIGHT=1024 \ - $IMAGE_NAME - - name: Screen Width 2560x1440 Test - run: | - podman run --shm-size=1g \ - -v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \ - -e BROWSER=$BROWSER \ - -e SCREEN_WIDTH=2560 \ - -e SCREEN_HEIGHT=1440 \ - $IMAGE_NAME - - name: Screen Width 3840x2160 Test - run: | - podman run --shm-size=1g \ - -v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \ - -e BROWSER=$BROWSER \ - -e SCREEN_WIDTH=3840 \ - -e SCREEN_HEIGHT=2160 \ - $IMAGE_NAME - - name: Debug Log Level Test - run: | - podman run --shm-size=1g \ - -v `pwd`/test/faker.robot:/opt/robotframework/tests/faker.robot:Z \ - -e BROWSER=$BROWSER \ - -e ROBOT_OPTIONS="--loglevel DEBUG" \ - $IMAGE_NAME - - name: Basic Multithreaded Test - run: | - podman run --shm-size=1g \ - -v `pwd`/test/faker.robot:/opt/robotframework/tests/faker.robot:Z \ - -v `pwd`/test/requests.robot:/opt/robotframework/tests/requests.robot:Z \ - -v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \ - -v `pwd`/test/timezones.robot:/opt/robotframework/tests/timezones.robot:Z \ - -e BROWSER=$BROWSER \ - -e ROBOT_THREADS=4 \ - $IMAGE_NAME - - name: Test Level Multithreaded Test - run: | - podman run --shm-size=1g \ - -v `pwd`/test/faker.robot:/opt/robotframework/tests/faker.robot:Z \ - -v `pwd`/test/requests.robot:/opt/robotframework/tests/requests.robot:Z \ - -v `pwd`/test/selenium.robot:/opt/robotframework/tests/selenium.robot:Z \ - -v `pwd`/test/timezones.robot:/opt/robotframework/tests/timezones.robot:Z \ - -e BROWSER=$BROWSER \ - -e ROBOT_THREADS=4 \ - -e PABOT_OPTIONS="--testlevelsplit" \ - $IMAGE_NAME - - name: Custom User Test - run: | - podman run --user=2000 --shm-size=1g \ - -v `pwd`/test/faker.robot:/opt/robotframework/tests/faker.robot:Z \ - -e BROWSER=$BROWSER \ - $IMAGE_NAME - - name: Custom User and Group Test - run: | - podman run --user=2000:2000 --shm-size=1g \ - -v `pwd`/test/faker.robot:/opt/robotframework/tests/faker.robot:Z \ - -e BROWSER=$BROWSER \ - $IMAGE_NAME - - name: Datetime - run: | - podman run --user=2000:2000 --shm-size=1g \ - -v `pwd`/test/timezones.robot:/opt/robotframework/tests/timezones.robot:Z \ - -e BROWSER=$BROWSER \ - -e TZ="America/New_York" \ - $IMAGE_NAME diff --git a/Dockerfile b/Dockerfile index 3af3a2a..5d6597d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -134,7 +134,8 @@ RUN rpm --import https://packages.microsoft.com/keys/microsoft.asc \ ENV PATH=/opt/microsoft/msedge:$PATH # FIXME: Playright currently doesn't support relying on system browsers, which is why the `--skip-browsers` parameter cannot be used here. -RUN rfbrowser init +# Additionally, it cannot run fully on any OS due to https://github.com/microsoft/playwright/issues/29559 +RUN rfbrowser init chromium firefox # Create the default report and work folders with the default user to avoid runtime issues # These folders are writeable by anyone, to ensure the user can be changed on the command line. diff --git a/test/browser-library.robot b/test/browser-library.robot index cedbc68..7515db9 100644 --- a/test/browser-library.robot +++ b/test/browser-library.robot @@ -3,33 +3,25 @@ Library Browser *** Variables *** # There is a conflict between browser names used by Selenium (using "chrome") and Browser (using "chromium") -# This is why the browser is currently fixed for the Browser Library. +# Additionally, the Browser library isn't flexible at all and forbids any branded browser +# See SupportedBrowsers: https://marketsquare.github.io/robotframework-browser/Browser.html#New%20Browser ${BROWSER} %{BROWSER} *** Test Cases *** Visit Bing - IF "${BROWSER}" == 'chrome' - New Browser chromium - ELSE - New Browser ${BROWSER} - END + Run Keyword If "${BROWSER}" == 'chrome' or "${BROWSER}" == 'edge' New Browser chromium + Run Keyword If "${BROWSER}" != 'chrome' and "${BROWSER}" != 'edge' New Browser browser=${BROWSER} New Page https://www.bing.com Take Screenshot Visit Google - IF "${BROWSER}" == 'chrome' - New Browser chromium - ELSE - New Browser ${BROWSER} - END + Run Keyword If "${BROWSER}" == 'chrome' or "${BROWSER}" == 'edge' New Browser chromium + Run Keyword If "${BROWSER}" != 'chrome' and "${BROWSER}" != 'edge' New Browser browser=${BROWSER} New Page https://www.google.com Take Screenshot Visit Yahoo - IF "${BROWSER}" == 'chrome' - New Browser chromium - ELSE - New Browser ${BROWSER} - END + Run Keyword If "${BROWSER}" == 'chrome' or "${BROWSER}" == 'edge' New Browser chromium + Run Keyword If "${BROWSER}" != 'chrome' and "${BROWSER}" != 'edge' New Browser browser=${BROWSER} New Page https://search.yahoo.com Take Screenshot