49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
import pytest
|
||
|
||
ADDRESS_CSS = "input[name=MailAddress]"
|
||
PASSWORD_CSS = "input[name=Password]"
|
||
CLOSE_BUTTON_CSS = "input[name=winclosebutton]"
|
||
UNAVAILABLE_TEXT = "時間をお確かめの上、再度実行してください。"
|
||
UNSUPPORTED_TEXT = "ご利用のブラウザでは正しく"
|
||
|
||
|
||
async def load_site(client):
|
||
await client.navigate("https://www.mobilesuica.com/")
|
||
|
||
address = client.find_css(ADDRESS_CSS)
|
||
password = client.find_css(PASSWORD_CSS)
|
||
error1 = client.find_css(CLOSE_BUTTON_CSS)
|
||
error2 = client.find_text(UNSUPPORTED_TEXT)
|
||
|
||
# The page can be down at certain times, making testing impossible. For instance:
|
||
# "モバイルSuicaサービスが可能な時間は4:00~翌日2:00です。
|
||
# 時間をお確かめの上、再度実行してください。"
|
||
# "Mobile Suica service is available from 4:00 to 2:00 the next day.
|
||
# Please check the time and try again."
|
||
site_is_down = client.find_text(UNAVAILABLE_TEXT)
|
||
if site_is_down is not None:
|
||
pytest.xfail("Site is currently down")
|
||
|
||
return address, password, error1 or error2, site_is_down
|
||
|
||
|
||
@pytest.mark.asyncio
|
||
@pytest.mark.with_interventions
|
||
async def test_enabled(client):
|
||
address, password, error, site_is_down = await load_site(client)
|
||
if site_is_down:
|
||
return
|
||
assert client.is_displayed(address)
|
||
assert client.is_displayed(password)
|
||
assert error is None
|
||
|
||
|
||
@pytest.mark.asyncio
|
||
@pytest.mark.without_interventions
|
||
async def test_disabled(client):
|
||
address, password, error, site_is_down = await load_site(client)
|
||
if site_is_down:
|
||
return
|
||
assert address is None
|
||
assert password is None
|
||
assert client.is_displayed(error)
|