Screenpy

Latest version: v4.2.5

Safety actively analyzes 714860 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 6 of 8

2.2.0

------------------

Improvements

- Updated all the dependencies to support Python 3.9! Kind of a boring update.
- Made the reported Actions more consistently worded.

2.1.0

------------------

Breaking Changes

- Removed `on_top` method from **SwitchToTab**, it wasn't consistent under certain circumstances and that could be misleading.
- Removed the **BaseAction**, **BaseAbility**, and **BaseQuestion** classes in favor of Protocols.

New Features

- Added API testing support!
- Added **MakeAPIRequests** Ability.
- Added **SendGETRequest**, **SendPOSTRequest**, **SendPATCHRequest**, **SendPUTRequest**, **SendOPTIONSRequest**, **SendHEADRequest**, **SendDELETERequest**, and **SendAPIRequest** Actions.
- Added **AddHeader**/**AddHeaders** Action.
- Added **Cookies**, **CookiesOnTheWebSession**, **CookiesOnTheAPISession** Questions.
- Added **StatusCodeOfTheLastResponse** Question.
- Added **BodyOfTheLastResponse** Question.
- Added **HeadersOfTheLastResponse** Question.
- Added **ContainsTheKey**, **ContainsTheValue**, **ContainsTheEntry** Resolutions.
- Added `should_see_any_of` assertion method to Actors, which is similar to `should_see_the` but passes if *at least* one of its tests are true, instead of all of them.
- Added **HasLength** Resolution, for fun.
- Added a "cookbook" section to the docs to give examples of common use-cases.

Improvements:

- *Huge* docs overhaul, aimed at reducing word count and increasing word value.
- Switched to using Protocols for type hinting instead of base classes.
- **IsVisible** Resolution now has a nicer mismatch message.

Bugfixes:

- Fixed a timing issue with **has_method_with_return_value** where the return value could change by the time the mismatch message was being written to the log, which made it look like a passing test was failing.
- Fixed `SwitchTo.default()` logging a very metaphysical "{The Actor} switches to the None".
- Fixed **Enter**'s logging when `then_hits` is used to hit a key without a nice text representation (like "Return").
- Fixed a small collection of copy/paste errors in documentation and logged strings.

2.0.1

------------------

Improvements:

- Added try/except to the **Element** Question so it will return `None` if the element doesn't exist, which enables `IsNot(Visible())` or `IsNot(EqualTo(None))` to test for non-visibility/presence of an element.
- Moved **BrowsingError** to `screenpy.exceptions` too, missed that one!

2.0.0

------------------

Breaking Changes

- Removed `.then_wait_for` methods from **Enter** and **Click**.
- Removed all `to_switch_to...` methods from **BrowseTheWeb**, preferring to use the browser directly. Also removed `to_visit` and `to_get` from **BrowseTheWeb** for the same reason.
- Changed **UnableToPerformError** and **UnableToActError** to **UnableToPerform** and **UnableToAct**.
- Moved **DeliveryError** and **TargetingError** to `screenpy.exceptions` (though you can still technically import them from `screenpy.actor` and `screenpy.target`).
- Removed several syntactic sugar options that, upon retrospect, aren't really grammatically possible in this module.

New Features

- Added *so many* new Actions!
- Added **RefreshPage** Action.
- Added **GoBack** Action.
- Added **GoForward** Action.
- Added **SwitchToTab** Action. (It turns out **SwitchTo** didn't quite switch to all the things you needed to switch to.)
- Added **Chain** Action, to do chained Actions! Such as these:
- Added **DoubleClick** Action.
- Added **RightClick** Action.
- Added **MoveMouse**/**Hover** Action.
- Added **HoldDown** Action.
- Added **Release** Action.
- Enabled several existing Actions to be chained with the new **Chain** Action:
- **Click**
- **Enter**
- **Enter2FAToken**
- **Pause**
- Added **Element** Question, to test things about a specific element, such as...
- Added **IsVisible** Resolution, to test if an element is visible!
- You can now see the same detailed logs without the Allure report if you wish! All the Action is now logged at INFO level. Try adding `--log-cli-level=INFO` to your `pytest` run, for example!

Improvements

- Cleaned up a lot of documentation.
- Updated the `screenpy-quickstart` script to better reflect the current state and recommendations.

Fixes

- Fixed a strange issue that prevented Allure from properly naming the acts and scenes in the Behavior view.

1.0.1

------------------

Improvements

- "Properly" typed ScreenPy. It could probably be done a little better, though.

1.0.0

------------------

New Features

- Added IOS and Android browser support! 🎉 (Will add full Appium support later!)
- Added **Pause** Action, for those times you *really* need it.
- Added **Debug** Action, to drop a debugger in the middle of a chain of Actions/tasks.
- Added **SwitchTo** Action, to switch to iframes, back to the default frame, and whatever else you need to switch to.
- Added **AcceptAlert**/**DismissAlert**/**RespondToPrompt** to support any javascript alert Actions you could want.

Improvements

- Added a bunch of new syntactic sugar and default options.
- Added a new method to Target that will allow you to pass in your own locator tuple, like `Target.located((By.LINK_TEXT, "click me"))`
- Added additional logging to improve debugging experience.
- Added custom exceptions with exception chaining to provide more context when tests break.
- HUGE documentation improvement.
- Typed ScreenPy, and marked ScreenPy as being typed!

Fixes

- Fixed strange grammar in logged Resolution lines.

Deprecations

- Deprecated the `then_wait_for` methods on **Click** and **Enter** now that we have a **Wait** Action. These methods will be removed in 2.0.0. Instructions for modifying your tests can be found in the [1.0.0 Deprecations documentation](https://screenpy-docs.readthedocs.io/en/latest/deprecations.html#id2)

Page 6 of 8

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.