cucumber / language-service

Cucumber Language Service
MIT License
12 stars 21 forks source link

The parser doesn't understand Pytest-BDD-NG Cucumber Expressions #204

Open The-BDD-Coach opened 3 weeks ago

The-BDD-Coach commented 3 weeks ago

👓 What did you see?

All of the steps show as defined except the step that uses Cucumber Expressions

✅ What did you expect to see?

All of the steps are recognized.

📦 Which tool/library version are you using?

Version: 1.88.1 Commit: e170252f762678dec6ca2cc69aba1570769a5d39 Date: 2024-04-10T17:43:08.196Z Electron: 28.2.8 ElectronBuildId: 27744544 Chromium: 120.0.6099.291 Node.js: 18.18.2 V8: 12.0.267.19-electron.0 OS: Darwin arm64 23.4.0

Cucumber for VSCode v1.10.0

🔬 How could we reproduce it?

Scenario: The catalog can be searched by author name.
    Given these books in the catalog
      | Author            | Title                      |
      | Stephen King      | The Shining                |
      | James Baldwin     | If Beale Street Could Talk |
    When a name search is performed for Stephen

with this step definition:

@when(
    partial(
        CucumberExpression,
        # This returns an 'all_search_types' ParameterTypeRegistry
        parameter_type_registry=all_search_types(),
        # This is the Cucumber Expression that is used to match the Gherkin. That is, any Gherkin
        # that matches this Cucumber Expression will be run using this function.
    )("a {AllSearchTypes} search is performed for {}"),
    # This line assigns names to the two capture groups '{}' in the Cucumber Expression.
    anonymous_group_names=("search_type", "search_term"),
)
def a_SEARCH_TYPE_is_performed_for_SEARCH_TERM(
    search_type: AllSearchTypes,
    search_term: str,
    catalog: Catalog,
    search_results: list,
): ...

📚 Any additional context?

No response

kieran-ryan commented 3 weeks ago

@The-BDD-Coach, thanks for raising! Would it be possible to edit the code snippet to include the imports? For additional context on what needs to be matched.

Is the partial reference from functools.partial? If so, is this a requirement with pytest-bdd-ng or is it possible to use the Cucumber Expressions class in its raw format. This can be a barrier for the parser.