Skip to content

Commit c47c013

Browse files
authored
Merge branch 'trunk' into py-fix-test-environment-mocks
2 parents 01ee8ec + 7b530cd commit c47c013

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

py/conftest.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,9 @@ def fin():
154154
if driver_instance is None:
155155
if driver_class == "Firefox":
156156
options = get_options(driver_class, request.config)
157+
# There are issues with window size/position when running Firefox
158+
# under Wayland, so we use XWayland instead.
159+
os.environ["MOZ_ENABLE_WAYLAND"] = "0"
157160
if driver_class == "Chrome":
158161
options = get_options(driver_class, request.config)
159162
if driver_class == "Edge":
@@ -166,6 +169,9 @@ def fin():
166169
options = get_options("Firefox", request.config) or webdriver.FirefoxOptions()
167170
options.set_capability("moz:firefoxOptions", {})
168171
options.enable_downloads = True
172+
# There are issues with window size/position when running Firefox
173+
# under Wayland, so we use XWayland instead.
174+
os.environ["MOZ_ENABLE_WAYLAND"] = "0"
169175
if driver_path is not None:
170176
kwargs["service"] = get_service(driver_class, driver_path)
171177
if options is not None:
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Licensed to the Software Freedom Conservancy (SFC) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The SFC licenses this file
5+
# to you under the Apache License, Version 2.0 (the
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
18+
import os
19+
import platform
20+
from unittest.mock import patch
21+
22+
import pytest
23+
24+
from selenium import webdriver
25+
from selenium.webdriver.firefox.options import Options
26+
27+
28+
def is_running_wayland():
29+
return platform.system() == "Linux" and os.getenv("WAYLAND_DISPLAY")
30+
31+
32+
@pytest.mark.skipif(not is_running_wayland(), reason="This test only runs on Linux under Wayland")
33+
def test_firefox_opens_large_when_running_xwayland(request): # noqa: F821
34+
options = Options()
35+
if request.config.getoption("--headless"):
36+
options.add_argument("-headless")
37+
# setting environment variable `MOZ_ENABLE_WAYLAND=0` forces Firefox
38+
# to run under XWayland on Wayland based systems
39+
with patch.dict("os.environ", {"MOZ_ENABLE_WAYLAND": "0"}):
40+
try:
41+
driver = webdriver.Firefox(options=options)
42+
size = driver.get_window_size()
43+
assert size["height"] > 500
44+
assert size["width"] > 500
45+
finally:
46+
driver.quit()
47+
48+
49+
@pytest.mark.skipif(not is_running_wayland(), reason="This test only runs on Linux under Wayland")
50+
@pytest.mark.xfail(reason="https://bugzilla.mozilla.org/show_bug.cgi?id=1959040")
51+
# Firefox opens in a small window when running on Linux/Wayland
52+
def test_firefox_opens_large_when_running_wayland(request): # noqa: F821
53+
options = Options()
54+
if request.config.getoption("--headless"):
55+
options.add_argument("-headless")
56+
try:
57+
driver = webdriver.Firefox(options=options)
58+
size = driver.get_window_size()
59+
assert size["height"] > 500
60+
assert size["width"] > 500
61+
finally:
62+
driver.quit()

0 commit comments

Comments
 (0)