NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1305 most downloaded on pub.dev
A BDD-style widget testing library. Generates Flutter widget tests from *.feature files.
Last release today
07 Oct 2026
Release timing varies
gaps range from 2 weeks to 7 months
Nearly every release is documented
notes for 49 of 54 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
55 releases · first in 2020
One column per quarter.
Gherkin parser 3.0 by @olexale in #124
Full Changelog: v2.1.4...v3.0.0
Feature files are now parsed by cucumber_gherkin, the
official Dart Gherkin parser, instead of the hand-written line scanner. All non-standard syntax this
package supports keeps working unchanged: After: sections, raw Dart lines above Feature:,
@testMethodName: value style tags, and several features in one file.
Scenrio:) or step keyword, a second Background: in the same
feature, and a file holding no feature keyword at all — a missing, mistyped (Featur:) or
commented-out Feature: line used to generate a test file with an empty main(). Errors name the
feature file, the line and the column.
Description blocks are the exception, and it is one Gherkin itself defines: the lines between a
keyword and the first step under it are description text, where any non-keyword line is legal. So
prose is still prose — a description line that merely looks like a step, a * bullet or a
sentence opening with And, is kept as documentation. The cost is that a keyword mistyped in that
same position — a scenario's first step, or a Scenrio: written directly under Feature: — is
read as description too, and the steps under it are dropped without an error, unless the block ends
up with no steps at all, in which case it is reported. Written anywhere below a block's first step,
a mistyped keyword is always reported. A step keyword written with a colon (Given: the app is running) is no step in Gherkin either, and is reported the same way with the spelling to use;
such steps used to run.Scenario Outline test names no longer carry a fragment of the keyword.
Scenario Outline: eating now generates testWidgets('''eating (12, 5, 7)''') rather than
testWidgets('''Outline: eating (12, 5, 7)'''). Update any --plain-name filters, IDE run
configurations, or hooks that match on the scenario title — Hooks.beforeEach and
Hooks.afterEach receive the new value.* keyword now generate step calls. The line was
previously unrecognised and dropped, so such scenarios produced an empty test body. Those tests
now run their steps and may fail.Rule:. Each rule becomes a nested group(), and a rule's Background: applies
only to the scenarios inside it, running after the feature's own background. Tags on a rule are
inherited by the scenarios it contains. Previously the Rule: line was ignored and its background
leaked onto unrelated scenarios.# language: fr
header, including localised keywords for features, backgrounds, scenario outlines and examples.
As in Gherkin, the header counts only above the first feature keyword; written below one it is an
ordinary comment and the file is read in English. An unsupported language code is reported.
After: sections work in them too, and are rewritten into the keyword the file titles its
scenarios with.Examples: block generating a spurious test case from
the second block's header row.\| in a data table or Examples: cell generating \,. It is now a pipe inside the cell. Every
other backslash in a cell is generated as written, so \n and \\ stay the Dart escapes they were.Feature: being dropped when the feature file starts with a blank line, which
silently removed custom imports from the generated file.@integration @slow) becoming a single tag named
integration @slow, which no --tags filter can ever match. Each tag on the line is now emitted
separately, and a tag a Rule: shares with a scenario inside it is emitted once instead of twice.$ or ''' generating a file that fails to compile. Feature: Price is $100
produced group('''Price is $100'''), which Dart reads as an interpolation, and the build died with a
FormatterException quoting lines of a generated file rather than the .feature file behind it. The
same applied to rule titles, to the title a scenario outline builds from its Examples: cells, to the
title passed to Hooks.beforeEach and Hooks.afterEach, and to tag names. Apostrophes that cannot
reach a delimiter — an ordinary Test's scenario — are left as they were.FormatterException about generated code. A
step's Dart file and function are named after the ASCII letters and digits in its text, and where
there are none the generators wrote a step file called .dart holding Future<void> (WidgetTester tester) async, plus an await (tester); call to go with it — neither of which compiles. That covers
step text in a non-Latin script (Given アプリが起動している), a step named entirely by a parameter or
an <outline placeholder>, one opening with a digit (Given 2FA is on became 2faisOn), and one
opening with an underscore (Given _debug mode is on became a _debugModeIsOn private to the step
file, which the generated test imported and could not call). These now fail the build with the
feature file, the line and the column instead. Step text in another script
keeps working wherever the step also holds ASCII text to name it after, and accents are folded onto
ASCII, so los diacríticos son útil is unaffected.cucumber_gherkin and cucumber_messages dependencies; drop the unused build_config.fix: typo Backround to Background by @homeserve-lsaudon in #120
Full Changelog: v2.1.3...v2.1.4
Fix Scenario Outline Variables in Array and Named Parameter Variable Wrapped in Invalid Curly Braces by @olexale in #118
Full Changelog: v2.1.2...v2.1.3
Add Gherkin comments support by @olexale in #116
Fix datatable content by @olexale in #113
Update build_runner and dependencies in pubspec.yaml by @lsaudon in #109
Full Changelog: v2.0.1...v2.1.0
Add support for custom headers in generated files by @olexale in #105
Full Changelog: v2.0.0...v2.0.1
customHeaders configuration option to include custom header lines (imports, comments, etc.) in all generated step files and feature fileschore: ignore all lint or warning rules in generated code by @lsaudon in #95
step folder.build dependencyIgnore all lint or warning rules in generated code by (@lsaudon)
Replace Ruby syntax with Gherkin syntax by @lsaudon in #92
Full Changelog: v1.8.0...v1.8.1
Dependency version bump by @olexale in #90
Add relativeToTestFolder by @olexale in #85
relativeToTestFolder option to control the generated step file locationFix generic step generation when parameters combined with data tables
Generated code is now properly formatted
Integration test imports will not be added if integration_test package is not added to dev_dependencies
integration_test package is not added to dev_dependenciesIntegrationTestWidgetsFlutterBinding.ensureInitialized(); will not be added if integration_test package is not added to dev_dependenciesIn the previous release, comments were broken. This release fixes the issue.
Fix tags when specified in the header
Update dependencies (by @lsaudon)
IntegrationTestWidgetsFlutterBinding.ensureInitialized(); (by @eikebartels)Add hooks (by @daniel-deboeverie-lemon)
Add a comment to the generated step implementation to show how to use the generated step
Automatically detect parameter names in scenario outlines
Allow addition of custom tester type from other test packages using @testerType: tag the value can be like PatrolIntegrationTester instead of WidgetTe
@testerType: tag the value can be like PatrolIntegrationTester instead of WidgetTester(default)@testerName: tag, the value can be like $, integrationTest instead of tester leaving tester(default)@scenarioParams: tag, for example: @scenarioParams: skip: false, timeout: Timeout(Duration(seconds: 1)) and many more.BREAKING CHANGE - Introduce relative and absolute paths for step folder destination If you didn't change the step folder name, you should not notice t…
my_steps), from now, the plugin will create a test/my_steps folder. To prevent this behavior - make the step folder name relative, i.e. to ./my_steps.Fix Background/After sections for files with multiple features defined
Fix bug for feature tags (by @GuillaumeMorinQc)
Add multiple includes to the config file
* Fix nested brackets bug
* 100% code coverage
BREAKING CHANGE - Make 'After' block execute even when the test fails (by @jamontes79)
Add diacritics support (thanks @vidibu)
Nothing published for this version
Add possibility to store config outside of build.yaml. Now we may re-use the same config (for example external_steps) across different packages.
build.yaml. Now we may re-use the same config (for example external_steps) across different packages.* Add data tables support
* Add scenario outline support
Add support for integration tests
Add stepFolderName parameter that changes the step folder name
stepFolderName parameter that changes the step folder nameHotfix for ".." in custom step names
Fix the "I dismiss the page" step
* Add testMethodName tag
testMethodName tag* Migrate to null safety
Nothing published for this version
External steps should have lower priority than local steps
Add a bunch of predefined external steps
testMethodName in build.yamlNothing published for this version
Nothing published for this version
Now it's possible to have subfolders in the step folder
step folderavoid avoid_types_on_closure_parameters (by @kentcb)
After keywordFix code generation on Windows (by @kentcb)
* Minor bug fixes * Add more Tap events * Add 'I Wait' step
Add directives_ordering linter exception
Background keyworddirectives_ordering linter exceptionNothing published for this version
* Add Example and But keywords
Example and But keywordsFix regular expressions for parameters parsing
Basic feature and steps generation
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →