Skip to content

Commit 4eb6545

Browse files
authored
adds new test for he/bookstore page (#2843)
1 parent 470fb66 commit 4eb6545

2 files changed

Lines changed: 121 additions & 0 deletions

File tree

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import pytest
2+
from e2e_tests.e2e.ui.pages.home import HomeRex
3+
4+
5+
@pytest.mark.asyncio
6+
async def test_osweb_higher_education_page(chrome_page, base_url):
7+
8+
# GIVEN: Playwright, chromium and the rex_base_url
9+
await chrome_page.goto(base_url)
10+
home = HomeRex(chrome_page)
11+
await chrome_page.keyboard.press("Escape")
12+
13+
# WHEN: Navigate to Higher Education (HE) page (depends on envs)
14+
if "staging" in chrome_page.url:
15+
pytest.skip("Skipping test. Staging is missing Higher Education page")
16+
else:
17+
18+
await home.click_higher_education_link()
19+
20+
# THEN: HE page opens
21+
assert await home.try_assignable_today_link.is_visible()
22+
23+
assert await home.free_digital_library_subjects.count() == 8
24+
25+
assert await home.search_technology_partners_link.is_visible()
26+
27+
assert (
28+
"affordable technology for higher education"
29+
in await chrome_page.inner_text("body")
30+
)
31+
32+
33+
@pytest.mark.asyncio
34+
async def test_osweb_higher_education_page_bookstore_link(chrome_page, base_url):
35+
36+
# GIVEN: Playwright, chromium and the rex_base_url
37+
await chrome_page.goto(base_url)
38+
home = HomeRex(chrome_page)
39+
await chrome_page.keyboard.press("Escape")
40+
41+
# WHEN: Navigate to bookstore page (depends on envs)
42+
if "staging" in chrome_page.url:
43+
await chrome_page.goto(f"{base_url}/bookstore")
44+
else:
45+
await home.click_higher_education_link()
46+
await home.click_campus_affordability_link()
47+
48+
# THEN: Bookstore page elements are visible/enabled in both staging and prod envs
49+
assert await home.higher_education_bookstore_order_access_code.is_visible()
50+
assert await home.higher_education_bookstore_view_print_options.first.is_visible()
51+
assert await home.obtain_access_codes_via_vitalsource.is_visible()
52+
assert await home.obtain_access_codes_via_openstax.is_visible()
53+
assert await home.know_before_your_order_columns.is_visible()
54+
assert await home.higher_education_bookstore_view_print_options.last.is_visible()
55+
assert await home.access_pdf.is_visible()
56+
57+
# THEN: Access code order form opens in new tab
58+
async with chrome_page.expect_popup() as popup_info:
59+
await home.access_code_order_form.click()
60+
61+
new_tab = await popup_info.value
62+
await new_tab.wait_for_load_state()
63+
64+
assert "riceuniversity.tfaforms.net/47" in new_tab.url
65+
assert "Assignable Bookstore Order Form" in await new_tab.title()
66+
67+
await new_tab.close()

e2e_tests/e2e/ui/pages/home.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,60 @@ async def click_search_result(self):
634634
async def section_count(self):
635635
return await self.page.locator("section").all()
636636

637+
# Higher Education and bookstore page
638+
639+
@pytest.mark.asyncio
640+
async def click_higher_education_link(self):
641+
await self.page.get_by_role("link", name="Explore Higher Ed resources").click()
642+
643+
@pytest.mark.asyncio
644+
async def click_campus_affordability_link(self):
645+
await self.page.get_by_role("link", name="Explore your options!").click()
646+
647+
@property
648+
def higher_education_bookstore_order_access_code(self):
649+
return self.page.get_by_role("link", name="Order access codes")
650+
651+
@property
652+
def higher_education_bookstore_view_print_options(self):
653+
return self.page.get_by_role("link", name="View print options")
654+
655+
@property
656+
def obtain_access_codes_via_vitalsource(self):
657+
return self.page.get_by_role(
658+
"heading", name="Order through VitalSource-powered programs"
659+
)
660+
661+
@property
662+
def obtain_access_codes_via_openstax(self):
663+
return self.page.get_by_role("heading", name="Order directly through OpenStax")
664+
665+
@property
666+
def know_before_your_order_columns(self):
667+
return self.page.locator(
668+
"div.content-block-cards.card_style_rounded.has-columns"
669+
)
670+
671+
@property
672+
def access_pdf(self):
673+
return self.page.get_by_role("link", name="Access PDF")
674+
675+
@property
676+
def access_code_order_form(self):
677+
return self.page.get_by_role("link", name="order form")
678+
679+
@property
680+
def try_assignable_today_link(self):
681+
return self.page.get_by_role("link", name="Try Assignable today!")
682+
683+
@property
684+
def free_digital_library_subjects(self):
685+
return self.page.locator("div.content-block-cards a.cta-link")
686+
687+
@property
688+
def search_technology_partners_link(self):
689+
return self.page.get_by_role("link", name="Search Technology Partners")
690+
637691
# Clears blockers/overlays
638692

639693
@pytest.mark.asyncio

0 commit comments

Comments
 (0)