diff --git a/app/internal/browser.py b/app/internal/browser.py
index b0d8579..1ada805 100644
--- a/app/internal/browser.py
+++ b/app/internal/browser.py
@@ -31,6 +31,7 @@ async def new_context(
# PlaywrightError: options.isMobile is not supported in Firefox
del options['is_mobile']
+ del options['default_browser_type']
options |= {
'bypass_csp': True,
diff --git a/app/routers/query_params.py b/app/routers/query_params.py
index ee881f2..136d55c 100644
--- a/app/routers/query_params.py
+++ b/app/routers/query_params.py
@@ -234,7 +234,8 @@ def __init__(
'and whether it has touch enabled.
Individual parameters like `user-agent`, `viewport-width`, and `viewport-height` '
'can also be used; in such cases, they will override the `device` settings.
'
'List of [available devices]'
- '(https://github.com/microsoft/playwright/blob/main/packages/playwright-core/src/server/deviceDescriptorsSource.json).
'
+ '(https://github.com/microsoft/playwright/blob/main/packages/playwright-core/src/server/deviceDescriptorsSource.json).'
+ '
'
),
),
] = 'iPhone 12',
diff --git a/app/routers/test_query_params.py b/app/routers/test_query_params.py
index 9f348a4..c86c23c 100644
--- a/app/routers/test_query_params.py
+++ b/app/routers/test_query_params.py
@@ -103,6 +103,37 @@ def test_various_query_params():
'url': 'https://en.wikipedia.org/wiki/African_humid_period',
'cache': False,
'screenshot': True,
+ 'device': 'Desktop Firefox', # to raise (Page.screenshot): Cannot take screenshot larger than 32767
}
response = client.get(api_url, params=params)
assert response.status_code == 200
+
+ # test viewport and screen settings
+ url = 'https://en.wikipedia.org/wiki/World_Wide_Web'
+ params = {
+ 'url': url,
+ 'cache': False,
+ 'viewport-width': 390,
+ 'viewport-height': 844,
+ 'screen-width': 1170,
+ 'screen-height': 2532,
+ 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) '
+ }
+ response = client.get(api_url, params=params)
+ assert response.status_code == 200
+
+ # test wrong device name
+ params = {
+ 'url': url,
+ 'device': 'not-exists',
+ }
+ response = client.get(api_url, params=params)
+ assert response.status_code == 422
+ assert response.json() == {
+ 'detail': [{
+ 'input': 'not-exists',
+ 'loc': ['query', 'device'],
+ 'msg': 'Device not found',
+ 'type': 'device_parsing',
+ }]
+ }