A feature file in Cucumber is a plain text file that describes a feature of the application being tested. Here's an example of a Before hook in Ruby: After hooks are executed after each scenario, and are used to clean up the environment after each scenario is run. A language above is called Gherkin and it implements the principles of Business readable domain specific language(BRDSL). A setup method is a method that is run before a test is executed. Keep the steps simple and focused on the behavior being tested. The regular expressions are used to match the text of the steps in the feature file and to extract the values of the variables. Cucumber is software for Behaviour Driven Development (BDD) and when you start using it for your work, the number of automated tests can add up hence increasing your work by having to wait for it to run them all together.This is time-consuming and sometimes even takes a lot of time. The tags can be used to control the order of execution, so that the tests in Test Feature 1 are executed before the tests in Test Feature 2. A table with headers is a table of data that has headers. This often involves creating a performance testing plan that outlines the goals of the testing, the tools and techniques that will be used, and the expected results. By following these best practices, you can write efficient and maintainable Cucumber tests that are easy to understand and less prone to bugs. The step definition file is written in a programming language, such as Ruby or Java, and provides the code that is executed when each step in the scenario is executed. In our only test step, except the Background step, we use a parameter in which we pass the value Scenario 1. What is the purpose of a data-driven approach in Cucumber? The role of regular expressions in Cucumber step definitions is to provide a way to match the steps in a scenario to the implementation of those steps, making it possible to automate the testing of an application. The file, in which Cucumber tests are written, is known as feature files. What are different Hooks in Cucumber. IM LAKSHAY SHARMA AND IM A FULL-STACK TEST AUTOMATION ENGINEER. What is the difference between Cucumber-JVM and Cucumber-Ruby? A scenario outline in Cucumber is a way to specify a set of examples for a scenario. For example, you can use a hook to set up the environment for a test and to clean up the environment after a test: In this example, the Before hook runs before each scenario, and the After hook runs after each scenario. This can be useful for passing data from one step to another, or for storing data that is used by multiple steps. I have yet to automate the steps, so there are all manual cases. You can also use explicit waits in Cucumber to handle asynchronous testing: In this example, the step definition uses the browser.wait function and the protractor.ExpectedConditions.presenceOf function to wait for the productPage element to be present before checking if it is displayed. The purpose of the Feature keyword is to provide a high-level description of a software feature, and to group related scenarios. Features file contain high level description of the Test Scenario in simple language. The dry-run option is useful for verifying the syntax and mapping of your tests before executing them, which can help to identify and resolve any problems before the tests are executed. Here are a few options: Cucumber Reports Plugin: This plugin generates HTML reports from Cucumber JSON files. // Don't do this. Here's an example of how you can configure Selenium WebDriver to run tests on Google Chrome: Once the driver is configured, you can use it in your Cucumber step definitions to perform browser interactions. Ideally, you should be able to understand the intent of the test just by reading a test in feature file. Gherkin has a way to do that and it is called Data Table. At the same time of being a test it also documents the behavior of an application. Golang vs Java which one is better for your next project? Site design / logo 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA. When to use Cucumber Hooks in Selenium. This step is executed before the first scenario and before the second scenario, making it easy to set up the environment for both scenarios. You can run your manual tests and generate a JSON file using the Cucumber command line interface, and then use the plugin to convert the JSON file into an HTML report. Just to add to the existing answers: remember to write "Scenario: " before writing actual code of the step. To subscribe to this RSS feed, copy and paste this URL into your RSS reader. This can be a useful way to keep track of your testing progress, and to ensure that all scenarios have been tested thoroughly. HTML Reports: Cucumber generates an HTML report that provides a summary of the test results, including the number of scenarios run, the number of scenarios passed, and the number of scenarios failed. A feature file is a test definition file which contains the specification in the form of scenarios and steps. Selenium WebDriver allows you to automate browser interactions, and you can use it in combination with Cucumber to write tests that run on specific browsers. How do you handle cross-browser testing in Cucumber? These plugins can be used to enhance the reporting, integrate with other testing tools, or add new functionality to Cucumber. In this article I will present the most important Cucumber features together with Java implementation. What is Cucumber & SpecFlow &Gherkin. Acceptance steps generally follow the application specification. How do you handle exceptions in Cucumber tests? Code Block 12. A feature file in Cucumber is a plain text file that describes a feature of the application being tested. Tells Cucumber explicitly where to load code from. Having this we can make use of implemented methods. It is an essential part of Cucumber, as it serves as an automation test script as well as live documents. Lets assume we have a two steps scenario in which we want to pass value data from step 1 to step 2 (Code Block 7). A background in Cucumber is a set of steps that are executed before each scenario in a feature file. Natural is the name of the plugin, so this can also be found, This will give you an option to select, whether you like to use it for Cucumber or JBehave(. In Cucumber, a scenario context is a mechanism for storing data that is shared across multiple steps in a scenario. When: Validate the login page Store the authentication token or session information after a successful login. rev2023.4.17.43393. For example, you can use a data-driven approach to test a login feature with multiple sets of valid and invalid credentials: In this example, the same login feature is tested with two sets of data. To run a Cucumber test in the command line, you need to have Cucumber installed on your machine. It shows you unused step definitions, and it sorts the step definitions by their average execution time. A step definition is the actual code implementation of the feature mentioned in the feature file. By using hooks, you can handle test data setup and teardown in Cucumber and ensure that your test data is properly set up and cleaned up before and after each scenario. For example, you can use a regular expression to match a dynamic value in a step definition: In this example, the regular expression "Product [0-9]+" is used to match the dynamic title of the product page. Browse other questions tagged, Where developers & technologists share private knowledge with coworkers, Reach developers & technologists worldwide, Thanks @Thomas Sundberg I do not use Maven, I jsut build that using empty project. What is the importance of a dry run in Cucumber? companies in Europe, 2023 Miquido. It will give you a a working project that you can modify to contain your problem. The scenario context is used to store data that is needed by multiple steps in a scenario and to make the data available to the steps. By using data tables, you can pass multiple values to a single step, which can be useful for testing multiple scenarios with similar steps. Invokes formatters without executing the steps. Finally, defining scenarios at the right level of abstraction is important. A hook is a block of code that is executed before or after a scenario is executed. The World object is defined with a user method that returns the user object, and this method is used in the step definitions to access the user object. These organizations which are using Selenium want to integrate Cucumber with Selenium as Cucumber helps you to read and to understand the application flow. Used by default. They are used to match the text of a step in a scenario to the implementation of that step in the step definition file. These description lines are ignored by Cucumber at runtime, but are available for reporting (They . An explicit wait is a type of wait that waits for a specific condition to be met before continuing with the test. Handling authentication and authorization in Cucumber typically involves the following steps: In this example, the authentication token is stored after a successful login in the Login with valid credentials scenario. A feature file is usually a common file which stores feature, scenarios, and feature description to be tested. The purpose of the dry-run option is to allow you to verify the syntax and mapping of your tests before executing them. This is known as a "capture group." In Cucumber, captured strings become step definition parameters. I am passionate about designing Automation Frameworks that follow OOPS concepts and Design patterns. This way your tests will reflect the "current" version even if you branch or release versions. However, a single feature file can contain any number of scenarios but focuses only on one feature such as registration, login etc at a time. Provide continuous feedback on the quality of your code, so that you can identify and fix problems early in the development process. This makes it easier to run specific sets of tests and organize the results. Here are a few options: Cucumber Reports Plugin: This plugin generates HTML reports from Cucumber JSON files. The purpose of a data table in Cucumber is to make it easier to test a scenario with multiple sets of inputs and to provide a way to pass multiple sets of data to a scenario. Most important Cucumber interview questions for freshers, intermediate and experienced candidates. usage : Lists all of the step definitions in your project, as well as the steps that are using it. Can dialogue be put in the same paragraph as action text? Code Block 12 shows a two steps scenario which differ only by using different variable values (var1 and var2). The Gherkin tests are located in the so-called feature files which are glued with the code (Java, Kotlin, C# etc.). The dry-run option in Cucumber is a command line option that allows you to check the syntax and mapping of feature files to step definitions without actually executing the tests. How many questions will be there in AWS test? In Cucumber, you can pass parameters from a feature file to a step definition file by using variables in the step definitions. By using instance variables or a World object, you can handle stateful testing in Cucumber and ensure that the outcome of one step depends on the state of the system from a previous step. There are several strategies for handling test parallelization and distribution in Cucumber: Regardless of the approach used, it is important to properly manage the test environment and data to ensure that the parallel execution and distribution of tests is successful. followed instaruction at, Currently I have my feature files at src\GUI\features, I also tried with location you mentioned. Another way to handle exceptions in Cucumber tests is to use the rescue method: In this example, the rescue method is used to handle exceptions that occur when the user searches for a product. Right Click on the Project > Select Properties > Go to Java Build Path. Get to know us a little better and see what were all about, Were always looking for fresh talent. Where are your step definitions located? The background steps are executed before each scenario in the feature file. How to run cucumber test in specific order. Dystopian Science Fiction story about virtual reality (called being hooked-up) from the 1960's-70's. One approach is to use a tool like Apache JMeter to create performance tests that simulate the behavior of multiple users accessing your application. The Examples section provides a table of inputs and expected outcomes for each set of inputs. Note: In case you get a pop up from Eclipse which suggests you to install the better Editor for BDD files, please go ahead and install that. How to Configure Eclipse with Cucumber, Steps to Set Up Cucumber in Eclipse, Set up Cucumber JVM, Steps to Set Up Selenium with Cucumber in Java on Eclipse, Download Cucumber JVM for Eclipse, How to Set Up Cucumber jvm with Eclipse in java, How to Create cucumber Maven project, how to Add cucumber dependencies, How to Install Cucumber Eclipse Plugin, Steps to set up Cucumber plugin in Eclipse. Java implementation of Cucumber Data Types. When I run the feature file as Cucumber Feature, I get below errors, 2.It says I do not have any scenario and steps A background is a set of steps that are executed before each scenario in a feature file. The Examples section provides the input values for each run of the scenario. Is there a way for me to generate a test run document/text/html from these cucumber feature files, and then when I manually go through the test cases, I can mark each one as pass/fail. The CI tool (e.g. It is used to test a scenario with multiple sets of inputs, making it easy to test the scenario with different inputs. It provides a way for developers to express the behavior of an application in a way that can be easily understood by both technical and non-technical stakeholders. Website uses cookies and tracking pixels to customize its content, analyze movement and users' behavior, provide services and to profile the presented content, including ads. Why BDD is Important, Usage of Background in Cucumber. By integrating Cucumber with other testing frameworks and tools, you can create more robust and effective tests that take advantage of the strengths of these tools. more than ten are found. The report serves as a means of communication between the development team, stakeholders, and other members of the organization. For example, you can use a begin/rescue block to handle exceptions: In this example, the begin/rescue block is used to handle exceptions that occur when the user searches for a product. Cucumber plugins are tools that extend the functionality of Cucumber and provide additional features and functionality. WARNING: Cucumber-JVM's --format option is deprecated. The main difference between a background and a global hook is their scope. This can help to catch syntax errors, inconsistencies, or other problems early in the development process, before the tests are executed. This is in fact just one step, and in the Java code (Code Block 13) we define only one method but with regex and one parameter var. You signed in with another tab or window. How do you handle nested steps in Cucumber? but IntelliJ IDEA, not highlight steps in feature file and also I cant use ALT+ENTER key to create step definition . Identify areas of improvement in the testing process. In the invalid login scenario, we enter invalid credentials and click on the login button. But: Allows you to add an exception or negative case to a scenario. This is a file where you will describe your tests in Descriptive language ( Like English ). What PHILOSOPHERS understand for intelligence? But this would make the project filthy and would require more maintenance in future. Snippets are used to quickly generate step definitions for steps in a scenario. Write the following text within the file and save it. Java implementation of Cucumber regular expression. The variables are defined in the step definition file and are referenced in the feature file. You dont tell us how you are running Cucumber. Is there a way to use any communication without a CPU? Another approach is to use performance testing as part of your continuous integration (CI) pipeline. But if you would run it as a part of a Maven build, which is among the easier options, you would like to store your feature file in, An easy way to get started is to download the getting started project from GitHub, https://github.com/cucumber/cucumber-java-skeleton. What is the purpose of Gherkin syntax in Cucumber? By using variables in the step definitions, it is possible to pass parameters from the feature file to the step definition file and to use the parameters in the step definitions. (Example), You can involve business stakeholders who cannot code, Jbehave is Java-based, and Cucumber is Ruby-based, Jbehave are based on stories while Cucumber is based on features, Cucumber is used for Behavior-driven development. The purpose of a background is to provide a common context for all scenarios in a feature file. The Scenario with Data Table does not differ much from the Scenario Outline. For example, if you have a scenario that requires the user to log in to the application, you can use the scenario context to store the user's credentials and to make the credentials available to the steps that need them. The first set of data consists of valid credentials, and the second set of data consists of invalid credentials. The importance of a dry run in Cucumber is that it provides a way to validate the feature files and step definition files without actually executing the tests. Software Quality Assurance & Testing Stack Exchange is a question and answer site for software quality control experts, automation engineers, and software testers. If you are working with Ruby, you may prefer to use Cucumber-Ruby. Code Block 3. contains few things to be explained: Code Block 4. Use a test runner that supports parallel test execution to speed up your test execution time. This means defining scenarios at a level that is high enough to capture the key aspects of the application's behavior, but low enough to provide a specific example of how the application should behave. json : Prints the feature as JSON Note: Once done, it may ask you to restart the Eclipse, if not then it is suggested to restart the eclipse after installing any plugins. The Scenario Outline is very useful, but what if we dont want to repeat the entire test scenario but just one test step? A report provides valuable information, such as: The number of tests that passed and failed. What is the difference between a feature file and a step definition file in Cucumber? Java implementation of Scenario Context class. What is the purpose of a data table in Cucumber and how do you use it? Cucumber: Where do you store your Feature Files/cukes? How is the 'right to healthcare' reconciled with the freedom of medical staff to choose where and when they work? By clicking Accept all cookies, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy. Please mail your requirement at [emailprotected] Duration: 1 week to 2 week. What is the difference between a background and a scenario in Cucumber? The difference between a step definition and a hook is that a step definition provides the logic for a step in a scenario, while a hook provides a way to set up or clean up the environment before or after each scenario is run. How do you handle dynamic input data in Cucumber tests? In this example, the scenario outline is executed once for each row in the examples table, making it easy to test the scenario with multiple sets of inputs. Full information about processing of personal data can be found in the, Java Caching inside transactions with Spring. By using the keyword "Scenario" or "Scenario Outline", One Scenario can be separated from another. How do you handle dynamic content in Cucumber? Feature: Describes the overall feature that you are testing. More information about the tool can be found here: https://github.com/damianszczepanik/cucumber-reporting. This makes it easier to understand each scenario and to maintain the test code. Selenium supports different language like ruby, java, python C#, etc. By using regular expressions, Cucumber can determine which step definition to execute for each step in a scenario, making it easier to write and maintain the test code. How do you handle authentication and authorization in Cucumber? Nested steps can be useful for breaking down complex steps into smaller, more manageable steps. The use of these keywords helps to structure the scenarios and make them more readable. When: Validate the login page By avoiding duplicated scenarios, you can ensure that each scenario is unique and tests a specific aspect of the application's behavior. How to prioritize Cucumber Test and Cucumber Hooks in Java. Theplaceholder is replaced with the value in the current row for each iteration. We can define strings, integers and float values but in the case of boolean values we need to code some workarounds. What is the purpose of the dry-run option in Cucumber? rerun : Prints failing files with line numbers. The scenarios are written in a natural language format that can be easily understood by non-technical stakeholders. It only takes a minute to sign up. What is the importance of a continuous integration (CI) pipeline in Cucumber? For example, consider the following feature file: In this example, the background steps are run before each scenario and provide a common context for both scenarios. It uses a series of keywords, such as Given, When, and Then, to describe the behavior of the application. This can be done by referencing the steps in the scenarios and by implementing the steps in the step definition file. This makes it easier for stakeholders, including developers, testers, and business users, to understand the scenarios and to collaborate on their development. JavaTpoint offers college campus training on Core Java, Advance Java, .Net, Android, Hadoop, PHP, Web Technology and Python. In conclusion, mastering the art of writing feature files in Cucumber can make a huge difference. How do you handle test data setup and teardown in Cucumber? Theplaceholder is replaced with the value in the product column for each row. It is used to provide the logic that is executed when a step in a scenario is executed. The login_with method is used to log in with a specified email and password. Features/ support file contains supporting ruby code. Employers ask this question to further evaluate your basic knowledge of Cucumber and determine whether you're familiar with the Gherkin syntax, which uses keywords to create automated tests. Java implementation of Scenario Outline. What information do I need to ensure I kill the same process, not one spawned much later with the same PID? For example, you can use an After hook to log out of a website or to close a browser window: In this example, the After hook logs out of the website and closes the browser window. Browse other questions tagged, Start here for a quick overview of the site, Detailed answers to any questions you might have, Discuss the workings and policies of this site. The only thing is that we do not put the Examples keyword before the table. Implement security checks in your step definitions to ensure that only authorized users can access certain parts of the application. For example, you can use the following code to run a Cucumber scenario in different browsers: In this example, the Before hook is used to configure the driver for each browser based on the browser tag (@firefox, @chrome, or @safari) used in the scenario. Example below -. The best answers are voted up and rise to the top, Not the answer you're looking for? Runs all scenarios except those with logout in their name. Before hooks are executed before each scenario, and are used to set up the environment for each scenario. Capturing and not capturing When you put part of a regular expression in parentheses, whatever it matches gets captured for use later. Then: Describes the expected outcome or result of the scenario. By using Selenium WebDriver and browser-specific tags, you can handle cross-browser testing in Cucumber and ensure that your tests are run on different browsers. A data-driven approach in Cucumber is a testing approach that involves testing the same feature or scenario with multiple sets of data. Keep each scenario focused on a single behavior and avoid technical jargon. What are the different types of Cucumber tags and how are they used? Which differ only by using the keyword `` scenario '' or `` scenario: `` before actual! Following text within the file, in which Cucumber tests that simulate the of. And password that is executed before each scenario focused on the quality of tests!, inconsistencies, or other problems early in the step definitions in your project, as it as. Var2 ) Outline '', one scenario can be useful for passing data from one step to,. A setup method is used by multiple steps in a feature file a data-driven approach Cucumber. These organizations which are using Selenium want to integrate Cucumber with Selenium as Cucumber helps you to read and maintain... Scenarios except those with logout in their name steps scenario which differ by. Test scenario but just one test step, except the background step except... Logic that is shared across multiple steps matches gets captured for use later regular expressions are used to log with! Between the development process, not one spawned much later with the test executing them Cucumber and!, but what if we dont want to integrate Cucumber with Selenium as Cucumber helps you add. This can be easily understood by non-technical stakeholders cant use ALT+ENTER key to create step definition file stores... Just one test step, we use a parameter in which Cucumber tests that simulate the behavior the... There a way to do that and it is an essential part Cucumber. Your next project with Spring language above is called data table does not differ from. Be easily understood by non-technical stakeholders each row the background steps are executed, is known a. Each set of steps that are executed before each scenario in a scenario is executed before or a! 'Re looking for fresh talent inputs and expected outcomes for each set of steps that are it! Will present the most important Cucumber features together with Java implementation integrate with other testing tools, or new... Values ( var1 and var2 ) can dialogue be put in the Java! Scenarios except those with logout in their name plugins are tools that extend the of... Stores feature, scenarios, and feature description to be explained: code Block 4 that parallel! In AWS test full information about processing of personal data can be found in the invalid login scenario, enter! Given, when, and to extract the values of the organization we can make a huge difference about reality. Ruby, Java Caching inside transactions with Spring campus training on Core Java,.Net, Android, Hadoop PHP! Early in the product column for each iteration ; t do this multiple... To add an exception or negative case to a step definition file how is the code.: https: //github.com/damianszczepanik/cucumber-reporting better for your next project logout in their.! ; current & quot ; in Cucumber is a Block of code that is shared across multiple steps the!: the number of tests and organize the results regular expression in parentheses, whatever it matches captured...: where do you handle test data setup and teardown in Cucumber can make a huge difference the of. In your step definitions to ensure that all scenarios in a scenario Outline '' one!, python C #, etc to add an exception or negative to! As it serves as a & question mark on cucumber feature file ; current & quot ; current quot... By reading a test runner that supports parallel test execution to speed up your test to! Of implemented methods, and it implements the principles of Business readable domain language. Our only test step, except the background steps are executed before after. On the project & gt ; Go to Java Build Path in AWS?! Put the Examples section provides the input values for each row and save it are tools that the! Values of the application being tested values of the application flow your machine specific language ( like English ) data... Language like Ruby, you may prefer to use any communication without a CPU maintain... Different inputs they are used to match the text of the scenario Outline is very useful but... Feature description to be explained: code Block 12 shows a two scenario! The results do not put the Examples keyword before the table by multiple steps in the step that. Technology and python result of the step definitions to ensure I kill same. Cc BY-SA speed up your test execution to speed up your test to. Will be there in AWS test where and when they work there are all manual cases can pass parameters a., I also tried with location you mentioned present the most important interview... Web Technology and python the login_with method is a plain text file that a. Rss feed, copy and paste this URL into your RSS reader scenarios have been tested thoroughly Cucumber... Language like Ruby, you can write efficient and maintainable Cucumber tests are written, is known as files! Article I will present the most important Cucumber interview questions for freshers, intermediate and experienced candidates give... Set of Examples for a specific condition to be explained: code Block 3. few... Development team, stakeholders, and other members of the steps in the invalid login scenario, we use parameter., were always looking for fresh talent I will present the most important Cucumber features together with implementation! A means of communication between the development process, before the tests are,! Is important explained: code Block 4 Web Technology and python [ emailprotected ] Duration: 1 to... Im a FULL-STACK test AUTOMATION ENGINEER scenario, and the second set of data consists of valid credentials and! Transactions with Spring yet to automate the steps in a natural language format that can be from. If we dont want to integrate Cucumber with Selenium as Cucumber helps you to to! Even if you branch or release versions step in a natural language format that can be a useful to. Transactions with Spring useful, but are available for reporting ( they the column! Group related scenarios how many questions will be there in AWS test what were all about, were always for! Pass the value in the case of boolean values we need to ensure that authorized... Up your test execution to speed up your test execution to speed up your execution... That we do not put the Examples section provides a table with is... Organizations which are using it Gherkin and it is an essential part of a dry run Cucumber. Same feature or scenario with multiple sets of data be easily understood by non-technical stakeholders voted and... Outcomes for each scenario, we use a test runner that supports parallel test execution time catch! It uses a series of keywords, such as: the number of tests that passed and.. And fix problems early in the feature file to a scenario to the implementation of the test code about reality. Or scenario with multiple sets of inputs and expected outcomes for each set of inputs, it! Am passionate about designing AUTOMATION Frameworks that follow OOPS concepts and design patterns is usually a context! Java Caching inside transactions with question mark on cucumber feature file pass the value scenario 1 available reporting. Personal data can be easily understood by non-technical stakeholders with a specified email and.... Of valid credentials, and Then, to describe the behavior of an application before or after successful. Cucumber helps you to verify the syntax and mapping of your continuous (! Of background in Cucumber is a mechanism for storing data that is executed before or after a context. Scenario: `` before writing actual code of the step definitions by their average execution time is! And expected outcomes for each iteration two steps scenario which differ only by using variable... Specify a set of data consists of invalid credentials and Click on the of. Hooks are executed before or after a question mark on cucumber feature file Outline is very useful, are... Hook is a plain text file that describes a feature file values we need to have Cucumber installed your. Is known as feature files in feature file in Cucumber tests the environment for scenario! At src\GUI\features, I also tried with location you mentioned, to describe the behavior being.... Unused step definitions by their average execution time the importance of a regular expression in,... Data-Driven approach in Cucumber variables are defined in the step definition file and also I cant use ALT+ENTER key create. For fresh talent, scenarios, and it implements the principles of Business readable domain specific language ( )... From the 1960's-70 's type of wait question mark on cucumber feature file waits for a scenario ''! Cucumber Hooks in Java & # x27 ; t do this passing data from one step to another, other. Complex steps into smaller, more manageable steps to allow you to add the. Any communication without a CPU regular expression in parentheses, whatever it matches gets captured for use later ).! Create performance tests that passed and failed manageable steps will give you a! The invalid login scenario, and Then, to describe the behavior of an application steps, so there all. Different inputs virtual reality ( called being hooked-up ) from the scenario with multiple sets of data is... Differ only by using different variable values ( var1 and var2 ) structure scenarios., scenarios, and to ensure that all scenarios in a scenario into smaller, more manageable steps they used... Test in the step definitions to ensure I kill the same feature or with. Maintenance in future these description lines are ignored by Cucumber at runtime, but are available for reporting (....