Rayrun
← Back to QA Wiki

Definition of Gherkin

Gherkin is a domain-specific language used primarily for behavior-driven development (BDD). It provides a structured and human-readable format to describe and document the desired behavior of software features. Gherkin's syntax uses plain language combined with specific keywords—such as "Given," "When," "Then," "And," and "But"—to define preconditions, actions, and expected outcomes. These Gherkin scenarios can then be utilized as both specifications for the system's behavior and the foundation for automated tests, making it a bridge between non-technical stakeholders and the technical team.
Thank you!
Was this helpful?

Questions about Gherkin?

Basics and Importance

  • What is Gherkin and why is it important in software testing?

    Gherkin is a domain-specific language designed to create clear and executable specifications for software features. Its importance in software testing lies in its ability to bridge the gap between the technical aspects of test automation and the business-oriented understanding of how features should behave.

    By using a natural language format, Gherkin allows the creation of test cases that are easily understood by all stakeholders, including developers, testers, and business analysts. This shared understanding ensures that the software is built with the right features and that tests are aligned with user expectations.

    In the context of test automation, Gherkin serves as a foundation for writing automated acceptance tests. Tools like Cucumber read Gherkin documents and execute the described behavior against the application. This helps in validating that the software behaves as intended, and it facilitates regression testing by ensuring that new changes do not break existing functionality.

    Moreover, Gherkin's structured format enables the reuse of steps across different scenarios, making test automation more efficient and maintainable. It also supports data-driven testing through Scenario Outlines and Examples, allowing multiple sets of inputs to be tested without duplicating the test scripts.

    In summary, Gherkin's importance in software testing is multifaceted: it enhances communication, supports behavior-driven development, and provides a robust framework for writing and maintaining automated tests, all of which contribute to the delivery of high-quality software.

  • What are the main components of a Gherkin document?

    The main components of a Gherkin document are:

    • Feature: Represents a single functionality or aspect of the system being tested. It provides a high-level description and acts as a container for related scenarios.
    Feature: Account Holder withdraws cash
    • Background: Specifies steps that are common to all scenarios in the feature file. It's used to set up the initial context.
    Background:
      Given the account balance is $100
    • Scenario: Defines a single test case or example that verifies the behavior of the system. It consists of a sequence of steps.
    Scenario: Account Holder withdraws cash within balance limit
    • Scenario Outline: Allows for running the same scenario multiple times with different data sets, using placeholders and an Examples table.
    Scenario Outline: Account Holder withdraws varying amounts
      When the Account Holder requests $<WithdrawalAmount>
      Then the account balance should be $<RemainingBalance>
    
      Examples:
      | WithdrawalAmount | RemainingBalance |
      | 50               | 50               |
      | 20               | 80               |
    • Steps: Define the actions (Given, When, Then) and assertions to be performed. They are the basic building blocks of scenarios and scenario outlines.
    Given the account balance is $100
    When the Account Holder requests $20
    Then the ATM should dispense $20
    • Tags: Used to organize features and scenarios, making it easier to filter and run selective tests.
    @smoke
    Scenario: Account Holder withdraws cash within balance limit
    • Comments: Lines starting with # are ignored and can be used to add additional information or annotations.
    # This is a comment explaining the following step
    Given the account balance is $100

    These components work together to create an executable specification that can be understood by stakeholders and automated by tools like Cucumber.

  • How does Gherkin improve communication between technical and non-technical stakeholders?

    Gherkin serves as a communication bridge between technical and non-technical stakeholders by providing a common language that is easy to understand for all parties involved. Its plain English (or other spoken languages) approach to defining software behavior allows business analysts, product owners, developers, and testers to collaborate effectively.

    The use of natural language constructs in Gherkin means that requirements and tests can be written in a way that is intuitive to non-technical stakeholders. This allows them to actively participate in the creation and review of acceptance criteria without needing to understand the underlying technical implementation.

    By expressing requirements as executable specifications, Gherkin ensures that there is a single source of truth for what the software should do. This reduces the risk of misinterpretation that can occur when requirements are communicated through traditional means, such as lengthy documents or verbal discussions.

    Moreover, Gherkin's Scenario and Feature descriptions provide a high-level overview of the software's functionality, which is valuable for stakeholders who need to understand the broader context without getting bogged down in technical details.

    The collaborative nature of Gherkin and its role in BDD encourages ongoing dialogue between business and technical team members. This ongoing conversation helps to clarify expectations, uncover hidden requirements, and ensure that the development work is closely aligned with business objectives.

    In summary, Gherkin enhances communication by making complex software behaviors understandable and accessible to everyone involved in the project, fostering better collaboration and reducing the likelihood of misunderstandings.

  • What is the role of Gherkin in Behavior Driven Development (BDD)?

    Gherkin plays a pivotal role in Behavior Driven Development (BDD) by serving as the bridge between business requirements and technical implementation. It allows the expression of software behavior without detailing how that functionality is implemented, making it an essential tool for collaboration and shared understanding among stakeholders.

    In BDD, Gherkin's primary role is to enable the creation of executable specifications. These specifications are written in a way that they can be directly converted into automated tests. This is achieved through the use of a domain-specific language that describes the software's behavior in logical and understandable terms.

    Gherkin's Given-When-Then format corresponds to the Arrange-Act-Assert pattern commonly used in unit testing, which ensures that tests are structured and easy to follow. This format helps in defining clear and concise acceptance criteria for features, ensuring that all stakeholders have a common understanding of what is to be developed.

    Furthermore, Gherkin facilitates living documentation. As scenarios are updated to reflect changes in requirements, the documentation remains current and actionable. This living document serves as a single source of truth for the expected behavior of the system, reducing ambiguity and preventing drift between the specification and the implementation.

    By integrating Gherkin into the BDD process, teams can ensure that automated tests are aligned with business objectives, fostering a development process that is both efficient and effective in delivering high-quality software that meets user needs.

