Exemplo n.º 1
0
    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")))
Exemplo n.º 2
0
    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()))
Exemplo n.º 3
0
    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")))
Exemplo n.º 4
0
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_add_one_element(self):
        Perry = self.actor

        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))
        then(Perry).should_see_the((Number.of(ADDED_ELEMENTS), IsEqualTo(1)))
Exemplo n.º 6
0
    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."))
        )
Exemplo n.º 7
0
    def test_select_by_value(self):
        Perry = self.actor

        given(Perry).was_able_to(Start.on_the_homepage())
        when(Perry).attempts_to(
            Click.on_the(DROPDOWN_LINK).then_wait_for(THE_DROPDOWN))
        and_(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")))
Exemplo n.º 8
0
    def test_search_for_screenpy(self):
        perry = self.perry

        given(perry).was_able_to(Start.on_the_homepage())
        when(perry).attempts_to(SearchGitHub.for_text("perrygoy/screenpy"))
        then(perry).should_see_that(
            (SearchResultsMessage.text(), DoesNot(ContainTheText("couldn’t"))),
            (SearchResultsMessage.text(), ReadsExactly("1 repository result")),
            (NumberOfSearchResults.total(), IsEqualTo(1)),
        )
Exemplo n.º 9
0
    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)),
        )
Exemplo n.º 10
0
    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)))
Exemplo n.º 11
0
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)),
    )
Exemplo n.º 12
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"))
        )
Exemplo n.º 13
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}"))
        )
Exemplo n.º 14
0
    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")),
        )
Exemplo n.º 15
0
    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)))
Exemplo n.º 17
0
    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")))