def test_search_for_nonexistent_repo(self): nonexistant_repository = "perrygoy/i-never-made-this-repo" perry = self.perry given(perry).was_able_to(Start.on_the_homepage()) when(perry).attempts_to(SearchGitHub.for_text(nonexistant_repository)) then(perry).should_see_that( (SearchResultsMessage.text(), ContainsTheText("We couldn’t find any")), (SearchResultsMessage.text(), ContainsTheText(nonexistant_repository)), (NumberOfSearchResults.total(), IsEqualTo(0)), )
def test_accept_alert(self): """User can accept 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(AcceptAlert()) then(Perry).should_see_the( (Text.of_the(RESULT_MESSAGE), ReadsExactly("You clicked: Ok")) )
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_add_many_elements(self): Perry = self.actor repeat = random.choice(range(2, 10)) given(Perry).was_able_to(Start.on_the_homepage()) when(Perry).attempts_to( Click.on_the(ADD_REMOVE_ELEMENTS_LINK).then_wait_for(ADD_BUTTON) ) and_(Perry).attempts_to( *( Click.on_the(ADD_BUTTON).then_wait_for(ADDED_ELEMENTS) for each_time in range(repeat) ) ) then(Perry).should_see_the((Number.of(ADDED_ELEMENTS), IsEqualTo(repeat)))
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")))