Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 101 additions & 0 deletions webdriver/tests/bidi/emulation/set_locale_override/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,104 @@ def another_locale(default_locale, some_locale):
raise Exception(
f"Unexpectedly could not find locale different from the default {default_locale} and {some_locale}"
)


@pytest_asyncio.fixture
async def get_current_navigator_language(bidi_session):
async def get_current_navigator_language(context, sandbox=None):
result = await bidi_session.script.evaluate(
expression="navigator.language",
target=ContextTarget(context["context"], sandbox=sandbox),
await_promise=False,
)

return result["value"]

return get_current_navigator_language


@pytest_asyncio.fixture
async def get_current_navigator_languages(bidi_session):
async def get_current_navigator_languages(context, sandbox=None):
result = await bidi_session.script.evaluate(
expression="navigator.languages",
target=ContextTarget(context["context"], sandbox=sandbox),
await_promise=False,
)

arr = []
for item in result["value"]:
arr.append(item["value"])

return arr

return get_current_navigator_languages


@pytest_asyncio.fixture
async def default_navigator_language(get_current_navigator_language, top_context):
"""
Returns default navigator.language value.
"""
return await get_current_navigator_language(top_context)


@pytest_asyncio.fixture
async def default_navigator_languages(get_current_navigator_languages, top_context):
"""
Returns default navigator.languages value.
"""
return await get_current_navigator_languages(top_context)


@pytest_asyncio.fixture
async def assert_locale_against_default(
get_current_locale,
get_current_navigator_language,
get_current_navigator_languages,
default_locale,
default_navigator_language,
default_navigator_languages,
):
"""
Assert JS locale and navigator.language/s against default values.

Note: it's possible to have slightly different values between JS locale and
navigator.language/s, that's why we have to retrieve the default values
for each API.
"""

async def assert_locale_against_default(context):
assert await get_current_locale(context) == default_locale
assert (
await get_current_navigator_language(context) == default_navigator_language
)
assert (
await get_current_navigator_languages(context)
== default_navigator_languages
)

return assert_locale_against_default


@pytest_asyncio.fixture
async def assert_locale_against_value(
top_context,
get_current_locale,
get_current_navigator_language,
get_current_navigator_languages,
):
"""
Assert JS locale and navigator.language/s against provided value
"""

async def assert_locale_against_value(value, context):
assert (
context != top_context
), "Provided context should be different from top_context"

assert await get_current_locale(context) == value
assert await get_current_navigator_language(context) == value
assert await get_current_navigator_languages(context) == [value]

return assert_locale_against_value
23 changes: 12 additions & 11 deletions webdriver/tests/bidi/emulation/set_locale_override/locale.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,34 @@
pytestmark = pytest.mark.asyncio


async def test_locale_set_override_and_reset(bidi_session, top_context,
get_current_locale, default_locale, some_locale, another_locale):
assert await get_current_locale(top_context) == default_locale
async def test_locale_set_override_and_reset(bidi_session, new_tab,
some_locale, another_locale,
assert_locale_against_default, assert_locale_against_value):
await assert_locale_against_default(new_tab)

# Set locale override.
await bidi_session.emulation.set_locale_override(
contexts=[top_context["context"]],
contexts=[new_tab["context"]],
locale=some_locale
)

assert await get_current_locale(top_context) == some_locale
await assert_locale_against_value(some_locale, new_tab)

# Set locale override.
# Set another locale override.
await bidi_session.emulation.set_locale_override(
contexts=[top_context["context"]],
contexts=[new_tab["context"]],
locale=another_locale
)

assert await get_current_locale(top_context) == another_locale
await assert_locale_against_value(another_locale, new_tab)

# Set locale override.
# Reset locale override.
await bidi_session.emulation.set_locale_override(
contexts=[top_context["context"]],
contexts=[new_tab["context"]],
locale=None
)

assert await get_current_locale(top_context) == default_locale
await assert_locale_against_default(new_tab)


@pytest.mark.parametrize("value", [
Expand Down
Loading