Changelog¶
Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.6.0] - 2026-10-05¶
Fixed¶
i18n translations (
es/pt) are now actually registered with behave. Previously only the English base patterns were registered, so translated feature files got undefined-step errors despite the documentation claiming otherwise.Fixed runtime step-shadowing:
parseplaceholders can capture trailing text, so generic patterns registered before their more specific variants silently stole them (the response header ... is not ...,I set the variable ... to the JSON ...,I read the file ... as lines into ..., plus everyno/notvariant in thees/pttranslations). All specific patterns now register before their generic forms.autoload(context, backends={"api": "httpx"})no longer removes every step of the filtered category — steps without a backend are kept as documented, and the selected backend is stored oncontext.steplib.backendsand used by the API module when creating its client.steplib validatepasses on the shipped library: thees/pttranslations ofthe element {by} {value} attribute {attr} equals {expected}had placeholders in a different order.get_client()in the API module raisesValueErrorfor unknown backends instead of silently falling back to urllib.The Kafka consumer is recreated when consuming from a different topic in the same scenario — the consumer was bound to the first topic.
the page load timeout isandthe implicit wait issteps now apply the values to the active driver, not just to the context.SQL statements in the DB module now auto-commit unless an explicit transaction was started with
I begin a database transaction— previouslyINSERT/UPDATEwere rolled back when the connection closed.SteplibMatchernow sharesParseMatcher’s type registry, so custom types registered viaregister_type()/behave.register_type()convert{value:Type}placeholders at match time.The behave step matcher in use before registration is restored afterwards;
autoloadno longer leaves the custom matcher active for user-defined steps.requestsbackend: duplicateSet-Cookieheaders are recovered from the raw response soI save cookies from the responsebehaves like the other backends.Query parameters sent via step table are merged with the configured defaults instead of replacing them.
steplib initrefuses to overwrite an existing file; use--forceto overwrite.register_type()now also registers the converter with behave so{value:Name}patterns actually convert values.validate_stepsnow also flags pattern placeholders missing from declaredParamdescriptors.Corrected 13 step
examplestrings that did not parse their own patterns, and fixed thees/ptpattern ofI load the JSON file {path} as the last JSONso it does not collide with the data module’s JSON loading step.
Tests¶
Added contract tests that parse every step example against its pattern and verify first-match resolution across all registered languages.
iotests that needjsonschemaare now skipped withpytest.importorskipwhen the package is not installed.Full test suite: 1053 passing, 4 skipped.
Documentation¶
Rewrote the module pages whose patterns and examples did not match the implementation (
api,cli,db,data,io,kafka), fixed the step counts (API has 54 steps, not 55; 210 total) and fixed README examples that used non-existent patterns.docs/changelog.rstnow usesmyst_parserviaincludewith theparseroption (mdincludeis not supported by MyST 5).Removed the
steplib.modules.kafka.clientautodoc entry — the module does not exist.Driver/connection lifecycle examples create the module context (
WebContext,DbContext) before assigning to it; the previous snippets raisedAttributeError.
[1.4.0] - 2026-07-28¶
Fixed¶
Normalized boolean and
Nonevalue comparisons across all assertion functions. Replaced directstr()conversions in step/action functions with_normalize_value/_normalize_json_valuehelpers so Python booleans (True/False) andNonecompare against their JSON-style string representations ("true","false","null") consistently. Affected modules:api,db,kafka,ioanddata.Fixed
api_assert_json_path_containsto normalize the looked-up value before checking list membership.Fixed
kafka_assert_message_orderto normalize expected keys before comparison.
Changed¶
Added
pyyaml>=6.0to thedataoptional dependency group to support YAML file loading.
Tests¶
Added regression tests for boolean/
Nonenormalization inapi,db,kafka,ioanddatamodules.Full test suite: 1027 passing tests.
[1.3.0] - 2026-07-28¶
Added¶
IO module (
steplib.modules.io): 38 file, JSON, CSV and directory testing steps. File CRUD (read, write, append, delete, copy, move, rename, create empty), file assertions (exists, not exists, same, size, extension), JSON operations (load, save, path get/set/delete, validity, schema match, diff, merge, type check), CSV operations (create, write row, save, header row), directory operations (create, exists, not exists, list, delete) and read file as lines.CLI module (
steplib.modules.cli): 10 shell command execution steps with subprocess. Command execution (with optional timeout), exit code assertions, stdout assertions (contains, not contains, equals, matches pattern), stderr assertions, and storing output (stdout and stderr) into variables.Data module extensions: 6 new steps — regex match (
the variable {name} matches the pattern {pattern}), starts with, ends with, increment variable, greater than, less than, and a wait/sleep utility (I wait for {seconds:f} seconds). Data module now has 32 steps.Tests: 861 tests covering core, all modules, CLI and behave integration.
Changed¶
Total step count increased from 131 to 210 across 7 modules.
README and Sphinx documentation updated with IO and CLI module sections, updated step counts, and new feature examples.
[1.0.0] - 2026-07-27¶
Added¶
Core package (
steplib.core):@stepdecorator,StepInfometadata,StepRegistrywith behave integration,Paramdataclass withTypeRegistry,SteplibStatelifecycle management, i18n pattern expansion and validation, static step contract validation, ecosystem integration helpers (behave-kit,behave-tables,behave-data).API module (
steplib.modules.api): 54 HTTP testing steps with stdlib (urllib), httpx and requests backends. Configuration (base URL, headers, timeout, query params, proxy), authentication (basic auth, bearer token), SSL/redirect control, cookie management, requests (plain, body, form data, JSON body, query params, headers from table), status/body/JSON Path/header/ response-time assertions, JSON Schema validation, store/extract operations, variable reuse and table comparison.Web module (
steplib.modules.web): 34 browser testing steps with Selenium (Chrome, Firefox, headless). Configuration (base URL, implicit wait, page load timeout, window size), navigation (navigate, refresh, back, forward, frame switching), interactions (click, type, clear, select, screenshot), waits (element present, element visible, text), assertions (title, URL, element presence/visibility/enabled/text/attribute, page content), cookies (exists, delete, store) and store/extract operations.DB module (
steplib.modules.db): 22 database testing steps with SQLAlchemy. Connection management (connect, disconnect), query execution (plain and with bind parameters), row count assertions (exact, greater than, fewer than), column assertions (equals, not equals, contains, null, not null), scalar queries, table assertions (exists, row count), transaction management (begin, rollback, commit) and store/extract operations.Kafka module (
steplib.modules.kafka): 20 Kafka producer/consumer testing steps with kafka-python-ng. Configuration (bootstrap servers, consumer group, auto offset reset, producer/consumer config overrides), message production (single, JSON, batch from table), consumption (with optional timeout), assertions (count, greater than, contains, key/value by index, regex match, order) and store/extract operations.Behave integration (
steplib.behave):autoload(context)for entry-point discovery,load(context, *modules)for explicit loading,before_allandafter_scenariohooks.CLI (
steplib.cli):steplib list / show / validate / initpowered by Typer with table and JSON output formats. List supports--category,--backendand--tagfilters.i18n: Spanish (
es) and Portuguese (pt) translations for all 131 steps across all modules. Bothi18ndictionary and stacked decorator patterns supported.Tests: 467 tests covering core, modules, CLI and behave integration. Coverage gate at 80% (current: 82%).
CI/CD: GitHub Actions workflows for CI (lint, typecheck, test, coverage), release (build, PyPI publish with attestations, GitHub release) and docs (Sphinx + furo, GitHub Pages deployment).
Documentation: Sphinx documentation with furo theme, autodoc API reference, getting started guides, module references with complete step listings, architecture docs, step contract guide and i18n guide.
Community files:
CODE_OF_CONDUCT.md,CONTRIBUTING.md,SECURITY.md, pull request template, bug report and feature request issue templates.Project setup:
pyproject.tomlwith hatchling + hatch-vcs,Makefile,LICENSE(MIT),steplib/py.typedmarker,.markdownlint.json.
Technical¶
mypy --strictclean across 38 source files.ruffclean withE,F,W,I,N,UP,B,SIMrules.Python 3.11+ required.
Zero mandatory runtime dependencies beyond
behave,parseandtyper.