Applying software craftsmanship to the evolving world of automation.

Software Craftsmanship is a practice of continuous development and helping others learn the craft. As the world is evolving towards the era of scripting language, we will be sharing our experience of how we have grown as a team of all QA with programming language background to the niche typescript world contributor.
During this talk, we will be focussing on the shift of existing selenium to the actual implementation of Protractor test API. How and when to use a protractor? When to pick protractor as an automation tool for building a framework.

By the end of the session, one will be able to understand how can we start working on end to end tests for any JavaScript and TypeScript based application using Protractor, Cucumber framework, and Page Object Model design pattern.

We will also talk about configuration files, cucumber, typescript, promise handling in protractor.


Outline/Structure of the Demonstration

  1. Drift in moving from Selenium-based architecture to TypeScript based QA set-up.(2-3mins)
  2. When and why do you need to evolve in the software QA automation industry?(2-3mins)
  3. Introduction to JS-based applications and their automation challenges using Selenium WebDriver.(5mins)
  4. Comparison of Selenium WebDriver and Protractor API.(5mins)
  5. Creating utility in protractor and POM set up in a framework based on the protractor.(10mins)
  6. We will speak about the Cucumber framework, typescript, reporting and its integration with protractor specs.(10mins)
  7. Walk-through of the current project via code snippet/ Demo(10mins)

Learning Outcome

  1. Points to remember when designing a framework based on JS
  2. Various challenges in AngularJs automation
  3. Cucumber framework in detail and its integration with automation tests.
  4. Applying assertions via Cucumber and Chai.
  5. Generating reports out of TS specs
  6. Running parallel TS specs
  7. Basics of typescript, cucumber, protractor.

Target Audience

Any person having prior knowledge of QA Automation.

Prerequisites for Attendees

Basic knowledge and interest in automated testing and how to write automated tests, any automation framework design and techniques.

