def test_inspect_alert(self): """User can read the text of the alert.""" Perry = self.actor given(Perry).was_able_to(Open.their_browser_on(URL)) when(Perry).attempts_to(Click.on_the(JS_ALERT_BUTTON)) then(Perry).should_see_the((TextOfTheAlert(), ReadsExactly("I am a JS Alert")))
def test_can_be_instantiated(self): """Open can be instantiated""" o1 = Open.browser_on(None) o2 = Open.their_browser_on(None) assert isinstance(o1, Open) assert isinstance(o2, Open)
def test_open(Tester): """Open calls .get()""" url = "https://localtest.test" Tester.attempts_to(Open.their_browser_on(url)) mocked_btw = Tester.ability_to(BrowseTheWeb) mocked_btw.to_visit.assert_called_once_with(url)
def test_add_one_element(self): """User is able to add one element.""" Perry = self.actor given(Perry).was_able_to(Open.their_browser_on(URL)) when(Perry).attempts_to(Click.on_the(ADD_BUTTON), Wait.for_the(ADDED_ELEMENTS)) then(Perry).should_see_the((Element(ADDED_ELEMENTS), IsVisible()))
def test_search_for_screenpy(Perry: AnActor) -> None: """GitHub search finds the screenpy repository.""" given(Perry).was_able_to(Open.their_browser_on(URL)) when(Perry).attempts_to(SearchGitHub.for_text("perrygoy/screenpy")) then(Perry).should_see_that( (SearchResultsMessage(), DoesNot(ContainTheText("couldn’t"))), (SearchResultsMessage(), ReadsExactly("1 repository result")), (NumberOfSearchResults(), IsEqualTo(1)), )
def test_select_by_value(self): """Can select an option from a dropdown by value.""" Perry = self.actor given(Perry).was_able_to(Open.their_browser_on(URL)) when(Perry).attempts_to( Select.the_option_with_value(2).from_(THE_DROPDOWN)) then(Perry).should_see_the( (Selected.option_from(THE_DROPDOWN), ReadsExactly("Option 2")))
def test_can_be_instantiated(self): """Open can be instantiated""" o1 = Open.browser_on(None) o2 = Open.their_browser_on(None) o3 = Opens.browser_on(None) self.assertIsInstance(o1, Open) self.assertIsInstance(o2, Open) self.assertIsInstance(o3, Open)
def test_switch_to_iframe(self): """User is able to switch to an iframe.""" Perry = self.actor given(Perry).was_able_to(Open.their_browser_on(URL)) when(Perry).attempts_to(SwitchTo.the(WYSIWYG_IFRAME)) then(Perry).should_see_the( (Text.of_the(CONTENT_BOX), ReadsExactly("Your content goes here.")) )
def test_search_for_nonexistent_repo(Perry: AnActor) -> None: """GitHub search fails to find a nonexistant repository.""" nonexistant_repository = "perrygoy/i-never-made-this-repo" given(Perry).was_able_to(Open.their_browser_on(URL)) when(Perry).attempts_to(SearchGitHub.for_text(nonexistant_repository)) then(Perry).should_see_that( (SearchResultsMessage(), ContainsTheText("We couldn’t find any")), (SearchResultsMessage(), ContainsTheText(nonexistant_repository)), (NumberOfSearchResults(), IsEqualTo(0)), )
def test_dismiss_alert(self): """User can dismiss an alert.""" Perry = self.actor given(Perry).was_able_to( Open.their_browser_on(URL), Click.on_the(JS_CONFIRM_BUTTON) ) when(Perry).attempts_to(DismissAlert()) then(Perry).should_see_the( (Text.of_the(RESULT_MESSAGE), ReadsExactly("You clicked: Cancel")) )
def test_remove_element(self): """User is able to remove an element that was added.""" Perry = self.actor given(Perry).was_able_to( Open.their_browser_on(URL), Click.on_the(ADD_BUTTON), Wait.for_the(ADDED_ELEMENTS), ) when(Perry).attempts_to(Click.on_the(ADDED_ELEMENTS)) then(Perry).should_see_the((Number.of(ADDED_ELEMENTS), IsEqualTo(0)))
def test_respond_to_prompt(self): """User can enter text into a prompt.""" Perry = self.actor test_text = "Hello! I am responding to this prompt." given(Perry).was_able_to( Open.their_browser_on(URL), Click.on_the(JS_PROMPT_BUTTON) ) when(Perry).attempts_to(RespondToPrompt.with_(test_text)) then(Perry).should_see_the( (Text.of_the(RESULT_MESSAGE), ReadsExactly(f"You entered: {test_text}")) )
def test_switch_to_iframe(self): """User is able to switch to an iframe.""" Perry = self.actor given(Perry).was_able_to(Open.their_browser_on(URL)) when(Perry).attempts_to( Click.on_the(CLICK_HERE_LINK), Pause.for_(1).second_because("Selenium needs to catch up"), SwitchToTab.on_top(), ) then(Perry).should_see_the( (BrowserURL(), ContainsTheText("windows/new")), (Text.of_the(HEADER_MESSAGE), ReadsExactly("New Window")), )
def test_add_many_elements(self): """ User is able to add many elements. This test chooses a random number of elements to add, just to show off how to do that, if you want to do something like that. """ Perry = self.actor number_of_times = random.choice(range(2, 10)) given(Perry).was_able_to(Open.their_browser_on(URL)) when(Perry).attempts_to(*(Click.on_the(ADD_BUTTON) for each_time in range(number_of_times))) then(Perry).should_see_the( (Number.of(ADDED_ELEMENTS), IsEqualTo(number_of_times)))
def test_drag_and_drop(self): """ User is able to drag and drop. Expected to fail because there is currently an issue in ActionChains. """ Perry = self.actor given(Perry).was_able_to(Open.their_browser_on(URL)) when(Perry).attempts_to( Wait.for_the(FIRST_DRAGGABLE_BOX).to_be_clickable(), Chain( HoldDown.left_mouse_button().on_the(FIRST_DRAGGABLE_BOX), MoveMouse.to_the(SECOND_DRAGGABLE_BOX), Release.left_mouse_button(), ), ) then(Perry).should_see_the( (Text.of_the(FIRST_DRAGGABLE_BOX), ReadsExactly("B")))