Skip to content

Commit b8d7862

Browse files
committed
error test
1 parent 18eeca9 commit b8d7862

File tree

1 file changed

+185
-188
lines changed

1 file changed

+185
-188
lines changed

py/test/selenium/webdriver/common/bidi_emulation_tests.py

Lines changed: 185 additions & 188 deletions
Original file line numberDiff line numberDiff line change
@@ -15,199 +15,196 @@
1515
# specific language governing permissions and limitations
1616
# under the License.
1717

18-
import pytest
19-
20-
from selenium.webdriver.common.bidi.emulation import Emulation, GeolocationCoordinates
18+
from selenium.webdriver.common.bidi.emulation import Emulation, GeolocationCoordinates, GeolocationPositionError
2119
from selenium.webdriver.common.window import WindowTypes
2220

2321

24-
def get_browser_geolocation(driver):
25-
# TODO: use the permissions module to grant geolocation permission when its implemented
26-
# currently it needs to be granted manually in the browser GUI window, so CI will fail
27-
28-
return driver.execute_async_script("""
29-
const callback = arguments[arguments.length - 1];
30-
navigator.geolocation.getCurrentPosition(
31-
position => {
32-
const coords = position.coords;
33-
callback({
34-
latitude: coords.latitude,
35-
longitude: coords.longitude,
36-
accuracy: coords.accuracy,
37-
altitude: coords.altitude,
38-
altitudeAccuracy: coords.altitudeAccuracy,
39-
heading: coords.heading,
40-
speed: coords.speed,
41-
timestamp: position.timestamp
42-
});
43-
},
44-
error => {
45-
callback({ error: error.message });
46-
}
47-
);
48-
""")
49-
50-
51-
def test_emulation_initialized(driver):
52-
"""Test that the emulation module is initialized properly."""
53-
assert driver.emulation is not None
54-
assert isinstance(driver.emulation, Emulation)
55-
56-
57-
def test_set_geolocation_override_with_coordinates_in_context(driver, pages):
58-
"""Test setting geolocation override with coordinates."""
59-
context_id = driver.current_window_handle
60-
pages.load("blank.html")
61-
coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
62-
63-
driver.emulation.set_geolocation_override(coordinates=coords, contexts=[context_id])
64-
65-
result = get_browser_geolocation(driver)
66-
67-
assert "error" not in result, f"Geolocation error: {result.get('error')}"
68-
assert abs(result["latitude"] - coords.latitude) < 0.0001, f"Latitude mismatch: {result['latitude']}"
69-
assert abs(result["longitude"] - coords.longitude) < 0.0001, f"Longitude mismatch: {result['longitude']}"
70-
assert abs(result["accuracy"] - coords.accuracy) < 1.0, f"Accuracy mismatch: {result['accuracy']}"
71-
72-
73-
def test_set_geolocation_override_with_coordinates_in_user_context(driver, pages):
74-
"""Test setting geolocation override with coordinates in a user context."""
75-
# Create a user context
76-
user_context = driver.browser.create_user_context()
77-
78-
context_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context)
79-
80-
driver.switch_to.window(context_id)
81-
pages.load("blank.html")
82-
83-
coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
84-
85-
driver.emulation.set_geolocation_override(coordinates=coords, user_contexts=[user_context])
86-
87-
result = get_browser_geolocation(driver)
88-
89-
assert "error" not in result, f"Geolocation error: {result.get('error')}"
90-
assert abs(result["latitude"] - coords.latitude) < 0.0001, f"Latitude mismatch: {result['latitude']}"
91-
assert abs(result["longitude"] - coords.longitude) < 0.0001, f"Longitude mismatch: {result['longitude']}"
92-
assert abs(result["accuracy"] - coords.accuracy) < 1.0, f"Accuracy mismatch: {result['accuracy']}"
93-
94-
driver.browsing_context.close(context_id)
95-
driver.browser.remove_user_context(user_context)
22+
# def get_browser_geolocation(driver):
23+
# # TODO: use the permissions module to grant geolocation permission when its implemented
24+
# # currently it needs to be granted manually in the browser GUI window, so CI will fail
25+
#
26+
# return driver.execute_async_script("""
27+
# const callback = arguments[arguments.length - 1];
28+
# navigator.geolocation.getCurrentPosition(
29+
# position => {
30+
# const coords = position.coords;
31+
# callback({
32+
# latitude: coords.latitude,
33+
# longitude: coords.longitude,
34+
# accuracy: coords.accuracy,
35+
# altitude: coords.altitude,
36+
# altitudeAccuracy: coords.altitudeAccuracy,
37+
# heading: coords.heading,
38+
# speed: coords.speed,
39+
# timestamp: position.timestamp
40+
# });
41+
# },
42+
# error => {
43+
# callback({ error: error.message });
44+
# }
45+
# );
46+
# """)
47+
#
48+
#
49+
# def test_emulation_initialized(driver):
50+
# """Test that the emulation module is initialized properly."""
51+
# assert driver.emulation is not None
52+
# assert isinstance(driver.emulation, Emulation)
53+
#
54+
#
55+
# def test_set_geolocation_override_with_coordinates_in_context(driver, pages):
56+
# """Test setting geolocation override with coordinates."""
57+
# context_id = driver.current_window_handle
58+
# pages.load("blank.html")
59+
# coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
60+
#
61+
# driver.emulation.set_geolocation_override(coordinates=coords, contexts=[context_id])
62+
#
63+
# result = get_browser_geolocation(driver)
64+
#
65+
# assert "error" not in result, f"Geolocation error: {result.get('error')}"
66+
# assert abs(result["latitude"] - coords.latitude) < 0.0001, f"Latitude mismatch: {result['latitude']}"
67+
# assert abs(result["longitude"] - coords.longitude) < 0.0001, f"Longitude mismatch: {result['longitude']}"
68+
# assert abs(result["accuracy"] - coords.accuracy) < 1.0, f"Accuracy mismatch: {result['accuracy']}"
69+
#
70+
#
71+
# def test_set_geolocation_override_with_coordinates_in_user_context(driver, pages):
72+
# """Test setting geolocation override with coordinates in a user context."""
73+
# # Create a user context
74+
# user_context = driver.browser.create_user_context()
75+
#
76+
# context_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context)
77+
#
78+
# driver.switch_to.window(context_id)
79+
# pages.load("blank.html")
80+
#
81+
# coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
82+
#
83+
# driver.emulation.set_geolocation_override(coordinates=coords, user_contexts=[user_context])
84+
#
85+
# result = get_browser_geolocation(driver)
86+
#
87+
# assert "error" not in result, f"Geolocation error: {result.get('error')}"
88+
# assert abs(result["latitude"] - coords.latitude) < 0.0001, f"Latitude mismatch: {result['latitude']}"
89+
# assert abs(result["longitude"] - coords.longitude) < 0.0001, f"Longitude mismatch: {result['longitude']}"
90+
# assert abs(result["accuracy"] - coords.accuracy) < 1.0, f"Accuracy mismatch: {result['accuracy']}"
91+
#
92+
# driver.browsing_context.close(context_id)
93+
# driver.browser.remove_user_context(user_context)
94+
#
95+
#
96+
# def test_set_geolocation_override_all_coords(driver, pages):
97+
# """Test setting geolocation override with coordinates."""
98+
# context_id = driver.current_window_handle
99+
# pages.load("blank.html")
100+
# coords = GeolocationCoordinates(
101+
# 45.5, -122.4194, accuracy=10.0, altitude=100.2, altitude_accuracy=5.0, heading=183.2, speed=10.0
102+
# )
103+
#
104+
# driver.emulation.set_geolocation_override(coordinates=coords, contexts=[context_id])
105+
#
106+
# result = get_browser_geolocation(driver)
107+
#
108+
# assert "error" not in result, f"Geolocation error: {result.get('error')}"
109+
# assert abs(result["latitude"] - coords.latitude) < 0.0001, f"Latitude mismatch: {result['latitude']}"
110+
# assert abs(result["longitude"] - coords.longitude) < 0.0001, f"Longitude mismatch: {result['longitude']}"
111+
# assert abs(result["accuracy"] - coords.accuracy) < 1.0, f"Accuracy mismatch: {result['accuracy']}"
112+
# assert abs(result["altitude"] - coords.altitude) < 0.0001, f"Altitude mismatch: {result['altitude']}"
113+
# assert abs(result["altitudeAccuracy"] - coords.altitude_accuracy) < 0.1, (
114+
# f"Altitude accuracy mismatch: {result['altitudeAccuracy']}"
115+
# )
116+
# assert abs(result["heading"] - coords.heading) < 0.1, f"Heading mismatch: {result['heading']}"
117+
# assert abs(result["speed"] - coords.speed) < 0.1, f"Speed mismatch: {result['speed']}"
118+
#
119+
# driver.browsing_context.close(context_id)
120+
#
121+
#
122+
# def test_set_geolocation_override_with_multiple_contexts(driver, pages):
123+
# """Test setting geolocation override with multiple browsing contexts."""
124+
# # Create two browsing contexts
125+
# context1_id = driver.browsing_context.create(type=WindowTypes.TAB)
126+
# context2_id = driver.browsing_context.create(type=WindowTypes.TAB)
127+
#
128+
# coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
129+
#
130+
# driver.emulation.set_geolocation_override(coordinates=coords, contexts=[context1_id, context2_id])
131+
#
132+
# # Test first context
133+
# driver.switch_to.window(context1_id)
134+
# pages.load("blank.html")
135+
# result1 = get_browser_geolocation(driver)
136+
#
137+
# assert "error" not in result1, f"Geolocation error in context1: {result1.get('error')}"
138+
# assert abs(result1["latitude"] - coords.latitude) < 0.0001, f"Context1 latitude mismatch: {result1['latitude']}"
139+
# assert abs(result1["longitude"] - coords.longitude) < 0.0001, f"Context1 longitude mismatch: {result1['longitude']}"
140+
# assert abs(result1["accuracy"] - coords.accuracy) < 1.0, f"Context1 accuracy mismatch: {result1['accuracy']}"
141+
#
142+
# # Test second context
143+
# driver.switch_to.window(context2_id)
144+
# pages.load("blank.html")
145+
# result2 = get_browser_geolocation(driver)
146+
#
147+
# assert "error" not in result2, f"Geolocation error in context2: {result2.get('error')}"
148+
# assert abs(result2["latitude"] - coords.latitude) < 0.0001, f"Context2 latitude mismatch: {result2['latitude']}"
149+
# assert abs(result2["longitude"] - coords.longitude) < 0.0001, f"Context2 longitude mismatch: {result2['longitude']}"
150+
# assert abs(result2["accuracy"] - coords.accuracy) < 1.0, f"Context2 accuracy mismatch: {result2['accuracy']}"
151+
#
152+
# driver.browsing_context.close(context1_id)
153+
# driver.browsing_context.close(context2_id)
154+
#
155+
#
156+
# def test_set_geolocation_override_with_multiple_user_contexts(driver, pages):
157+
# """Test setting geolocation override with multiple user contexts."""
158+
# # Create two user contexts
159+
# user_context1 = driver.browser.create_user_context()
160+
# user_context2 = driver.browser.create_user_context()
161+
#
162+
# context1_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context1)
163+
# context2_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context2)
164+
#
165+
# coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
166+
#
167+
# driver.emulation.set_geolocation_override(coordinates=coords, user_contexts=[user_context1, user_context2])
168+
#
169+
# # Test first user context
170+
# driver.switch_to.window(context1_id)
171+
# pages.load("blank.html")
172+
# result1 = get_browser_geolocation(driver)
173+
#
174+
# assert "error" not in result1, f"Geolocation error in user_context1: {result1.get('error')}"
175+
# assert abs(result1["latitude"] - coords.latitude) < 0.0001, (
176+
# f"User context1 latitude mismatch: {result1['latitude']}"
177+
# )
178+
# assert abs(result1["longitude"] - coords.longitude) < 0.0001, (
179+
# f"User context1 longitude mismatch: {result1['longitude']}"
180+
# )
181+
# assert abs(result1["accuracy"] - coords.accuracy) < 1.0, f"User context1 accuracy mismatch: {result1['accuracy']}"
182+
#
183+
# # Test second user context
184+
# driver.switch_to.window(context2_id)
185+
# pages.load("blank.html")
186+
# result2 = get_browser_geolocation(driver)
187+
#
188+
# assert "error" not in result2, f"Geolocation error in user_context2: {result2.get('error')}"
189+
# assert abs(result2["latitude"] - coords.latitude) < 0.0001, (
190+
# f"User context2 latitude mismatch: {result2['latitude']}"
191+
# )
192+
# assert abs(result2["longitude"] - coords.longitude) < 0.0001, (
193+
# f"User context2 longitude mismatch: {result2['longitude']}"
194+
# )
195+
# assert abs(result2["accuracy"] - coords.accuracy) < 1.0, f"User context2 accuracy mismatch: {result2['accuracy']}"
196+
#
197+
# driver.browsing_context.close(context1_id)
198+
# driver.browsing_context.close(context2_id)
199+
# driver.browser.remove_user_context(user_context1)
200+
# driver.browser.remove_user_context(user_context2)
96201

97202

98-
def test_set_geolocation_override_all_coords(driver, pages):
99-
"""Test setting geolocation override with coordinates."""
203+
# the error param returns "invalid argument: Invalid input in "coordinates" error, might be bug from the spec/browser
204+
def test_set_geolocation_override_with_error(driver):
205+
"""Test setting geolocation override with error."""
100206
context_id = driver.current_window_handle
101-
pages.load("blank.html")
102-
coords = GeolocationCoordinates(
103-
45.5, -122.4194, accuracy=10.0, altitude=100.2, altitude_accuracy=5.0, heading=183.2, speed=10.0
104-
)
105-
106-
driver.emulation.set_geolocation_override(coordinates=coords, contexts=[context_id])
107-
108-
result = get_browser_geolocation(driver)
109-
110-
assert "error" not in result, f"Geolocation error: {result.get('error')}"
111-
assert abs(result["latitude"] - coords.latitude) < 0.0001, f"Latitude mismatch: {result['latitude']}"
112-
assert abs(result["longitude"] - coords.longitude) < 0.0001, f"Longitude mismatch: {result['longitude']}"
113-
assert abs(result["accuracy"] - coords.accuracy) < 1.0, f"Accuracy mismatch: {result['accuracy']}"
114-
assert abs(result["altitude"] - coords.altitude) < 0.0001, f"Altitude mismatch: {result['altitude']}"
115-
assert abs(result["altitudeAccuracy"] - coords.altitude_accuracy) < 0.1, (
116-
f"Altitude accuracy mismatch: {result['altitudeAccuracy']}"
117-
)
118-
assert abs(result["heading"] - coords.heading) < 0.1, f"Heading mismatch: {result['heading']}"
119-
assert abs(result["speed"] - coords.speed) < 0.1, f"Speed mismatch: {result['speed']}"
120-
121-
driver.browsing_context.close(context_id)
122-
123207

