Skip to content

Commit 26ac810

Browse files
authored
tests: added browser tests (#153)
1 parent 3c333c4 commit 26ac810

File tree

4 files changed

+77
-24
lines changed

4 files changed

+77
-24
lines changed

playwright/async_api.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5291,6 +5291,18 @@ def contexts(self) -> typing.List["BrowserContext"]:
52915291
"""
52925292
return mapping.from_impl_list(self._impl_obj.contexts)
52935293

5294+
@property
5295+
def version(self) -> str:
5296+
"""Browser.version
5297+
5298+
Returns the browser version.
5299+
5300+
Returns
5301+
-------
5302+
str
5303+
"""
5304+
return mapping.from_maybe_impl(self._impl_obj.version)
5305+
52945306
def isConnected(self) -> bool:
52955307
"""Browser.isConnected
52965308
@@ -5484,17 +5496,6 @@ async def close(self) -> NoneType:
54845496
"""
54855497
return mapping.from_maybe_impl(await self._impl_obj.close())
54865498

5487-
async def version(self) -> str:
5488-
"""Browser.version
5489-
5490-
Returns the browser version.
5491-
5492-
Returns
5493-
-------
5494-
str
5495-
"""
5496-
return mapping.from_maybe_impl(await self._impl_obj.version())
5497-
54985499

54995500
mapping.register(BrowserImpl, Browser)
55005501

playwright/browser.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,5 +129,6 @@ async def close(self) -> None:
129129
self._is_closed_or_closing = True
130130
await self._channel.send("close")
131131

132-
async def version(self) -> str:
133-
return await self._channel.send("version")
132+
@property
133+
def version(self) -> str:
134+
return self._initializer["version"]

playwright/sync_api.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5519,6 +5519,18 @@ def contexts(self) -> typing.List["BrowserContext"]:
55195519
"""
55205520
return mapping.from_impl_list(self._impl_obj.contexts)
55215521

5522+
@property
5523+
def version(self) -> str:
5524+
"""Browser.version
5525+
5526+
Returns the browser version.
5527+
5528+
Returns
5529+
-------
5530+
str
5531+
"""
5532+
return mapping.from_maybe_impl(self._impl_obj.version)
5533+
55225534
def isConnected(self) -> bool:
55235535
"""Browser.isConnected
55245536
@@ -5716,17 +5728,6 @@ def close(self) -> NoneType:
57165728
"""
57175729
return mapping.from_maybe_impl(self._sync(self._impl_obj.close()))
57185730

5719-
def version(self) -> str:
5720-
"""Browser.version
5721-
5722-
Returns the browser version.
5723-
5724-
Returns
5725-
-------
5726-
str
5727-
"""
5728-
return mapping.from_maybe_impl(self._sync(self._impl_obj.version()))
5729-
57305731

57315732
mapping.register(BrowserImpl, Browser)
57325733

tests/async/test_browser.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Copyright (c) Microsoft Corporation.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License")
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
import re
16+
17+
import pytest
18+
19+
from playwright import Error
20+
from playwright.async_api import Browser
21+
22+
23+
async def test_should_create_new_page(browser):
24+
page1 = await browser.newPage()
25+
assert len(browser.contexts) == 1
26+
27+
page2 = await browser.newPage()
28+
assert len(browser.contexts) == 2
29+
30+
await page1.close()
31+
assert len(browser.contexts) == 1
32+
33+
await page2.close()
34+
assert len(browser.contexts) == 0
35+
36+
37+
async def test_should_throw_upon_second_create_new_page(browser):
38+
page = await browser.newPage()
39+
with pytest.raises(Error) as exc:
40+
await page.context.newPage()
41+
await page.close()
42+
assert "Please use browser.newContext()" in exc.value.message
43+
44+
45+
async def test_version_should_work(browser: Browser, is_chromium):
46+
version = browser.version
47+
if is_chromium:
48+
assert re.match(r"^\d+\.\d+\.\d+\.\d+$", version)
49+
else:
50+
assert re.match(r"^\d+\.\d+$", version)

0 commit comments

Comments
 (0)