Skip to main content

CI Documentation Status PyPI PyPI - Python Version PyPI - License

gherlint

Linter for Gherkin feature files, written in Python

Install

Simply run pip install gherlint.

Linting Feature Files

gherlint comes with a command line interface. To recursively lint all feature files in a directory, run gherlint lint <path>.

Computing Metrics

gherlint can also create some metrics for you if you want to know how many features, scenarios and steps you have in your test suite. To do so, run gherlint stats <path>.

Disclaimer

gherlint is still in an early development phase. New checks will be added over time. If you want to contribute, feel free to open issues suggesting useful checkers, or open a pull request if you want to!

Roadmap

The following work items are planned for the upcoming releases:

  • V0.0.x - V0.1.0:
    • Parser and object model for feature files
    • Basic checkers to demonstrate workflow
    • Basic text based reporter
  • V0.1.x - V1.0: <-- we are here
    • Add more checkers
    • Add more output formats
    • Extend object model as necessary for checkers
    • Reach a stable interface for object model, checkers and reporters
    • Add documentation
    • Support configuration to enable/disable individual messages
  • V1.x - V2.0:
    • Implement plugin architecture to allow users to add custom checkers

CHANGELOG

V0.5.0

New checks:

  • duplicated-scenario-name
  • duplicated-feature-name
  • only-given-allowed-in-background
  • tag-could-be-on-parent

Other changes:

  • Add support for configuration from a file. The file must be in .toml format. You can include the configuration in your pyproject.toml, or if you don't use that, you can create a gherlint.toml file in the root of your project.
  • Individual messages can now be disabled in the configuration file (section: reporting, option: disable).

V0.4.0

New checks:

  • unused-parameter
  • empty-background
  • outline-could-be-a-scenario
  • consider-using-background
  • examples-outside-scenario-outline
  • duplicated-tag

Other changes:

  • unparseable-file is now issued for all nodes that offend the gherkin parser together with more error information provided by it
  • missing-parameter now clearly states what parameter is not defined in the examples
  • If gherlint patches the file contents with a forgotten # language tag the line numbers for messages are no longer shifted
  • Types of And and But steps are now inferred correctly
  • New command fix-language-tags to automatically add or fix missing or incorrect language tags
  • Rename some message codes to have a defined structure: each checker has its own hundreds digit.

V0.3.0

New checks:

  • missing-language-tag
  • wrong-language-tag
  • unparseable-file

Other changes:

  • gherlint can now automatically detect the language used and make sure that it can parse the files even without a # language token present.

V0.2.0

New checks:

  • missing-given-step
  • missing-when-step
  • missing-then-step
  • empty-scenario
  • empty-feature
  • file-has-no-feature
  • missing-parameter

Other changes:

  • Support for Background
  • Determination of step type independent of language
  • Distinction between Scenario and Scenario Outline independent of language

V0.1.0

First package in alpha status:

  • Parser and object model for feature files
  • Basic checkers to demonstrate workflow
  • Basic text based reporter

Metadata

Release files for gherlint 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gherlint 0.5.0
File Size Uploaded
gherlint-0.5.0.tar.gz 16.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gherlint 0.5.0
File Interpreter ABI Platform
gherlint-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 38.2 kB

Release files / gherlint-0.5.0.tar.gz

Download URL gherlint-0.5.0.tar.gz
Size 16.2 kB
Tags Source
SHA-256 checksum
How to use checksums
69ad21176dca442cefa57363305d7a366c6a5e7e8cfbb0eef58e4503e89b613e
BLAKE2b-256 checksum
How to use checksums
cb4589919c00214d2c267e1e78b2afca0a0ccf9d73e052dd25f4957dbd92a6ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 30, 2025.

Transparency log

Release files / gherlint-0.5.0-py3-none-any.whl

Download URL gherlint-0.5.0-py3-none-any.whl
Size 22.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
da4e54748b88381ca9caa996cb199e2a3f0c2573be3b325f78d4818135df1ac7
BLAKE2b-256 checksum
How to use checksums
7ee5ab51cd252d2c1f1419cf03fc0e5b85af11545cffde08d9f69ca27ebe7972
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 30, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page