124-
def test_set_geolocation_override_with_multiple_contexts(driver, pages):
125-
"""Test setting geolocation override with multiple browsing contexts."""
126-
# Create two browsing contexts
127-
context1_id = driver.browsing_context.create(type=WindowTypes.TAB)
128-
context2_id = driver.browsing_context.create(type=WindowTypes.TAB)
208+
error = GeolocationPositionError()
129209

130-
coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
131-
132-
driver.emulation.set_geolocation_override(coordinates=coords, contexts=[context1_id, context2_id])
133-
134-
# Test first context
135-
driver.switch_to.window(context1_id)
136-
pages.load("blank.html")
137-
result1 = get_browser_geolocation(driver)
138-
139-
assert "error" not in result1, f"Geolocation error in context1: {result1.get('error')}"
140-
assert abs(result1["latitude"] - coords.latitude) < 0.0001, f"Context1 latitude mismatch: {result1['latitude']}"
141-
assert abs(result1["longitude"] - coords.longitude) < 0.0001, f"Context1 longitude mismatch: {result1['longitude']}"
142-
assert abs(result1["accuracy"] - coords.accuracy) < 1.0, f"Context1 accuracy mismatch: {result1['accuracy']}"
143-
144-
# Test second context
145-
driver.switch_to.window(context2_id)
146-
pages.load("blank.html")
147-
result2 = get_browser_geolocation(driver)
148-
149-
assert "error" not in result2, f"Geolocation error in context2: {result2.get('error')}"
150-
assert abs(result2["latitude"] - coords.latitude) < 0.0001, f"Context2 latitude mismatch: {result2['latitude']}"
151-
assert abs(result2["longitude"] - coords.longitude) < 0.0001, f"Context2 longitude mismatch: {result2['longitude']}"
152-
assert abs(result2["accuracy"] - coords.accuracy) < 1.0, f"Context2 accuracy mismatch: {result2['accuracy']}"
153-
154-
driver.browsing_context.close(context1_id)
155-
driver.browsing_context.close(context2_id)
156-
157-
158-
def test_set_geolocation_override_with_multiple_user_contexts(driver, pages):
159-
"""Test setting geolocation override with multiple user contexts."""
160-
# Create two user contexts
161-
user_context1 = driver.browser.create_user_context()
162-
user_context2 = driver.browser.create_user_context()
163-
164-
context1_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context1)
165-
context2_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context2)
166-
167-
coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
168-
169-
driver.emulation.set_geolocation_override(coordinates=coords, user_contexts=[user_context1, user_context2])
170-
171-
# Test first user context
172-
driver.switch_to.window(context1_id)
173-
pages.load("blank.html")
174-
result1 = get_browser_geolocation(driver)
175-
176-
assert "error" not in result1, f"Geolocation error in user_context1: {result1.get('error')}"
177-
assert abs(result1["latitude"] - coords.latitude) < 0.0001, (
178-
f"User context1 latitude mismatch: {result1['latitude']}"
179-
)
180-
assert abs(result1["longitude"] - coords.longitude) < 0.0001, (
181-
f"User context1 longitude mismatch: {result1['longitude']}"
182-
)
183-
assert abs(result1["accuracy"] - coords.accuracy) < 1.0, f"User context1 accuracy mismatch: {result1['accuracy']}"
184-
185-
# Test second user context
186-
driver.switch_to.window(context2_id)
187-
pages.load("blank.html")
188-
result2 = get_browser_geolocation(driver)
189-
190-
assert "error" not in result2, f"Geolocation error in user_context2: {result2.get('error')}"
191-
assert abs(result2["latitude"] - coords.latitude) < 0.0001, (
192-
f"User context2 latitude mismatch: {result2['latitude']}"
193-
)
194-
assert abs(result2["longitude"] - coords.longitude) < 0.0001, (
195-
f"User context2 longitude mismatch: {result2['longitude']}"
196-
)
197-
assert abs(result2["accuracy"] - coords.accuracy) < 1.0, f"User context2 accuracy mismatch: {result2['accuracy']}"
198-
199-
driver.browsing_context.close(context1_id)
200-
driver.browsing_context.close(context2_id)
201-
driver.browser.remove_user_context(user_context1)
202-
driver.browser.remove_user_context(user_context2)
203-
204-
205-
# the error param returns "invalid argument: Invalid input in "coordinates" error, might be bug from the spec/browser
206-
# @pytest.mark.xfail_edge
207-
# def test_set_geolocation_override_with_error(driver):
208-
# """Test setting geolocation override with error."""
209-
# context_id = driver.current_window_handle
210-
#
211-
# error = GeolocationPositionError()
212-
#
213-
# driver.emulation.set_geolocation_override(error=error, contexts=[context_id])
210+
driver.emulation.set_geolocation_override(error=error, contexts=[context_id])

0 commit comments

Comments
 (0)