Skip to content

Commit 61c952a

Browse files
committed
[tests] Removed pinned chrome version in CI
1 parent 15ed708 commit 61c952a

File tree

2 files changed

+45
-61
lines changed

2 files changed

+45
-61
lines changed

.github/workflows/ci.yml

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,6 @@ jobs:
5454
cache-dependency-path: |
5555
**/requirements*.txt
5656
57-
- uses: browser-actions/setup-chrome@v1
58-
# Using a fixed version, see here for more information on why:
59-
# https://github.com/openwisp/openwisp-controller/issues/902#issuecomment-2266219715
60-
# TODO: find a solution to allow using recent versions
61-
with:
62-
chrome-version: 125
63-
install-chromedriver: true
64-
id: setup-chrome
65-
66-
- run: |
67-
${{ steps.setup-chrome.outputs.chrome-path }} --version
68-
chromedriver --version
69-
7057
- name: Install Dependencies
7158
id: deps
7259
run: |
@@ -97,7 +84,6 @@ jobs:
9784
coverage xml
9885
env:
9986
SELENIUM_HEADLESS: 1
100-
CHROME_BIN: ${{ steps.setup-chrome.outputs.chrome-path }}
10187

10288
- name: Upload Coverage
10389
if: ${{ success() }}

openwisp_controller/config/tests/test_selenium.py

Lines changed: 45 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,51 @@ def test_device_preview_keyboard_shortcuts(self):
110110
actions.send_keys(Keys.ESCAPE).perform()
111111
self.wait_for_invisibility(By.CSS_SELECTOR, '.djnjc-overlay:not(.loading)')
112112

113+
def test_unsaved_changes(self):
114+
"""
115+
Execute this test using Chrome instead of Firefox.
116+
117+
Firefox automatically accepts the beforeunload alert, which makes it
118+
impossible to test the unsaved changes alert.
119+
"""
120+
self.login()
121+
device = self._create_config(organization=self._get_org()).device
122+
path = reverse('admin:config_device_change', args=[device.id])
123+
self.open(path)
124+
with self.subTest('Alert should not be displayed without any change'):
125+
self.open(path)
126+
try:
127+
WebDriverWait(self.web_driver, 1).until(EC.alert_is_present())
128+
except TimeoutException:
129+
pass
130+
else:
131+
self.fail('Unsaved changes alert displayed without any change')
132+
133+
with self.subTest('Alert should be displayed after making changes'):
134+
# The WebDriver automatically accepts the
135+
# beforeunload confirmation dialog. To verify the message,
136+
# we log it to the console and check its content.
137+
self.web_driver.execute_script(
138+
'django.jQuery(window).on("beforeunload", function(e) {'
139+
' console.warn(e.returnValue); });'
140+
)
141+
# simulate hand gestures
142+
self.find_element(by=By.TAG_NAME, value='body').click()
143+
self.find_element(by=By.NAME, value='name').click()
144+
# set name
145+
self.find_element(by=By.NAME, value='name').send_keys('new.device.name')
146+
# simulate hand gestures
147+
self.find_element(by=By.TAG_NAME, value='body').click()
148+
self.web_driver.refresh()
149+
for entry in self.get_browser_logs():
150+
if (
151+
entry['level'] == 'WARNING'
152+
and "You haven\'t saved your changes yet!" in entry['message']
153+
):
154+
break
155+
else:
156+
self.fail('Unsaved changes code was not executed.')
157+
113158
def test_multiple_organization_templates(self):
114159
shared_required_template = self._create_template(
115160
name='shared required', organization=None
@@ -280,53 +325,6 @@ def test_force_delete_multiple_devices_with_deactivating_config(self):
280325
self.assertEqual(Device.objects.count(), 0)
281326

282327

283-
@tag('selenium_tests')
284-
class TestDeviceAdminUnsavedChanges(
285-
DeviceAdminSeleniumTextMixin,
286-
CreateConfigTemplateMixin,
287-
StaticLiveServerTestCase,
288-
):
289-
browser = 'chrome'
290-
291-
def test_unsaved_changes(self):
292-
"""
293-
Execute this test using Chrome instead of Firefox.
294-
295-
Firefox automatically accepts the beforeunload alert, which makes it
296-
impossible to test the unsaved changes alert.
297-
"""
298-
self.login()
299-
device = self._create_config(organization=self._get_org()).device
300-
path = reverse('admin:config_device_change', args=[device.id])
301-
self.open(path)
302-
with self.subTest('Alert should not be displayed without any change'):
303-
self.open(path)
304-
try:
305-
WebDriverWait(self.web_driver, 1).until(EC.alert_is_present())
306-
except TimeoutException:
307-
pass
308-
else:
309-
self.fail('Unsaved changes alert displayed without any change')
310-
311-
with self.subTest('Alert should be displayed after making changes'):
312-
# simulate hand gestures
313-
self.find_element(by=By.TAG_NAME, value='body').click()
314-
self.find_element(by=By.NAME, value='name').click()
315-
# set name
316-
self.find_element(by=By.NAME, value='name').send_keys('new.device.name')
317-
# simulate hand gestures
318-
self.find_element(by=By.TAG_NAME, value='body').click()
319-
self.web_driver.refresh()
320-
try:
321-
WebDriverWait(self.web_driver, 5).until(EC.alert_is_present())
322-
except TimeoutException:
323-
for entry in self.get_browser_logs():
324-
print(entry)
325-
self.fail('Timed out wating for unsaved changes alert')
326-
else:
327-
self.web_driver.switch_to.alert.accept()
328-
329-
330328
@tag('selenium_tests')
331329
class TestVpnAdmin(
332330
SeleniumTestMixin,

0 commit comments

Comments
 (0)