Skip to content

Commit e5347bc

Browse files
committed
Add Firefox and Safari to Selenium test suite
1 parent c57e75d commit e5347bc

File tree

4 files changed

+18
-10
lines changed

4 files changed

+18
-10
lines changed

.github/workflows/ci.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,18 @@ jobs:
5757
selenium:
5858
needs:
5959
- pytest
60-
runs-on: ubuntu-latest
60+
strategy:
61+
fail-fast: false
62+
matrix:
63+
os: [ubuntu-latest, macos-latest]
64+
runs-on: ${{ matrix.os }}
6165
steps:
6266
- uses: actions/checkout@v6
6367
- name: Install Selenium
6468
run: |
65-
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
69+
curl -LsSfO https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
6670
sudo dpkg -i google-chrome-stable_current_amd64.deb || sudo apt-get -f install -y
71+
if: matrix.os == 'ubuntu-latest'
6772
- uses: astral-sh/setup-uv@v7
6873
- run: uv run pytest -m selenium
6974
- uses: codecov/codecov-action@v5

tests/conftest.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ def pytest_configure(config):
1414
config.addinivalue_line("markers", "selenium: skip if selenium is not installed")
1515

1616

17-
@pytest.fixture(scope="session")
18-
def driver():
19-
chrome_options = webdriver.ChromeOptions()
20-
chrome_options.add_argument("--headless=new")
17+
@pytest.fixture(scope="session", params=["Chrome", "Safari", "Firefox"])
18+
def driver(request):
19+
options = getattr(webdriver, f"{request.param}Options")()
20+
options.add_argument("--headless")
2121
try:
22-
b = webdriver.Chrome(options=chrome_options)
22+
b = getattr(webdriver, request.param)(options=options)
2323
except WebDriverException as e:
2424
pytest.skip(force_str(e))
2525
else:

tests/test_forms.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -210,12 +210,12 @@ def test_file_insert(
210210
def test_file_update(
211211
self, request, driver, live_server, upload_file, freeze_upload_folder
212212
):
213-
FileModel.objects.create(
213+
obj = FileModel.objects.create(
214214
file=SimpleUploadedFile(
215215
f"{request.node.name}.txt", request.node.name.encode()
216216
)
217217
)
218-
driver.get(live_server + reverse_lazy("example-update", kwargs={"pk": 1}))
218+
driver.get(live_server + reverse_lazy("example-update", kwargs={"pk": obj.pk}))
219219
file_input = driver.find_element(By.XPATH, "//input[@name='file']")
220220
file_input.send_keys(upload_file)
221221
assert file_input.get_attribute("name") == "file"
@@ -288,7 +288,7 @@ def test_multi_file(
288288
driver.get(live_server + reverse_lazy("upload-multi"))
289289
file_input = driver.find_element(By.XPATH, "//input[@name='file']")
290290
file_input.send_keys(
291-
" \n ".join([
291+
"\n".join([
292292
str(freeze_upload_folder / upload_file),
293293
str(freeze_upload_folder / another_upload_file),
294294
])

tests/testapp/views.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ def form_valid(self, form):
3030
},
3131
status=201,
3232
encoder=FileEncoder,
33+
content_type="text/plain",
3334
)
3435

3536

@@ -49,6 +50,7 @@ def form_valid(self, form):
4950
},
5051
status=201,
5152
encoder=FileEncoder,
53+
content_type="text/plain",
5254
)
5355

5456

@@ -67,4 +69,5 @@ def form_valid(self, form):
6769
},
6870
status=201,
6971
encoder=FileEncoder,
72+
content_type="text/plain",
7073
)

0 commit comments

Comments
 (0)