Syntax and Structure

  • What is the basic syntax of Gherkin?

    The basic syntax of Gherkin is designed to be human-readable and allows for the description of software behaviors without detailing how that functionality is implemented. A Gherkin document begins with the keyword Feature followed by a brief description of the overall functionality being tested. Each feature contains a list of Scenarios, which are examples of how the feature should work under different conditions.

    Scenarios start with the keyword Scenario followed by a short description. Each scenario is made up of steps that describe an action or a check. The steps use the keywords Given, When, Then, And, and But to describe the context, the action, and the expected outcome respectively.

    Here's an example of a simple Gherkin syntax:

    Feature: User login
    
      Scenario: Successful login with valid credentials
        Given the user is on the login page
        When the user enters valid credentials
        Then the user is redirected to the homepage
    
      Scenario: Unsuccessful login with invalid credentials
        Given the user is on the login page
        When the user enters invalid credentials
        Then an error message is displayed

    Each step in the scenario should be a simple statement that can be matched to a step definition in the test automation framework, which contains the code to execute the action or verification described by the step. Gherkin's syntax is designed to be easy to write and understand, bridging the gap between the technical and non-technical participants in the software development process.

  • What are the different keywords used in Gherkin and what do they mean?

    Gherkin keywords are the core building blocks of Gherkin language, each serving a specific purpose in defining and structuring behavior tests.

    • Feature: Describes a software feature and acts as a container for the scenarios.
    • Rule (optional): Groups together several scenarios within a Feature that share the same business rule.
    • Background: Provides context for the scenarios in the feature file; it contains steps that are common to all scenarios and is run before each scenario.
    • Scenario: Represents a single behavior or use case to be tested.
    • Scenario Outline: Allows for running the same Scenario multiple times with different data sets, defined by Examples.
    • Examples: Accompanies a Scenario Outline, containing the data for each iteration in a table format.
    • Given: Describes the initial context of the system before the behavior is tested.
    • When: Specifies the event or action that triggers the behavior.
    • Then: Outlines the expected outcome or state after the When step has occurred.
    • And, But: Used to add additional steps in a Given-When-Then sequence without repeating the keyword.
    Feature: User login
    
      Background:
        Given the user is on the login page
    
      Scenario: Successful login
        When the user enters valid credentials
        Then the user is redirected to the dashboard
    
      Scenario Outline: Data-driven login attempt
        When the user enters "<username>" and "<password>"
        Then the user "<result>"
    
        Examples:
          | username | password | result      |
          | user1    | pass1    | is logged in|
          | user2    | wrong    | is blocked  |

    Each keyword initiates a step that is matched to a step definition in the test automation framework, which contains the actual executable code.

  • How is a Gherkin file structured?

    A Gherkin file is typically structured as a plain text document with a .feature extension, containing a single feature specification. The file starts with a Feature keyword, followed by a brief description of the feature being tested. This is a high-level definition of the functionality or business rule.

    Below the feature description, one or more Scenarios or Scenario Outlines are defined. These are the test cases that specify the expected behavior of the system. Each scenario starts with the Scenario keyword, followed by a title that summarizes the test case.

    Scenarios consist of steps that describe the actions and outcomes. Steps begin with Given, When, Then, And, or But keywords, which correspond to the setup, action, and assertion phases of the test. Given steps are used to describe the initial context, When steps specify the event or action, and Then steps assert the expected outcome.

    Background can be used to define steps that are common to all scenarios in the file, eliminating repetition.

    Scenario Outlines are used for parameterized tests, with the Examples section providing the data sets.

    Tags can be applied above the Feature, Background, or individual Scenarios to categorize or filter tests.

    Feature: User login
    
      Background:
        Given the user is on the login page
    
      @smoke
      Scenario: Successful login
        Given the user has valid credentials
        When the user attempts to login
        Then the user is redirected to the dashboard
    
      @regression
      Scenario Outline: Login with invalid credentials
        Given the user has entered <username> and <password>
        When the user attempts to login
        Then an error message <message> is displayed
    
        Examples:
          | username | password | message           |
          | admin    | wrong    | Invalid password  |
          | unknown  | pass123  | User does not exist |

    Parameters in Scenario Outlines are denoted by < and > and are replaced with values from the Examples table during execution.

  • What are the rules for writing steps in Gherkin?

    When writing steps in Gherkin, adhere to the following rules to ensure clarity and functionality:

    • Use imperative language: Write steps as direct commands, e.g., Given the user is logged in.
    • Be concise: Keep steps short and to the point to enhance readability.
    • Avoid technical jargon: Use language understandable by all stakeholders, not just developers.
    • Start with a verb: Each step should begin with Given, When, Then, And, or But.
    • Focus on behavior: Describe the intended behavior, not the implementation details.
    • Parametrize: Use variables for data that changes, e.g., When the user enters "<username>".
    • Use Scenario Outlines for multiple examples: When you have several examples for a scenario, use a Scenario Outline with an Examples table.
    • Maintain a user perspective: Write from the viewpoint of the user interacting with the system.
    • Ensure independence: Each scenario should be independent and executable on its own.
    • Avoid UI specifics: Do not reference UI elements like buttons or fields; focus on the action or outcome.
    • Use Background wisely: Common steps should be placed in the Background section but use it sparingly to avoid hiding important information.

    Example of a well-written Gherkin step:

    Given the user has navigated to the login page
    When they enter their credentials
    And they click the login button
    Then they should be redirected to the dashboard

    Remember, the goal is to create scenarios that are understandable, maintainable, and executable as automated tests.

  • What is the purpose of Background in Gherkin?

    The Background in Gherkin serves as a reusable context for multiple Scenarios within the same Feature. It allows you to define steps that are common to all scenarios, avoiding repetition and keeping the scenarios concise. Steps defined in the Background are executed before each scenario, setting the stage for the specific tests to follow.

    Here's an example of how a Background might be used:

    Feature: User login
    
      Background:
        Given the user is on the login page
        And the database has the default set of users
    
      Scenario: Successful login with valid credentials
        When the user logs in with valid credentials
        Then the user is redirected to the dashboard
    
      Scenario: Unsuccessful login with invalid credentials
        When the user attempts to log in with invalid credentials
        Then an error message is displayed

    In this example, the steps "Given the user is on the login page" and "And the database has the default set of users" are common prerequisites for both scenarios. By using a Background, you ensure these steps are executed for each scenario, maintaining DRY (Don't Repeat Yourself) principles and improving the readability of your Gherkin documents.

Scenarios and Features

  • What is a Feature in Gherkin and how is it defined?

    In Gherkin, a Feature represents a distinct functionality or aspect of the system being tested. It provides a high-level description of a software feature, and it acts as an umbrella for a collection of related scenarios.

    A Feature is defined at the beginning of a Gherkin file with the keyword Feature:, followed by a brief description of the functionality being covered. This description can span multiple lines if necessary. The Feature section may also include a background narrative that provides context, which is optional but can be helpful for understanding the feature's purpose.

    Here's an example of how a Feature might be defined in a Gherkin file:

    Feature: User authentication
    
      As a user of the application
      I want to be able to log in with my credentials
      So that I can access my personal account information

    This section does not contain any executable steps but sets the stage for the scenarios that follow, which will contain the actual Given-When-Then steps to test the feature. The Feature keyword is followed by a colon and a space, and then the title of the feature. The description below the title is optional but recommended for clarity and stakeholder communication.

  • What is a Scenario in Gherkin and how is it defined?

    In Gherkin, a Scenario represents a single path or workflow through a feature. It is defined using the keyword Scenario followed by a colon and a title that succinctly describes the behavior being tested. A scenario consists of a series of steps that outline the given situation, the action to be taken, and the expected outcome. These steps use the keywords Given, When, and Then, respectively, and can also include And and But for additional context or actions.

    Here's an example of a scenario in a Gherkin document:

    Scenario: User logs in with valid credentials
      Given the login page is displayed
      When the user enters valid credentials
      And the user clicks on the login button
      Then the dashboard page should be displayed

    Each step in a scenario is mapped to a step definition in the test automation framework, which contains the code to execute the action or verify the outcome described by the step. Scenarios should be independent, meaning they can run in any order and should not rely on the state produced by another scenario. This ensures that tests are reliable and repeatable. Scenarios are the fundamental building blocks in Gherkin for describing the behavior of a system and serve as the basis for automated tests in a BDD approach.

  • What is the difference between a Scenario and a Scenario Outline in Gherkin?

    In Gherkin, a Scenario represents a single path or example that describes a specific situation or use case of the software. It is defined with the Scenario keyword followed by a descriptive title, and contains a sequence of steps: Given, When, Then (and optionally And, But).

    Scenario: User logs in with valid credentials
      Given the login page is displayed
      When the user enters valid credentials
      Then the user is redirected to the dashboard

    A Scenario Outline, on the other hand, is used when you want to run the same scenario multiple times with different data sets. It is defined with the Scenario Outline keyword and includes a Examples section that contains a table of variables and values. Each row in the Examples table represents a set of data that will be used to run the scenario, effectively creating multiple scenarios.

    Scenario Outline: User logs in with multiple sets of credentials
      Given the login page is displayed
      When the user enters <username> and <password>
      Then the user is <outcome>
    
    Examples:
      | username | password | outcome          |
      | user1    | pass1    | redirected to the dashboard |
      | user2    | pass2    | shown an error message      |

    The key difference is that Scenario is for a single example, while Scenario Outline is for multiple examples with a template that gets filled in with data from the Examples table. This allows for more efficient and comprehensive testing of similar scenarios with varying data inputs.

  • How can parameters be passed in Gherkin scenarios?

    Parameters in Gherkin scenarios are passed using Scenario Outlines and Examples tables. A Scenario Outline is a template that is filled with values from the Examples table. Each row in the Examples table represents a set of parameters that will be used to run the Scenario Outline.

    Here's the basic syntax for passing parameters:

    Scenario Outline: Descriptive name of the scenario
      Given some initial context <param1>
      When an action is carried out <param2>
      Then a particular set of observable consequences should occur <param3>
    
    Examples:
      | param1 | param2 | param3 |
      | value1 | value2 | value3 |
      | value4 | value5 | value6 |

    In the above structure, <param1>, <param2>, and <param3> are placeholders within the steps of the Scenario Outline. These placeholders are replaced with corresponding values from the Examples table when the scenario is executed. Each row in the Examples table will result in a separate execution of the Scenario Outline with the specified parameters.

    This approach allows for data-driven testing, where multiple sets of data can be tested without writing multiple scenarios. It keeps the scenarios readable and maintainable, while also providing the flexibility to cover a wide range of input combinations.

  • What is the purpose of Tags in Gherkin?

    Tags in Gherkin serve as a powerful organizational tool, allowing for the categorization and filtering of scenarios. By prefixing a scenario or feature with an @ symbol followed by a tag name, you can group related scenarios together regardless of their location within the feature files. This is particularly useful when you want to run a specific subset of tests that share a common attribute, such as a tag denoting a particular sprint, a type of test (e.g., @smoke, @regression), or a specific feature area.

    For example:

    @billing
    Feature: Refund transaction
    
      @smoke
      Scenario: Refund a transaction successfully
        Given a transaction exists
        When I issue a refund
        Then the refund should be processed
    
      @regression
      Scenario: Refund fails for canceled transactions
        Given a canceled transaction exists
        When I attempt to issue a refund
        Then the refund should be rejected

    In the above example, the @billing tag could be used to run all billing-related tests, while @smoke and @regression could be used to run specific types of tests across the entire test suite. Tags also facilitate the execution of tests across different environments or configurations by allowing you to include or exclude scenarios based on the tags they carry.

    Automation tools like Cucumber can utilize these tags to control test execution, making it easier to integrate into CI/CD pipelines and to manage tests as the codebase grows. Tags enhance the flexibility and maintainability of test suites in test automation.

Advanced Concepts

  • How can Gherkin be used with automation tools like Cucumber?

    Gherkin can be integrated with automation tools like Cucumber to drive the automation of acceptance tests. After defining the behavior of the application in Gherkin, Cucumber uses these specifications to guide the automation process.

    Here's how the integration typically works:

    1. Feature Files: Write Gherkin scenarios in .feature files.
    2. Step Definitions: Implement step definitions in a programming language supported by Cucumber (e.g., Java, Ruby, JavaScript). Each step in the Gherkin scenario is mapped to a piece of code that will execute the action.
    @When("^the user logs in with username and password$")
    public void the_user_logs_in_with_username_and_password() {
        // Code to automate login action
    }
    1. Run Tests: Use Cucumber to execute the feature files. Cucumber reads the Gherkin steps and matches them with the corresponding step definitions to run the tests.

    2. Assertions: Within the step definitions, include assertions to verify the outcomes against expected results.

    @Then("^the user should be directed to the dashboard$")
    public void the_user_should_be_directed_to_the_dashboard() {
        // Assertion to verify the user is on the dashboard
    }
    1. Hooks: Utilize hooks (@Before, @After) for setup and teardown processes, such as starting a web driver before a scenario and closing it afterward.

    2. Tags: Execute selective tests using tags defined in the Gherkin scenarios for efficient test management.

    3. Reports: After test execution, Cucumber generates reports that provide insights into the test results, which are useful for both technical and non-technical stakeholders.

    By following this approach, test automation engineers can create a robust, readable, and maintainable test suite that aligns with the BDD approach and facilitates collaboration across teams.

  • What are the best practices for writing Gherkin scripts?

    Best practices for writing Gherkin scripts include:

    • Be Descriptive: Use clear, descriptive titles for features and scenarios. Avoid technical jargon.
    • Use Business Language: Write scenarios in business language, focusing on the behavior rather than the implementation.
    • Keep it Simple: Each scenario should be simple and test only one functionality.
    • Avoid Conjunctions: Do not chain steps with conjunctions like "And" or "But". Each step should be independent.
    • Use Background Wisely: Use the Background keyword for steps that are common to all scenarios in the feature file.
    • Parameterize Scenarios: Use Scenario Outlines with Examples to run the same scenario with different data sets.
    • Maintain Readability: Write steps in an active voice and ensure they flow like a conversation.
    • Consistent Style: Stick to a consistent style and terminology throughout your Gherkin scripts.
    • Use Tags: Apply tags to group related scenarios or to associate them with particular test suites or features.
    • Limit Assertions: Each scenario should ideally have a single assertion to keep the focus clear.
    • Refactor Regularly: Regularly review and refactor scenarios to remove duplication and improve clarity.
    • Version Control: Store Gherkin files in version control to track changes and collaborate with team members.
    Feature: User login
    
      Background:
        Given the user is on the login page
    
      @smoke
      Scenario: Successful login with valid credentials
        When the user enters valid credentials
        Then the user is redirected to the dashboard
    
      @regression
      Scenario Outline: Login with invalid credentials
        When the user enters "<username>" and "<password>"
        Then the user should see an error message
    
        Examples:
          | username | password |
          | admin    | wrongpw  |
          | user1    |          |

    Remember to review and align your Gherkin scripts with the team to ensure consistency and understanding across all stakeholders.

  • How can complex test cases be handled in Gherkin?

    Handling complex test cases in Gherkin requires a strategic approach to maintain readability and ensure that scenarios remain understandable. Here are some tips:

    • Decompose complex scenarios into smaller, more manageable ones if possible. This can help to keep each scenario focused on a single behavior or outcome.

    • Use Scenario Outlines to handle scenarios that need to be run with different sets of data. This keeps the scenario DRY (Don't Repeat Yourself) and avoids duplicating steps.

    Scenario Outline: User logs in with different roles
      Given the login page is displayed
      When "<User>" logs in with "<Password>"
      Then the user should be redirected to the "<Role>" dashboard
    
      Examples:
        | User    | Password | Role    |
        | admin   | admin123 | admin   |
        | editor  | editpass | editor  |
        | viewer  | view123  | viewer  |
    • Abstract common steps using the Background keyword for steps that are repeated across multiple scenarios within the same feature.
    Background:
      Given the user is logged in as an admin
    
    Scenario: Create a new user account
      When the admin creates a new user account
      Then the account should be successfully created
    • Utilize Tags to organize and filter complex scenarios during test execution. Tags can be applied to features, scenarios, or scenario outlines.
    @smoke
    Scenario: Basic user login
      Given the login page is displayed
      ...
    
    @regression @login
    Scenario: Login with invalid credentials
      Given the login page is displayed
      ...
    • Modularize step definitions to create reusable code that can be used across different scenarios. This helps to manage complexity by allowing you to compose scenarios from these modular steps.

    Remember, the goal is to keep Gherkin scenarios clear and understandable, even when they represent complex test cases.

  • What are the limitations of Gherkin in test automation?

    Gherkin's human-readable format is both a strength and a limitation. It excels in describing behavior but can struggle with low-level technical details. Complex logic or data manipulations are hard to express clearly, leading to verbose or ambiguous scenarios.

    Another limitation is maintainability. As the number of scenarios grows, keeping them organized and avoiding duplication becomes challenging. Refactoring can be difficult without affecting readability or the intent of the tests.

    Gherkin's verbosity can also be a downside. Writing detailed scenarios for every aspect of an application is time-consuming and can lead to lengthy feature files that are hard to navigate.

    Moreover, Gherkin is not suitable for all types of testing. It's designed for behavioral specifications, so it's less effective for non-functional testing like performance or security.

    The need for a matching step definition for each Gherkin step can lead to a large codebase of step definitions, which requires additional maintenance and can introduce redundancy.

    Lastly, Gherkin's reliance on exact wording can cause fragility in automated tests. Small changes in the wording of a feature can necessitate updates to the corresponding step definitions, even if the underlying behavior hasn't changed.

    Despite these limitations, Gherkin remains a powerful tool for BDD, fostering collaboration and providing a clear framework for describing and automating software behavior.

  • How can Gherkin be used in a Continuous Integration/Continuous Deployment (CI/CD) pipeline?

    Gherkin can be integrated into a CI/CD pipeline to automate acceptance testing and ensure that new features adhere to specified behaviors before deployment. By writing Gherkin scenarios, which are human-readable specifications of software behavior, you create a suite of executable specifications that can be run as automated tests.

    In a CI/CD pipeline, after code is committed to a version control system, the pipeline automatically triggers a build and runs various tests. Here's how Gherkin fits into this process:

    1. Test Execution: Tools like Cucumber read Gherkin files and execute corresponding step definitions, which are scripts that match Gherkin steps to automation code.

    2. Integration: Gherkin scenarios are integrated into the pipeline by configuring the build server to run the Cucumber test suite after a successful build.

    3. Feedback Loop: If Gherkin scenarios fail, the pipeline is halted, and developers are notified to fix the issue. This ensures that only code that passes all defined behaviors is deployed.

    4. Regression Testing: Gherkin scenarios are re-executed on every change to catch regressions early.

    5. Documentation: Gherkin scenarios serve as living documentation that is always up-to-date with the current state of the application.

    6. Parallel Execution: To speed up the pipeline, Gherkin scenarios can be executed in parallel across multiple test environments.

    7. Tagging: Tags in Gherkin allow for selective test execution, useful for categorizing tests into smoke, regression, or feature-specific suites within the pipeline.

    By incorporating Gherkin into the CI/CD process, teams ensure that the software behaves as expected and that any deviations are caught early, maintaining a high standard of quality with every release.

TwitterGitHubLinkedIn
AboutQuestionsDiscord ForumBrowser ExtensionTagsQA Jobs

Rayrun is a community for QA engineers. I am constantly looking for new ways to add value to people learning Playwright and other browser automation frameworks. If you have feedback, email [email protected].