Skip to content

Releases: fnxL/sapwright

Release list

v0.0.2

Choose a tag to compare

@github-actions github-actions released this 01 Oct 13:32

[0.0.2] - 2026-10-01

📚 Documentation

  • Fix typo

⚡ Performance

  • Write text directly before validating in set_text

🚜 Refactor

  • Move types-pywin32 to type-check group
  • Drop psutil and pywinauto
  • Replace pydantic models with dataclasses
  • Delete typing_extensions.override
  • Drop no-op @DataClass from SAPLoginScreenElements
  • Use DEFAULT_TIMEOUT for launch_saplogon timeout
  • Simplify GuiComponent.matches
  • Replace ConnectionManager class with functions
  • [breaking] Drop header filters from get_table_headers

🧪 Testing

  • Update test_utils

⚙️ Miscellaneous Tasks

  • (release) V0.0.2

v0.0.1

Choose a tag to compare

@github-actions github-actions released this 30 Sep 12:10

[0.0.1] - 2026-09-30

🚀 Features

  • Add sap logon launcher utils
  • Add exceptions.py
  • Add custom sap exceptions
  • (utils) Add get_scripting_engine method
  • Add GuiComponentType and VKey enums
  • Add connection manager
  • (objects) Add GuiComponent wrapper for SAP GUI elements
  • Add StatusBarMsg and SessionInfo models
  • (objects) Add GuiSession wrapper
  • Add overloads for find_by_id
  • Add raise_for_status method to GuiSession
  • Add Sapwright entry point with SAP login handling
  • Add close_connection method to connection manager
  • Add title method to GuiSession object
  • Add close_connection method to close all sessions at once
  • Log off via /nex in Sapwright.close_connection
  • Add close_connection by '/nex' command and alis close_all_sessions methods to GuiSession
  • Auto-change password on login with a configurable password generator
  • Type-safe find_by_id with expected_type wrapper classes
  • Add GuiTableControl, GuiComponentCollection, and GuiScrollbar com wrappers
  • Add GuiShell wrapper for shell/custom controls
  • Add title-case COM aliases and wrap children objects in collections
  • Add GuiTableControl.refresh which re-finds the underlying COM object by id
  • Add GuiSession.maximize to maximize the main window of the session
  • Add GuiTableControl.get_table_headers for column name-to-index mapping
  • Make GuiTableRow indexable and iterable over its cells
  • Eagerly cache column headers on GuiTableControl contruction
  • Auto-scroll when get_absolute_row targets a hidden row

🐛 Bug Fixes

  • Export GuiSession class
  • Change type of text setter value param to Any
  • Wrap com session objects in GuiSession wrapper
  • Set defaults for SessionInfo and add scripting_mode_force_notification property
  • Use local date in default password generator
  • Expose GuiTableControl.headers as read-only property

📚 Documentation

  • Update README.md

🚜 Refactor

  • Rename component.matches internals to avoid pyright cycle/private-use warnings
  • Merge GuiComponentCollection into component.py, drop collection.py
  • Remove unused exception variable

🧪 Testing

  • Add tests for is_process_running util
  • Add nofaulthander ptyest setting to suppress dump for windows fatal exception
  • Add sap settings and create session fixture for entire test session
  • Use session.close_connection to cleanup
  • Test start_transaction and end_transaction
  • Fix pytestmark

⚙️ Miscellaneous Tasks

  • Add ci github workflow
  • Update ci workflow to run on push to specific paths
  • Add pyproject.toml
  • Create tests dir
  • Add pywinauto and disable some linting rules
  • Run type-check job on windows-latest
  • Remove pytest nofaulthandler setting
  • Format README.md
  • Add test job in CI and remove windows-latest jobs
  • Use windows-latest runtime
  • Format files
  • Remove basedpyright step from lint job
  • Run ci on specific paths
  • Add release workflow
  • Remove smoke test

💼 Other

  • Ignore tests directory from basedpyright analysis
  • Disable reportExplicitAny
  • Disable reportUnannotatedClassAttribute
  • Disable reportUnusedCallResult
  • Add types-pywin32