Skip to content

Commit

Permalink
Issue #492 - Upgrade the Browser library to version 18.6.3
Browse files Browse the repository at this point in the history
* Addressed issues with the Browser library, which cannot handle Microsoft Edge nor local browser installations
  • Loading branch information
ppodgorsek committed Jul 11, 2024
1 parent 9b2fe8a commit 4a53970
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 146 deletions.
133 changes: 4 additions & 129 deletions .github/workflows/docker-build.yml
Original file line number Diff line number Diff line change
@@ -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:
Expand All @@ -27,6 +25,7 @@ jobs:
matrix:
include:
- browser: "chrome"
- browser: "edge"
- browser: "firefox"
env:
BROWSER: ${{ matrix.browser }}
Expand Down Expand Up @@ -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
3 changes: 2 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
24 changes: 8 additions & 16 deletions test/browser-library.robot
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 4a53970

Please sign in to comment.