| 
 | 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