schedule Submitted 3 years ago

  • Virender Singh

    Virender Singh - Rise of Shadow DOM - Lets solve it through WebDriver

    45 Mins

    Shadow DOM is kind of web standard that developers use to encapsulate their custom HTML code and style components so that no other global style components can override their code. It ensures that a component will work in any environment, even if other CSS or JavaScript is run on the page i.e. Shadow DOM hides away the complexity of the components from the rest of the page because it renders separately from main DOM.

    Selenium legacy selectors are not able to interact these custom elements under the shadow DOM so we need java script to interact with shadow DOM elements and we also require JavascriptExecutor interface for their execution.

    We will also talk about the WebdriverIO tool v5.5.0, which implicitly support Shadow DOM elements.

  • 45 Mins

    Puppeteer is a Node js library (developed by Google Chrome team) to control Chrome and Firefox and is getting lot of traction recently because of its amazing capabilities. It has already become so popular that it has got 50K+ stars on Github against Selenium's 15K+ stars.

    In the last Google I/O event, this tool's capability has been showcased and it has been perceived as the next generation Web Test Automation Tool.

    Is Puppeteer better than Selenium? The answer is 'No', and I will cover 'why' in detail during this talk. I will show some live examples to demonstrate that Selenium can also do all those advance things which Puppeteer promises to do.

  • Vishal Srivastava

    Vishal Srivastava / Khyati Sehgal - Setup Grid Infra with AWS Nodes & Autoscaling of AWS Nodes

    45 Mins

    When it comes to creating a project we always search for ideas that are open-source, easily scalable, ready to use.

    We as humans always have a tendency to grow and expand and when it comes to customizable infrastructure it's a big Yes.

    In this talk, we will be focussing on how we can save the cost of actual servers with easily scalable and manageable open-source software using an open-source tool - selenium grid. How we set up the nodes and hub altogether to make cross-browser, multi-platform execution takes place.

  • Khyati Sehgal

    Khyati Sehgal / Shubhechchha Rai - Expanding the aura of automation, when it comes to mobile.

    45 Mins

    This talk will answer the questions "Will you be able to run your automation scripts without connecting the USB cable to your device in a limited range?"

    If we have to ask ourselves where is the mobile and when is it required? So the answer would be its 'Everywhere'!!

    It's next to possible to imagine a day without looking at mobile or using apps for that matter- Google, Facebook, Whatsapp, etc.

    When it comes to using it so testing comes hand-in-hand with it. As we develop applications over a mobile device, be it any platform ios, Andriod and windows we shall also think about usability and end-to-end testing.

    In this talk, we will discuss how Appium worked as a bridge between devices and controllers.

  • Argneshu Gupta

    Argneshu Gupta - Get rid off Xpath in iOS Native App Automation

    Argneshu Gupta
    Argneshu Gupta
    QA Lead
    schedule 3 years ago
    Sold Out!
    45 Mins

    It is always challenging for us while dealing with Xpath and Css in iOS Mobile Automation.Even we can't think to do iOS native app mobile automation without them .

    So problems we need to face are

    • High Maintenance
    • High Execution Time
    • Complex installation
    • Additional Web server

    Do we have some solutions for this problem - The answer is Yes !!! -> KIF(Keep It Functional)

  • Prateek Sethi

    Prateek Sethi - Enhance Test Automation ROI with Docker based Selenium Environment

    Prateek Sethi
    Prateek Sethi
    QA Lead
    schedule 3 years ago
    Sold Out!
    90 Mins

    Quick Description :

    To support the continuously evolving software industry, DevOps and Agile practices have established themselves as a big helping hand. With ever-increasing large scale digital transformation projects, organizations realize that the only way to shorten the product development cycles is to automate the processes involved in the delivery pipeline.

    There are many tools and technologies to establish DevOps, but one of the most important ones is containerization, which gives flexibility in application packaging and automating a number of processes involved in the delivery pipeline. Containers have all the needed configurations and dependencies, for faster delivery of committed items to the customer. Docker is an open-source solution that makes it easier to create, deploy and run applications securely using containers. Therefore, quick feedback and testing applications with different environments can be achieved using Selenium with Docker.

    My Proposal :

    We can reduce the significant effort in provisioning, maintaining, running the Test Automation on different environment setup using, Docker with Test Automation. Some of the benefits are:

    Benefits of using Docker with Selenium:

    1. Test an application on multiple browsers and their different versions without installing them on multiple machines
    2. To test multiple application builds concurrently without updating the code for different environments
    3. To test your applications on multiple devices/OS/Browser combinations on a single machine.As Selenium within Docker will make it much quicker to test different environments by using the preconfigured containers.
    4. Also, I will cover topics like how to set up the Selenium multi-environment setup using Docker concepts like Compose file, etc.

    Best practices using Selenium with Docker

    1. Common Dos and Don'ts for this setup.
    2. How to avoid over maintenance of your Test Harness.
    3. Infrastructure setup

    Increase the power of your Test Automation Setup with Kubernates:

    How to handle Selenium grid-based dockerize nodes with Kubernates.

  • Sahib Babbar

    Sahib Babbar / amrit singh - An extensible architecture design for cross-platforms/technologies to maximise product automation coverage

    20 Mins
    Case Study

    "Are you working for a product where you're struggling to automate the module(s) which you actually think can not be automated?"

    Considering you have a product running on different browsers, different OS and/or different platforms and for this, you have written automation scripts in different technologies. So, following are the pain points which we are going through: -

    • Automation candidates test-scripts can’t be automated

    • Lower automation coverage

    • Lesser auto-tests => more manual work.

    • Lessor auto-tests => more regression time.

    • No with-in sprint automation.

    • Urge for the quick solution to cater to cross-technology and cross-platform automation scripts.

    So, based on the above points, we came up with the automation architecture in such a way which serves the purpose in the following manner:

    • Able to add more automation coverage in another layer of testing.
    • Able to make a call from any platform (mobile or web) with any technology like Java, Swift, C#, etc.
    • More automation coverage = Lesser manual effort during regression or Smoke testing.

    Extensible Web Services Architecture Diagram

    Extensible Services Components:

    • Application: Responsibility: Application is the main Spring Boot Application and has the following responsibilities:
      • Triggers auto-configuration
      • Component scanning
    • Controllers: Responsibility: Controllers are the Rest Controllers has the following responsibilities:
      • For restful services creation for CRUD operations
      • All the requests and response from the external automation framework is being catered via controllers
    • Services: Responsibility: Services is the Business Logic layer where the CRUD operations can be performed based on the extended web-service calls. These operations can be performed on the product’s existing APIs and/or database using the data-access layer, below are the key responsibilities:
      • Business use-case based CRUD operations on the product database
      • Business use-case based CRUD operations on product existing web-services
      • Authentication of the product can be done internally via services based on credentials supplied from the controller params.
    • DAO: Responsibility: DAO is the Data Access Layer where the CRUD operations can be performed on the product database.

    Some of the actual problems and the solution:

    Problem#1: Alerts - Dismiss for Today flow

    • We have to wait for 24h to verify that the alerts section is displayed again

    • Cannot run the same test on both platforms (web/mobile)

    • Cannot run the same test twice in the same day

    Solution: Unsupress the suppressed dialogue box by calling the extensive API can resolve the problem so that on re-run the automation it would not fail.

    Problem#2: Tasks read status, once selecting a task, it is marked as read and cannot check it again.

    Solution: Unread the task with simple extensive API call with taskId as a parameter

    Implementation and usage

    We have the implementation done on a product, and is utilized by 4 external automation frameworks, as below:

    • API Automation Framework (Java)
    • Web Automation Framework (.Net)
    • Android Mobile Automation Framework (Java)
    • iOS Mobile Automation Framework (Swift)

    We can walk through with the implementation approach, as a

    • Producer: How we actually produce the HTTP response for a test scenario via API call requested by the consumers.
    • Consumer: How our consumers (external automation framework) can get the HTTP Response, they can use at their end to get the work done.

    Time break-up and the speakers:

    1. Introduction about the case-study 3min - Sahib
    2. Problem and solution 5min - Amrit
    3. Architecture diagram walk-through 5min - Sahib
    4. Demo 5min - Amrit (running the demo) / Sahib (explaining the demo)
    5. Q/A 2min (Both)

  • Ishan Mittal

    Ishan Mittal / Shubhechchha Rai - Reduce test scripts execution time by Deeplinks

    45 Mins

    This Talk will be having :

    What Deep link is & How we can make effective use of these links to reduce the overall execution time of our scripts.

    Why we should use deep link ??

    There are some scenarios where we have to follow some navigation steps to reach the actual page for validation. Deeplinks helps us to skip this unnecessary navigation and lends directly to required page and hence reduce execution time of our Test case script. We use Mainly for:

    1. Reduce execution time
    2. Reduce the amount of failures that are caused due to navigation through the app


    Deeplink helps us to directly lend on required page.Deep linking is a fancy way to refer to a URL that points to a specific part of an app. It’s analogous to a URL that points to a subfolder of a website. For example if I wanted to send you a message page of linkedin, I would send you a URL that immediately brought you to the message page, not send you to the home page to navigate to it yourself from there.

    Eg: We have following flow of our app:

    Page A > . Page B > Page C > Page D and we have validation test on Page C only.
    So rather than going through Page A to Page B to page C, We can directly lend to Page C using Deeplinks & hence reduce the time efforts.

    Where can we use deeplinks?

    These links are most suitable for mobile app Testing (iOS and Android)

    Case Study:

    I tried this strategy in one e commerce website Test case steps:

    Scenario Used

    1. Create user via api with saved CC, saved shipping address and added products in basket
    2. Navigate to home page and sign in (Deeplink used)
    3. Navigate to basket (Deeplink used)
    4. Navigate to checkout and place order (using UI )
    5. Navigate back home page from order confirmation page (Deeplink Used)

    We came up with following time difference:

    1. Execution time without deeplink – 5 min 01 sec
    2. Execution time with deeplink – 3 min 46 sec

    For this sample script which will be mentioned above, difference in the execution time(1 min 15 sec) is significant.

    We'll also showcase the code snippet for this.

  • amrit singh

    amrit singh - Is “FLAKINESS” hampering your test automation execution?? No Worries “AI (” is here.

    amrit singh
    amrit singh
    schedule 3 years ago
    Sold Out!
    20 Mins

    Every time you see flaky scripts you keep wondering what should I do .Should I change my locator strategy or should I use “Thread.sleep(“wait a minute should i really use this.. A big pause in your mind.”)” . Trust me flaky scripts are worst nightmares.

    So here I will be sharing my journey how I have used in appium automation scripts and how I have converted my flaky scripts to green colour .

    Apart from this I will also be talking about how you can integrate this in your appium automation framework.And how you can train this AI plugin according to your need.

    As a bonus those who hate flakiness I will be talking about some limitations of this and where not to use in your scripts.