1.8.7 • Published 5 years ago

generic-cucumber-protractor-framework v1.8.7

Weekly downloads
34
License
ISC
Repository
github
Last release
5 years ago

GENERIC CUCUMBER PROTRACTOR FRAMEWORK

alt text

Owner: Lead Automation Engineer for Digital Melbourne (TABCORP) - Cameron Bradley

Folder Structure

Your Project:

./e2e

  • /config
  • /features

    • custom_steps
      • custom_steps.js
    • definitions
      • pages
        • pages.json
        • page_name.json
    • feature.feature

Get up and running:

1.) Install the generic-common-protractor-framework into your project

npm install generic-cucumber-protractorc-framework@latest --save-dev

2.) Ensure your project has the following (required for the protractor_conf.js)

npm install cucumber@latest --save-dev
npm install protractor@latest --save-dev
npm install protractor-cucumber-framework@latest --save-dev

3.) Refer to the protractor_conf_example

Copy and paste the protractor-conf.js into /e2e/config and update accordingly.

The Common Repository:

../../node_modules/generic-cucumber-protractor-framework/step_definitions

  • /definitions
    • elements.js
  • /fake_data
  • /node_modules
  • /step_definitions
    • alert_steps.js
    • env.js
    • fake_data_steps.js
    • form_steps.js
    • general_steps.js
    • hooks.js
    • hotkey_steps.js
    • json_path_steps.js
    • navigation_steps.js
    • rest_steps.js
    • scroll_Steps.js
    • stored_steps.js
    • table_steps.js
  • /support
    • browsers.js
    • fake_data.js
    • form.js
    • general.js
    • helpers.js
    • json_path.js
    • navigation.js
    • page.js
    • pageObjects.js
    • request.js
    • request_payloads.js
    • restConfig.js
    • servers.js
    • step_definitions_manager.js
    • stored_data.js
    • tag_manager.js
    • waitFor.js

Packages installed by the common repository

"JSONPath"
"chai"
"chai-as-promised"
"chai-things"
"cucumber-pretty"
"faker"
"lodash"
"protractor-flake"
"protractor-hotkeys"
"q"
"request"
"request-promise"

Environment Variables

You will need to set the below in CI:

WEB_SERVER - default = localhost WEB_SERVER_PORT - default = 9000 LOCAL_API_ROUTE - default = blank UAT_UI_ROUTE - default = blank PREPROD_UI_ROUTE - default = blank PRODUCTION_UI_ROUTE - default = blank SPECIAL_EXCLUDED_TAGS - default = blank BROWSER - default = chrome (option: firefox) BROWSER_RESOLUTION - default = desktop (option: mobile, tablet or desktop) MOBILE_UI_HEIGHT - default = 375 MOBILE_UI_WIDTH - default = 667 TABLET_UI_HEIGHT - default = 768 TABLET_UI_WIDTH - default = 1024 DESKTOP_UI_HEIGHT - default = 1200 DESKTOP_UI_WIDTH - default = 800 EXTENDED_POLL_WAIT_ON_CLICK - default = 100

Cucumber steps available

FORM STEPS

Single element

Then I fill in the "([^"]*)" input with "([^"]*)"
Then I select the "([^"]*)" as "([^"]*)"
Then the "([^"]*)" input should equal the value "([^"]*)"
When I clear the field "([^"]*)"

Element at Index

When I fill in the "([^"]*)" input with "([^"]*)" within the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" (?:button|link|icon|element)
When I fill in the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" input with "([^"]*)" within the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" (?:button|link|icon|element)

GENERAL STEPS

Click

Single element

When I click the "([^"]*)" (?:button|link) I should be directed to the "([^"]*)" page
When I click the "([^"]*)" with the text "([^"]*)"
When I click the "([^"]*)" by text "([^"]*)" I should be directed to the "([^"]*)" page
When I click the "([^"]*)" (?:button|link|icon|element)
And I hover over the "([^"]*)"
And I refresh the page
And I click the "([^"]*)"
And I mouse over "([^"]*)"
And a new tab is opened with the url containing "([^"]*)"

Element at Index

When I click the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" (?:button|link) I should be directed to the "([^"]*)" page
When I click the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" by text "([^"]*)" I should be directed to the "([^"]*)" page
When I click the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" by text "([^"]*)" I should be directed to the "([^"]*)" page
When I click the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" (?:button|link|icon|element)
When I click the "([^"]*)" (?:button|link|icon|element) within the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)"
When I hover over the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)"
When I click the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" (?:button|link|icon|element|checkbox) within the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)"

Assertions

Single element

Then the "([^"]*)" element should( not)? be displayed
Then the "([^"]*)" element should( not)? be present
Then the "([^"]*)" element within the "([^"]*)" should be present
Then the "([^"]*)" element should( not)? be enable
Then the "([^"]*)" contains the "([^"]*)" attribute "([^"]*)"
Then the "([^"]*)" contains the "([^"]*)" attributes "([^"]*)"
Then the "([^"]*)" contains the "([^"]*)" text "([^"]*)"
Then the "([^"]*)" does not contain the "([^"]*)" text "([^"]*)"
Then the "([^"]*)" does not contain the "([^"]*)" attributes "([^"]*)"
Then the "([^"]*)" does not contain the "([^"]*)" attribute "([^"]*)"
Then the "([^"]*)" containing the text "([^"]*)" has a "([^"]*)" element
Then the "([^"]*)" contains the text "([^"]*)"
Then the "([^"]*)" does not contain the text "([^"]*)"
Then the "([^"]*)" contains the value "([^"]*)"
Then the "([^"]*)" contains no text
Then I can see "(\d*)" "([^"]*)" (?:buttons|links|icons|elements)
Then I can see more than "(\d*)" "([^"]*)" (?:buttons|links|icons|elements)

Element at Index

