A TEST FRAMEWORK USING PROTRACTOR, CUCUMBER & CUCUMBER SANDWICH Panacea A TEST FRAMEWORK USING PROTRACTOR, CUCUMBER & CUCUMBER SANDWICH Adonis Celestine
ABOUT THE SPEAKER Adonis Celestine Adonis has more than 10 years of industry experience in Software Testing. He has good expertise on Software Test automation and consultation. Adonis is passionate about test innovations and making testing simpler and more interesting. He has implemented this framework for multiple projects on a large scale and in this presentation he shares the experience, best practices and challenges in using this framework. email : adonis.sheeban@gmail.com 0617468887 Adonis Celestine
THE TOOLS CUCUMBER PROTRACTOR CUCUMBER SANDWICH Cucumber is a leading BDD tool which lets software development teams describe how software should behave in a business readable domain specific language. PROTRACTOR Protractor is an E2E test tool developed by google to test Angular applications. CUCUMBER SANDWICH Cucumber Sandwich generates awesome html reports on the fly. It monitors your Cucumber json report directory for changes & generates the report.
WHY NEW FRAMEWORK Gaps in the current process Technology changes & responsive design Something light and free What are you testing Test Reporting
GIVEN– Some preconditions THEN– you see an outcome BEHAVIOUR DRIVEN DEVELOPMENT WHEN– an event occurs BDD GIVEN– Some preconditions THEN– you see an outcome A programmers mind Travel(“market”); If(isPresent(“egg”)){ buyMilk(6); } else { buyMilk(1); } More Collaboration Automated Acceptance Tests Faster & High Quality
CUCUMBER & GHERKIN BDD IS TDD done right Feature: Search on internet @Regression @Smoke Scenario Outline:Search keywords protractor & cucumber Given I open the search <engine> When I type <keyword> And I click search Then I see the search results Examples: |engine|keyword| |google|protractor| |google|angularjs| |bing|protractor| Feature: Descriptive text of what is desired Scenario Outline: Some determinable business situation Given some precondition And some other precondition When some action by the actor And some other action Then some testable outcome is achieved And something else we can check happens too Examples: Test Data BDD IS TDD done right It’s the language the business understands
PROTRACTOR BDD Test Reporting The glue code Browser Driver System Under Test Angular locators Multi browser capabilities E2E Test the whole chain ng-binding, ng-repeat, ng-textarea, ng-model , WaitForAngular
PROTRACTOR IN AN ANGULAR PAGE The Feature file Feature: Check the weather @chain Scenario Outline:Check the weather of Amsterdam Given I open weather.com When I type Amsterdam in the search box And I click search Then I must be able to see the weather <overview> Examples: |overview| |Today| |5 Day| |10 Day| |Weekend| |Monthly| The Config file exports.config = { specs: ['test/SystemTest/features/*.feature' ], framework: 'cucumber', cucumberOpts: { require: ['features/step_definitions/*_steps.js', 'features/support/*.js'], format: 'pretty' }, capabilities: { browserName: 'firefox‘ } }; The Spec file this.When(/^I type Amsterdam in the search box$/, function (callback) { browser.element(by.xpath(“(//input[@name=‘search’])”).sendKeys(“Amsterdam”).then(callback); }); Demo
PROTRACTOR IN A NON ANGULAR PAGE Acts like Selenium Use a wait function browser.ignoreSynchronization = true browser.driver instead of driver More identifiers Switches between angular and non angular pages Applications that will be migrated to angular in future Demo
PROTRACTOR ON MOBILE The Config file Doesn’t support native apps Install android SDK capabilities: { browserName: 'chrome', 'appium-version': '1.0', platformName: 'Android', platformVersion: '4.4.2‘ , deviceName: 'Android Emulator', } Mobile browsers Configure Protractor Appium Install Appium Selendroid
CUCUMBER SANDWICH Demo
Tools are new in the market BDD is a mindset Huge learning curve Tools are new in the market Large Scenarios with multiple steps CHALLENGES
THE BEST PRACTICES & TIPS Using page objects The Gherkin Syntax Visual Review Accessibility testing Debugging User stories in Jira
THANK YOU! FOR YOUR ATTENTION REFERENCES https://angular.github.io/protractor/ https://cucumber.io/ https://www.linkedin.com/profile/view?id=AAMAAAbro_EBdKrNNLuUAOzF3KxGRpDkWydxpuE&trk=hp-identity-name http://testautomation.applitools.com/post/94994807787/protractor-vs-selenium-which-is-easier