|
2 | 2 | # License, v. 2.0. If a copy of the MPL was not distributed with this file, |
3 | 3 | # You can obtain one at http://mozilla.org/MPL/2.0/. |
4 | 4 |
|
5 | | -from os import path |
| 5 | +from os import path, getenv |
6 | 6 |
|
7 | 7 | import pytest |
8 | 8 | from selenium import webdriver |
|
13 | 13 |
|
14 | 14 |
|
15 | 15 | @pytest.fixture |
16 | | -def driver(): |
| 16 | +def firefox_driver(): |
17 | 17 | driver = webdriver.Firefox() |
18 | 18 | yield driver |
19 | 19 | driver.close() |
20 | 20 |
|
21 | 21 |
|
| 22 | +@pytest.fixture |
| 23 | +def chrome_driver(): |
| 24 | + opts = webdriver.ChromeOptions() |
| 25 | + opts.headless = True |
| 26 | + opts.add_argument('--no-sandbox') |
| 27 | + driver_path = getenv('CHROMEDRIVER_PATH') |
| 28 | + driver = webdriver.Chrome(options=opts, executable_path=driver_path) \ |
| 29 | + if driver_path else webdriver.Chrome(options=opts) |
| 30 | + yield driver |
| 31 | + driver.close() |
| 32 | + |
| 33 | + |
22 | 34 | @pytest.mark.nondestructive |
23 | | -def test_run_axe_sample_page(driver): |
| 35 | +def test_run_axe_sample_page_firefox(firefox_driver): |
24 | 36 | """Run axe against sample page and verify JSON output is as expected.""" |
25 | | - driver.get("file://" + _DEFAULT_TEST_FILE) |
26 | | - axe = Axe(driver) |
27 | | - axe.inject() |
28 | | - data = axe.execute() |
| 37 | + data = _perform_axe_run(firefox_driver) |
| 38 | + |
| 39 | + assert len(data["inapplicable"]) == 50 |
| 40 | + assert len(data["incomplete"]) == 0 |
| 41 | + assert len(data["passes"]) == 7 |
| 42 | + assert len(data["violations"]) == 8 |
| 43 | + |
| 44 | + |
| 45 | +@pytest.mark.nondestructive |
| 46 | +def test_run_axe_sample_page_chrome(chrome_driver): |
| 47 | + """Run axe against sample page and verify JSON output is as expected.""" |
| 48 | + data = _perform_axe_run(chrome_driver) |
29 | 49 |
|
30 | 50 | assert len(data["inapplicable"]) == 50 |
31 | 51 | assert len(data["incomplete"]) == 0 |
32 | 52 | assert len(data["passes"]) == 7 |
33 | 53 | assert len(data["violations"]) == 8 |
| 54 | + |
| 55 | + |
| 56 | +def _perform_axe_run(driver): |
| 57 | + driver.get("file://" + _DEFAULT_TEST_FILE) |
| 58 | + axe = Axe(driver) |
| 59 | + axe.inject() |
| 60 | + data = axe.execute() |
| 61 | + return data |
0 commit comments