Then the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" contains the "([^"]*)" text "([^"]*)"
Then the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" contains the text "([^"]*)"
Then the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" does not contain the text "([^"]*)"
Then the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" element should( not)? be present
Then the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" element should( not)? be displayed
Then the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" contains the "([^"]*)" attribute "([^"]*)"
Then the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" does not contain the "([^"]*)" attribute "([^"]*)"
Then the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" does not contain the "([^"]*)" element
Then the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" does not contain the "([^"]*)" text "([^"]*)"
Then the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" contains the "([^"]*)" element
Then the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" contains "([^"]*)" "([^"]*)"
Then the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" "([^"]*)" element attribute contains the text for "([^"]*)"
Then the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" "([^"]*)" element attribute does not contain the text for "([^"]*)"
Then I see the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" within the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)"

Wait

And I wait "([^"]*)" seconds

SCROLL STEPS

When I scroll down (\d+)$
When I scroll to the bottom of the page
When I scroll to the top of the page
When I scroll down (\d+) within the "([^"]*)"

NAVIGATION STEPS

Given I am on the "([^"]*)" page
Given I am directed to the "([^"]*)" page
Given I set the page to "([^"]*)"
Then I see the "([^"]*)" page title
When I navigate to the "([^"]*)" page
When I navigate directly to the "([^"]*)" page with the stored "([^"]*)"

REST STEPS

When I have a created a "([^"]*)" for "([^"]*)" through the "([^"]*)"
When I retrieve and store the "(.*)" from "([^"]*)" as "([^"]*)"

STORED STEPS

Single element

When I store the number of "([^"]*)" as "([^"]*)"
When I store the "([^"]*)" as "([^"]*)"
When I store the "([^"]*)" number as "([^"]*)"
When I store the "([^"]*)" input value as "([^"]*)"
When I store each "([^"]*)" "([^"]*)" element attribute as "([^"]*)" for the "([^"]*)"
Then the "([^"]*)" should be "([^"]*)" less than the stored number for "([^"]*)"
Then the "([^"]*)" contains the stored "([^"]*)"
Then I see the "([^"]*)" and stored "([^"]*)" page title

Element at Index

When I store the number of "([^"]*)" within the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" as "([^"]*)"     
When I store the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" "([^"]*)" "([^"]*)" element attribute as "([^"]*)"
When I store the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" "([^"]*)" element attribute as "([^"]*)"
When I store the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" "([^"]*)" element attribute text as "([^"]*)"
When I store the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" as "([^"]*)"
When I store the last "([^"]*)" as "([^"]*)"
When I store the "([^"]*)" "([^"]*)" "([^"]*)" element attribute text as "([^"]*)" within the "([^"]*)" "([^"]*)"
Then the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" does not contain the stored text for "([^"]*)"
Then the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" "([^"]*)" "([^"]*)" element attribute contains the stored text for "([^"]*)"
Then the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" "([^"]*)" "([^"]*)" element attribute does not contain the stored text for "([^"]*)"
Then the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" "([^"]*)" element attribute contains the stored text for "([^"]*)"
Then the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" "([^"]*)" element attribute does not contain the stored text for "([^"]*)"
Then the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" "([^"]*)" element attribute within the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" does not contain the stored text for "([^"]*)"
Then the "([0-9]+th|[0-9]+st|[0-9]+nd|[0-9]+rd)" "([^"]*)" contains the stored "([^"]*)"
Then the "(1st|2nd|3rd|[0-9]+th)" "([^"]*)" number should be "([^"]*)" less than the stored number for "([^"]*)"

TABLE STEPS

Then the "([^"]*)" table contains the following
Then the "([^"]*)" table does not contain the following

FAKE DATA STEPS

When I fill in the "([^"]*)" input with "([^"]*)" fake data
1.8.7

5 years ago

1.8.6

5 years ago

1.8.5

6 years ago

1.8.4

6 years ago

1.8.3

6 years ago

1.8.2

6 years ago

1.8.1

6 years ago

1.8.0

6 years ago

1.7.9

6 years ago

1.7.8

6 years ago

1.7.7

6 years ago

1.7.6

6 years ago

1.7.4

6 years ago

1.7.3

6 years ago

1.7.2

6 years ago

1.7.1

6 years ago

1.7.0

6 years ago

1.6.9

6 years ago

1.6.8

6 years ago

1.6.7

6 years ago

1.6.6

6 years ago

1.6.5

6 years ago

1.6.4

6 years ago

1.6.3

6 years ago

1.6.2

6 years ago

1.6.1

6 years ago

1.6.0

6 years ago

1.5.9

6 years ago

1.5.8

6 years ago

1.5.7

6 years ago

1.5.6

6 years ago

1.5.5

6 years ago

1.5.4

6 years ago

1.5.3

6 years ago

1.5.2

6 years ago

1.5.1

6 years ago

1.5.0

6 years ago

1.4.9

6 years ago

1.4.8

6 years ago

1.4.7

6 years ago

1.4.6

6 years ago

1.4.5

6 years ago

1.4.4

6 years ago

1.4.3

6 years ago

1.4.2

6 years ago

1.4.1

6 years ago

1.4.0

6 years ago

1.3.9

6 years ago

1.3.8

6 years ago

1.3.7

7 years ago

1.3.6

7 years ago

1.3.5

7 years ago

1.3.4

7 years ago

1.3.3

7 years ago

1.3.2

7 years ago

1.3.1

7 years ago

1.3.0

7 years ago

1.2.9

7 years ago

1.2.8

7 years ago

1.2.7

7 years ago

1.2.6

7 years ago

1.2.5

7 years ago

1.2.4

7 years ago

1.2.3

7 years ago

1.2.2

7 years ago

1.2.1

7 years ago

1.2.0

7 years ago

1.1.9

7 years ago

1.1.8

7 years ago

1.1.7

7 years ago

1.1.6

7 years ago

1.1.5

7 years ago

1.1.4

7 years ago

1.1.3

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.0.9

7 years ago

1.0.8

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago