Skip to main content
Glama

create_bdd_test_script

Generate BDD test scripts in Gherkin format for Zephyr Scale Cloud, validating steps and structuring scenarios with Given/When/Then syntax.

Instructions

Create a BDD test script using Gherkin format with helper validation

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
testCaseKeyYesTest case key (format: [A-Z]+-T[0-9]+)
featureNoFeature description for the BDD script
scenarioNoScenario description for the BDD script
stepsNoArray of Gherkin steps (must start with Given/When/Then/And/But)

Implementation Reference

  • Main handler function that validates inputs (testCaseKey, feature, scenario, steps), builds a Gherkin-formatted BDD test script, calls createTestScript to persist it to Zephyr, and enhances the response with helper info.
    async function createBddTestScript(args) {
      try {
        const { testCaseKey, feature, scenario, steps } = args;
    
        if (!testCaseKey) {
          throw new Error('testCaseKey is required');
        }
    
        if (!config.testCaseKeyPattern.test(testCaseKey)) {
          throw new Error('Invalid testCaseKey format. Must match pattern: [A-Z]+-T[0-9]+');
        }
    
        // Build Gherkin script
        let gherkinScript = '';
    
        if (feature) {
          gherkinScript += `Feature: ${feature}\n\n`;
        }
    
        if (scenario) {
          gherkinScript += `Scenario: ${scenario}\n`;
        }
    
        if (steps && Array.isArray(steps)) {
          if (steps.length === 0) {
            throw new Error('At least one step must be provided');
          }
    
          const validStepKeywords = ['Given', 'When', 'Then', 'And', 'But'];
    
          steps.forEach((step, index) => {
            if (typeof step !== 'string' || step.trim().length === 0) {
              throw new Error(`Step ${index + 1} must be a non-empty string`);
            }
    
            const stepText = step.trim();
            const hasKeyword = validStepKeywords.some(keyword =>
              stepText.toLowerCase().startsWith(keyword.toLowerCase())
            );
    
            if (!hasKeyword) {
              throw new Error(`Step ${index + 1} must start with a Gherkin keyword: Given, When, Then, And, or But`);
            }
    
            gherkinScript += `    ${stepText}\n`;
          });
        } else if (!feature && !scenario) {
          throw new Error('Either steps array or feature/scenario text must be provided');
        }
    
        // Create the script using the base function
        const result = await createTestScript({
          testCaseKey,
          text: gherkinScript,
          type: 'bdd'
        });
    
        // Add additional info to the response
        const originalContent = result.content[0].text;
        let parsedContent;
    
        try {
          parsedContent = JSON.parse(originalContent);
        } catch (parseError) {
          // If JSON parsing fails, return the original result with error info
          return {
            content: [
              {
                type: 'text',
                text: JSON.stringify({
                  error: 'Failed to parse createTestScript response',
                  originalResponse: originalContent,
                  parseError: parseError.message,
                  bddHelper: {
                    feature,
                    scenario,
                    stepsCount: steps ? steps.length : 0,
                    generatedScript: gherkinScript
                  }
                }, null, 2)
              }
            ],
            isError: true
          };
        }
    
        return {
          content: [
            {
              type: 'text',
              text: JSON.stringify({
                ...parsedContent,
                bddHelper: {
                  feature,
                  scenario,
                  stepsCount: steps ? steps.length : 0,
                  generatedScript: gherkinScript
                }
              }, null, 2)
            }
          ]
        };
      } catch (error) {
        return {
          content: [
            {
              type: 'text',
              text: formatError(error, `creating BDD test script for ${args.testCaseKey}`)
            }
          ],
          isError: true
        };
      }
    }
  • JSON schema defining the input parameters for the tool: required testCaseKey, optional feature, scenario, and steps array of strings.
    inputSchema: {
      type: 'object',
      properties: {
        testCaseKey: {
          type: 'string',
          description: 'Test case key (format: [A-Z]+-T[0-9]+)',
          pattern: config.testCaseKeyPattern.source
        },
        feature: {
          type: 'string',
          description: 'Feature description for the BDD script'
        },
        scenario: {
          type: 'string',
          description: 'Scenario description for the BDD script'
        },
        steps: {
          type: 'array',
          description: 'Array of Gherkin steps (must start with Given/When/Then/And/But)',
          items: {
            type: 'string',
            description: 'Gherkin step (e.g., "Given I am logged in" or "When I click the button")'
          },
          minItems: 1
        }
      },
      required: ['testCaseKey']
    },
  • Tool object registration within the testScriptTools export array, specifying name, description, inputSchema, and handler reference.
    {
      name: 'create_bdd_test_script',
      description: 'Create a BDD test script using Gherkin format with helper validation',
      inputSchema: {
        type: 'object',
        properties: {
          testCaseKey: {
            type: 'string',
            description: 'Test case key (format: [A-Z]+-T[0-9]+)',
            pattern: config.testCaseKeyPattern.source
          },
          feature: {
            type: 'string',
            description: 'Feature description for the BDD script'
          },
          scenario: {
            type: 'string',
            description: 'Scenario description for the BDD script'
          },
          steps: {
            type: 'array',
            description: 'Array of Gherkin steps (must start with Given/When/Then/And/But)',
            items: {
              type: 'string',
              description: 'Gherkin step (e.g., "Given I am logged in" or "When I click the button")'
            },
            minItems: 1
          }
        },
        required: ['testCaseKey']
      },
      handler: createBddTestScript
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/donyfs/mcp-zephyr'

If you have feedback or need assistance with the MCP directory API, please join our Discord server