{"id":27796,"library":"generic-cucumber-protractor-framework","title":"Generic Cucumber Protractor Framework","description":"A generic, reusable automation framework combining Cucumber, Protractor, and WebDriverJS for end-to-end testing of Angular and non-Angular applications. The current stable version is 1.8.7. It provides a large set of pre-built step definitions for form interactions, navigation, alert handling, REST API calls, and fake data generation. The framework is opinionated, requiring a specific folder structure and environment variables. It depends on Protractor, Cucumber, and several other libraries. Compared to building from scratch, this framework reduces boilerplate but may be overkill for small projects and is not actively maintained by a large community.","status":"active","version":"1.8.7","language":"javascript","source_language":"en","source_url":"https://github.com/Tabcorp/generic-cucumber-protractor-framework","tags":["javascript","generic cucumber protractor framework","generic-cucumber-protractor-framework","cucumber steps","cucumber step definitions","protractor plugin","test","testing","automated tests"],"install":[{"cmd":"npm install generic-cucumber-protractor-framework","lang":"bash","label":"npm"},{"cmd":"yarn add generic-cucumber-protractor-framework","lang":"bash","label":"yarn"},{"cmd":"pnpm add generic-cucumber-protractor-framework","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core browser automation library","package":"protractor","optional":false},{"reason":"BDD test framework","package":"cucumber","optional":false},{"reason":"Integration between Protractor and Cucumber","package":"protractor-cucumber-framework","optional":false}],"imports":[{"note":"This is a framework that is used by referencing its support files via require. No direct import of symbols.","wrong":"import ... from 'generic-cucumber-protractor-framework'","symbol":"generic-cucumber-protractor-framework","correct":"require generic-cucumber-protractor-framework as part of project setup"},{"note":"Use the step_definitions_manager to load all steps automatically.","wrong":"require the individual step files directly without using the manager","symbol":"step_definitions","correct":"require('../../node_modules/generic-cucumber-protractor-framework/step_definitions/step_definitions_manager.js')"},{"note":"Page object utility is provided to lookup elements from JSON files.","worng":"require page objects from other paths","symbol":"pageObjects","correct":"require('../../node_modules/generic-cucumber-protractor-framework/support/pageObjects.js')"}],"quickstart":{"code":"// e2e/features/custom_steps/custom_steps.js\nconst { defineSupportCode } = require('cucumber');\nconst pageObjects = require('../../node_modules/generic-cucumber-protractor-framework/support/pageObjects.js');\nconst helpers = require('../../node_modules/generic-cucumber-protractor-framework/support/helpers.js');\n\ndefineSupportCode(function({ Then }) {\n  Then(/^I see the \"([^\"]*)\" element$/, async function(elementName) {\n    const element = await pageObjects.findElement(this.page, elementName);\n    await expect(element.isDisplayed()).to.eventually.be.true;\n  });\n});","lang":"javascript","description":"Shows how to require the framework's support modules and define a custom Cucumber step."},"warnings":[{"fix":"Check GitHub for updates or consider migrating to a more modern framework like WebdriverIO + Cucumber.","message":"The framework may not be compatible with latest Protractor/Cucumber versions (e.g., Cucumber v7+, Protractor v7+).","severity":"deprecated","affected_versions":">=1.8.7"},{"fix":"Ensure all required environment variables are defined in CI or local environment.","message":"Requires specific environment variables (WEB_SERVER, WEB_SERVER_PORT, etc.) to be set. Missing them may cause unexpected defaults or failures.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Follow the documented folder structure strictly; do not rename or reorganize directories.","message":"Folder structure must match expected layout exactly (e.g., /e2e/features/custom_steps). Deviation will break step loading.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"If using Cucumber >6, update steps to use new API (e.g., `Given`, `When`, `Then` imports).","message":"Old Cucumber support (`defineSupportCode`) is used. This is deprecated in Cucumber v7+.","severity":"deprecated","affected_versions":">=1.0.0"},{"fix":"Set `ignoreSynchronization = true` in your config or use `browser.waitForAngularEnabled(false)` before tests on non-Angular pages.","message":"The framework relies on Protractor's `browser.waitForAngular()`. It may time out on non-Angular pages.","severity":"breaking","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Ensure the framework is installed via npm and use the correct relative path from your step file.","cause":"Relative path is incorrect or node_modules is not installed.","error":"Error: Cannot find module '../../node_modules/generic-cucumber-protractor-framework/support/pageObjects.js'"},{"fix":"Update Cucumber to a version that supports defineSupportCode (e.g., 5.x) or switch to newer Cucumber API.","cause":"Using defineSupportCode from older versions of Cucumber (pre-v7).","error":"TypeError: defineSupportCode is not a function"},{"fix":"Update WebDriver (e.g., `npm install webdriver-manager@latest` and run `webdriver-manager update`).","cause":"Protractor driver session crashed; often due to incompatible browser driver version.","error":"WebDriverError: process exited with code null"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}