Integrating the desktop and mobile browser testing into the continuous delivery pipeline

Automated Web UI testing can be challenging when the UI flows on the desktop web and mobile web are different because the product experience is separately optimized for each screen size.

 

In this talk, I will be discussing about

  • Accessing native device components on the mobile web
  • Minimising the complexity with the help of  the business layer concept
  • Executing the desktop and mobile tests into the continuous delivery pipeline using Selenium, Docker, and Jenkins pipeline.
  • Sharing a template for selecting which cloud provider suits you for web automation testing.

Techstack Used: Java, Selenium, Appium, Python, Docker

 
 

Outline/Structure of the Talk

1. Introduction - 1 minute

2. Problem statement - 2 minutes

3. Simulating mobile views in Chrome - 2 minutes

4. Accessing the camera on mobile web - 2 minutes

5. One test case to run on both desktop and mobile browsers - 2minutes

6. Minimising the complexity with a business layer - 5 minutes

7. Cloud service evaluation - 5 minutes

8. Adding tests as part of Jenkins pipeline - 5 minutes

9. Conclusion - 2 minutes

Learning Outcome

1. Writing a single test scenario to support both desktop and mobile web

2. Accessing camera on mobile web

3. Template to evaluate cloud service providers

4. Using Jenkins pipeline script to enable tests in CI/CD pipeline

Target Audience

Test Engineers, Test Managers

Prerequisites for Attendees

Basic knowledge in automation testing

schedule Submitted 3 months ago

Public Feedback


    • Simon Stewart
      keyboard_arrow_down

      Simon Stewart - CI With Bazel (Why Selenium is Using It and You Should Too)

      Simon Stewart
      Simon Stewart
      Project Lead
      The Selenium Project
      schedule 1 month ago
      Sold Out!
      45 Mins
      Keynote
      Beginner

      CI With Bazel (Why Selenium is Using It and You Should Too)

    • Sai Krishna
      keyboard_arrow_down

      Sai Krishna / Srinivasan Sekar - Advanced Appium 2.0

      480 Mins
      Workshop
      Advanced

      At this workshop, you'll learn about advanced concepts in Appium. We will learn how to write a single script for Android, iOS, and mobile web apps. Once our tests are established, we will work on the framework design and report. We will also have a detailed look at how can we automate various mobile gestures using Actions API and mobile endpoints in Appium. The workshop will be based on the latest Appium's Java Client.

       

       

    • Andrew Knight
      keyboard_arrow_down

      Andrew Knight - The Screenplay Pattern: Better Interactions for Better Automation

      Andrew Knight
      Andrew Knight
      Developer Advocate
      Applitools
      schedule 3 months ago
      Sold Out!
      45 Mins
      Talk
      Intermediate

      Automating interactions for tests is hard. For the past decade, the primary way to automate web UI interactions has been the Page Object Model. Unfortunately, page objects do not scale well because, by design, they bind interactions to page structure, which causes lots of code duplication and unsafe activity. The Screenplay Pattern is a much better pattern for handling interactions. In Screenplay, Actors use Abilities to perform Interactions.

      In this talk, I’ll back up that claim in three parts:

      1. I’ll cover problems with traditional ways of automating interactions.
      2. I’ll explain why the Screenplay Pattern is a better way.
      3. I’ll show how to use the Screenplay Pattern with a C# library named Boa Constrictor.

      We will implement both a Web UI search engine test and a REST API web service test in C# with Boa Constrictor to demonstrate how to write readable, reliable tests using Screenplay calls. By the end of this talk, you’ll be able to start using the Screenplay Pattern for your own tests!

    • Srinivasan Sekar
      keyboard_arrow_down

      Srinivasan Sekar / Sai Krishna - Build your own Appium 2.0 Driver

      45 Mins
      Case Study
      Beginner

      What if you had to create a custom driver for your use case in your project and with Appium 1.0 it was not possible without making any code changes to the actual appium code base. This would lead us to maintain a fork and make our required changes. Which in turn is overkill as we have to always keep up with upstream. 

      With Appium 2.0 architecture we can create drivers and plugins for our unique needs. At this talk, we will talk about Appium 2.0 architecture, how to make custom Appium drivers and what other breaking changes we brought in Appium 2.0.

    • Puja Chiman Jagani
      keyboard_arrow_down

      Puja Chiman Jagani - Selenium has a new trick up its sleeve to track failures

      Puja Chiman Jagani
      Puja Chiman Jagani
      Team Lead
      Browserstack
      schedule 2 months ago
      Sold Out!
      45 Mins
      Talk
      Beginner

      As our systems and tests grow more and more complex we need to make sure that we have the tools to capture the root causes without spending hours or days chasing them down. This is where Observability becomes our best friend. Observability allows us to see what is going on inside a system based on what we think is crucial without trawling through logs! Just like any piece of software should be robust, scalable, maintainable, and reliable, it should also be observable. Observability makes the journey from identifying unexpected problems to identifying the root cause easier.

      To do so, the code should record as much useful granular information as possible. Metrics, logs, and traces are three known ways of encapsulating granular information. They are the primary sources of information to help determine the state of the system at any given point in time. 

      Selenium 4 introduced a fully distributed Grid with multiple components that communicate over the network. Troubleshooting and diagnosing problems in this setup is a challenge. To tackle this, Selenium integrated OpenTelemetry’s tracing and event logs.  This feature is now available out of the box by default when using Selenium.
      The users now have more power in their hands!

      I will dive into Selenium's observability journey by discussing: 

      1. What is observability?

      2. Need for observability

      3. Understanding the three pillars of observability: Metrics, Logging, and Tracing

      4. Generating telemetry data alone does not suffice. It is a process from design to deployment. 

      5. Full-stack tracing in Selenium (Grid and Java client library)

      6. Explain how we, at BrowserStack, are benefiting and exposing this information to our users.

    • Matthias Zax
      keyboard_arrow_down

      Matthias Zax - DevSecOps on steroids - Powered by your Selenium tests

      45 Mins
      Talk
      Beginner

      Continuous Security testing is becoming more and more a key factor for success. Especially if we consider that the development and release process is speeding up enormously. Just imagine that your potential shippable product is going to production with a huge vulnerability or a back door open. The damage to your company and bad reputation would be even not measurable.

      So how can we avoid this? How can we build- security -in? Let's leave the stone age behind, break down the security silo and implement DevSecOps.

      During my talk, I will tell you where you can implement and improve security testing. What different kinds of functional and non-function security testing methods are available and what are the low-hanging fruits.
      On a high level, I will explain SAST / DAST / IAST / RASP and how your team could implement these methods with examples. I present how you can use your existing selenium scripts to drive OWASP ZAP and get more out of it!
      Then I will lift it to the next level and show how you can add security testing to your pipeline to get fast feedback to fix the vulnerabilities at a very early stage (shift left). By showing where to implement security tests in your software development lifecycle, I will explain where it makes sense to have security as a deep skill part of your team and go for DevSecOps!

      After I increased our transparency of security and showed you how to deal with "the four fists", I will close my talk by presenting the 10 successful steps to DevSecOps.

    • Sudharsan Selvaraj
      keyboard_arrow_down

      Sudharsan Selvaraj - Smart locator strategy for react js application using ReactWebdriver

      Sudharsan Selvaraj
      Sudharsan Selvaraj
      Lead SDET
      GoJek
      schedule 2 months ago
      Sold Out!
      45 Mins
      Demonstration
      Beginner

      Multiple web frameworks have been invented to simplify the web development process, increase flexibility and reduce time to market. React js is one among them which has a significant growth in recent times. As these web frameworks are being evolved rapidly, we should also adopt tools that provide sophisticated functionality to test them. Even though Selenium is a dominator in the web automation space, it also has some downsides when automating some of the complex web apps that are built using styled-components which results in generating dynamic CSS classes that keep on changing for every UI build.

      Automating such scenarios becomes problematic when the CSS classes are ever-changing. Under such circumstances, ReactWebdriver provides a out of box locators that can be used to locate web elements using React js component name, props and state.

    • Andrei Solntsev
      keyboard_arrow_down

      Andrei Solntsev - Extending open-source libraries on the example of Selenide & Selenium

      Andrei Solntsev
      Andrei Solntsev
      Software developer
      Codeborne
      schedule 2 months ago
      Sold Out!
      45 Mins
      Talk
      Advanced

      You use lots of open-source libraries, but do you know how to customize every single piece of their behaviour? 

      How to make every piece of your software customizable?

      When I had to implement plugins in Selenide, I didn't find any good materials on this topic, and started investigating how other popular libraries do. In this presentation, I will show the results of my research. 

    • Narmadha Ramasamy
      keyboard_arrow_down

      Narmadha Ramasamy / Sameena Syed - Functional Programming in Test Automation

      90 Mins
      Workshop
      Intermediate

      Functional programming(FP) exists from as long as object oriented programming. But most of the testing frameworks are written in OOPS style rather than FP. A typical automation tester knows little or nothing about it. Functional programming is a programming paradigm in which everything is written in terms of functions. This makes the code more modular, bug-free and parallelizable. Hence, it is important to first understand functional programming before avoiding it.

      In this workshop, we will introduce functional programming in testing world. We will help you understand some of the hard concepts of FP, like Currying, Higher order functions, and demonstrate how they can be used in writing an automation framework which is scalable and easier to maintain.

      We'll use Selenium 4.0 to automate a few UI scenarios, covering functional programming concepts and a code walkthrough to its object-oriented counterpart.  This will entice viewers to choose programming style based on its benefits rather than its simplicity.

    • Samiran Saha
      keyboard_arrow_down

      Samiran Saha / Dhvani Parekh - Testing Mobile Web Apps on Real Devices: A page out of "How Fortune 100 companies do it"

      45 Mins
      Talk
      Beginner

      With the advent and advancements in Web APIs, accurately displaying responsive web page content across fragmented mobile device browsers is merely just one of the checkboxes that Quality Assurance teams need to care about, albeit a very important one.

      Similar to native / hybrid apps installed directly on Android and iOS, mobile web applications also implement advanced real world use cases that heavily leverage mobile device hardware such as processor, graphics, memory etc. and device sensors like camera, microphone, location, motion etc.

      In addition, web apps can also access device OS level features for SMS/call integrations, notifications, payments, accessibility which further calls for testing such web apps on real mobile devices.

      In our talk, we are going to cover -

      1. Expansion of mobile web testing landscape with Web APIs

      2. Why is mobile web testing important for businesses

      3. Real-world mobile web testing customer use cases across Finance, Banking and E-commerce

      4. Mimics for a real device : A risky business

      5. Achieving versatility in meeting the dynamic infrastructure needs

    • Gaurav Singh
      keyboard_arrow_down

      Gaurav Singh - Hello Espresso! Start with Android Gray box automation

      Gaurav Singh
      Gaurav Singh
      Software Engineer
      Meta
      schedule 2 months ago
      Sold Out!
      90 Mins
      Tutorial
      Beginner

      TL;DR Summary

      • Espresso is a powerful UI automation framework for the Android platform that offers gray box automation capabilities and has a simple, concise, and rich API. 
      • Onboarding to use espresso can however sometimes take time. In this talk, I will explain how to get started with Espresso in the shortest time possible and we’ll look at some recipes on how to automate common app scenarios with espresso API.

      Abstract

      • It’s 2022 and most businesses these days are mobile-first with a presence on major platforms. UI automation is a critical part of the testing strategy of businesses looking to release high-quality apps with confidence. While unit testing is a much wider adopted practice, writing scalable UI automation is often a challenge due to its higher fidelity.
      • Espresso is the dominant UI automation library for android from Google that provides a rich and concise API to test your android app's UI with confidence without sacrificing reliability and with minimal flakiness due to amazing integration with underlying instrumentation.
      • For an n00b engineer approaching their first Espresso test, it could be especially tough to wrap your head around its idioms and android context and get set up quickly. 
      • Well, In this talk:
        • we’ll solve for that exact persona and provide a quick understanding of an espresso test structure
        • Follow up by diving deeper into its API
        • Discuss different ready to use recipes that developers could use to solve some common use cases with mobile UI automation
        • Provide a boilerplate framework
        • I'll share Github repo links that have app source code along with their Espresso UI tests to follow along or revisit later.

       

    • Anton Angelov
      keyboard_arrow_down

      Anton Angelov - Become Black Ops QA with Selenium 4 BiDi-DevTools APIs

      Anton Angelov
      Anton Angelov
      CTO
      Automate The Planet
      schedule 2 months ago
      Sold Out!
      45 Mins
      Talk
      Intermediate

      Anton Angelov will explain in many details and code examples how to automate hard-to-test web app functionalities using Selenium 4 BiDirectional and Chrome DevTools APIs. We will discuss test automation of progressive web applications, web sockets, memory leak checks. In addition, you will learn how to perform internationalization, localization, and network performance testing. Finally, we will investigate how you can use the protocols to speed up your tests using the black hole proxy pattern.

    • Boni García
      keyboard_arrow_down

      Boni García - WebDriverManager: the Swiss Army Knife for Selenium WebDriver

      Boni García
      Boni García
      Staff Software Engineer
      Sauce Labs
      schedule 2 months ago
      Sold Out!
      45 Mins
      Tutorial
      Beginner

      Selenium WebDriver is a library that allows controlling web browsers (e.g., Chrome, Firefox, Edge, etc.) programmatically using different languages (such as Java, JavaScript, Python, Ruby, or C#). Internally, Selenium WebDriver uses the native support implemented by each browser to carry out the automation process. For this reason, we need to place a component called driver (e.g., chromedriver, geckodriver, msedgedriver, etc.) between the script using the Selenium WebDriver API and the browser. WebDriverManager is an open-source Java library that carries out the management (i.e., download, setup, and maintenance) of the drivers required by Selenium WebDriver in a fully automated manner. In addition, as of version 5, WebDriverManager provides other relevant features, such as discovering browsers installed in the local system and building WebDriver objects, and running browsers in Docker containers seamlessly. The last feature added to WebDriverManager is related to log gathering. As of version 5.2.0, WebDriverManager provides seamless integration with BrowserWatcher, an open-source browser extension that allows gathering the browser console programmatically (even for Firefox, which was not possible to date). 

    • Shama Ugale
      Shama Ugale
      Sr. QA Consultant
      Xnsio
      schedule 3 weeks ago
      Sold Out!
      45 Mins
      Demonstration
      Intermediate

      Simulating real-user scenarios as part of your automation is a solved problem. You need to understand the domain, the product, the user, and then define and implement your scenario.

      But there are some types of scenarios that are complex to implement. These are the real-world scenarios having multiple personas (users) interacting with each other to use some business functionalities. These personas may be on the same platform or different (web / mobile-web / native apps / desktop applications).

      Example scenarios:

      • How do you check if more than 1 person is able to join a zoom / teams meeting? And that they can interact with each other?
      • How do you check if the end-2-end scenario that involves multiple users, across multiple apps works as expected?
        • Given user places order on Amazon (app / browser)
        • When delivery agent delivers the order (using Delivery app)
        • Then user can see the order status as "Delivered"

      Even though we will automate and test each application in such interactions independently, or test each persona scenarios independently, we need a way to build confidence that these multiple personas and applications can work together. These scenarios are critical to automate!

      In this session, I will demonstrate teswiz, an open-source framework can easily automate these multi-user, multi-app, multi-device scenarios. I will also mention how to run these tests on local and in CI pipelines.

      Example: Multi-user, Multi-device test scenario

      MultiUser-MultiDevice-Annotated.png

      Example: Multi-user, Multi-app, Multi-device test scenario

      MultiUser-MultiDevice-MultiApp-Annotated.png

      Teswiz enables, and guides you to implement your automated tests while adhering to the principles of test automation, like - independent tests that run in parallel, against multiple environments using environment-specific-test-data and generate rich and contextual reports (and test execution trends) in reportportal. 

      Test coverage is increased by using Applitools Visual AI, along with Applitools Ultrafast Test Cloud. 

      In addition, teswiz takes away the pain of managing your browsers, and android / ios / windows devices for automation. The automated tests can run on local browsers / devices, or against any cloud provider, such as HeadSpin, BrowserStack, SauceLabs, pCloudy.

      The following features makes teswiz unique:

      The ability to do:

      • Multi-user scenario automation between all platforms (android, iOS, Web, Windows desktop applications)
      • Managing browsers / devices and parallel execution automatically
      • Completely configurable options - means no code change required to run different combinations of tests, on demand
      • Integration with Applitools Visual AI and Applitools Ultrafast Test Cloud
      • Rich contextual reports (including screenshots, browser / device logs) and trend analysis via ReportPortal.io

      The following features are relatively new in teswiz:

      • Ability to run test orchestration across different platforms, using different app(s) and different users
      • Integration of Applitools Ultrafast Grid for scaling
      • Support for Firefox & Safari (earlier it was only Chrome)
      • Better driver management & cleanup
    • Gayathri Mohan
      keyboard_arrow_down

      Gayathri Mohan / Pallavi Vadlamani - How to approach Continuous Testing of Cross-Functional Requirements?

      45 Mins
      Talk
      Advanced

      Cross-functional requirements (CFRs), predominantly referred to as Non-functional Requirements (NFRs), form an integral part of software quality and testing for them continuously is an absolute necessity for any team that promises to deliver high-quality software to their customers and end-users. Often, the emphasis that is placed on continuous testing (CT) the functional requirements are not equally placed on continuous testing the cross functional requirements in software delivery teams and by the business stakeholders. There could be multiple reasons catering to this phenomenon but one we believe could be a prominent reason is the lack of awareness on how to approach CFRs testing as they come across really vague, say, reliability or maintainability, for example. 

      In this talk, I, author of O'Reilly's Full Stack Testing book, and my colleague from Thoughtworks, Pallavi Vadlamani, would like to elaborate why it is essential to do continuous testing for cross-functional requirements and introduce a holistic approach to continuous testing of all the cross-functional requirements (the approach is carved as part of Gayathri's book). We will cover how different testing techniques such as static code analysis, architecture tests, visual tests, infrastructure tests, load tests, etc., cater to automating a variety of CFRs, including those really vague ones, and therefore, aid in continuous testing and building quality into the software. 

      We would continue the talk with applying the approach to a couple of CFRs specifically, say, security and accessibility, to give the audience a solid grasp on the approach. By the end of the talk, the audience should get a clear idea of how to approach continuous testing of any given CFR that is necessary for them to deliver a high-quality software.

    • João Proença
      keyboard_arrow_down

      João Proença - Observability meets a Flaky Test

      João Proença
      João Proença
      Quality Engineer
      Ada Health
      schedule 2 months ago
      Sold Out!
      45 Mins
      Talk
      Intermediate

      “Observability”. A word that is quite popular in tech these days, but not always easy to understand what it means in the real world, right? “How is it not monitoring?”

      I mean, we’re told that it’s about “unknown unknowns” and that you should be able to answer new questions about a system without having to ship any code. We’re also told that there are three pillars for observability, “logs, metrics and traces”, and that it’s much more than just monitoring. But how does that translate to real-life scenarios from a software tester’s perspective?

      Well, one day my team was struggling with a flaky test in our CI/CD pipeline. The way we were able to unravel the mystery surrounding that test illustrates a few key observability concepts on the availability of data and the friction in accessing it. 

      In this talk I will tell you the story about that painful flaky test and how it showed us how (the lack of) observability could already be present in our daily lives, without us even realising it! By the end of this tale, even if you know nothing about observability beforehand, you will understand a bit more. You’ll know some questions you should start asking about your own tests, and have some ideas that will let you find the answers quickly!

    • Eran Kinsbruner
      keyboard_arrow_down

      Eran Kinsbruner - Comparing Selenium 4, Cypress and Playwright Frameworks

      Eran Kinsbruner
      Eran Kinsbruner
      Global Evangelist
      Perfecto
      schedule 3 months ago
      Sold Out!
      45 Mins
      Talk
      Intermediate

      As the cross-browser testing landscape evolves, there is a stabilization around 3 main leading frameworks that are used the most. Some are more adopted by frontend developers, while some are adopted by SDETs. To better make a selection or even choose more than a single framework you need to realize the core differences and use cases as well as benefits each framework provides to the practitioner.

      In this session, Eran Kinsbruner, Chief DevOps evangelist, best-selling author from Perforce (Perfecto and Blazemeter specifically) will go through the core differences and advantages of all 3 frameworks with focus on Selenium 4 vs. the latest versions of Cypress and Playwright and provide a nice outline to better guide test automation engineers as they look for their next test framework.

    • Parasar Saha
      keyboard_arrow_down

      Parasar Saha - Cloud First Automation Approach – Road to Scalable and Faster Test Automation Pipelines

      Parasar Saha
      Parasar Saha
      CEO
      Digy4
      schedule 2 months ago
      Sold Out!
      45 Mins
      Talk
      Advanced

      Cloud has changed the way the software world works. Companies have accelerated their development and deployment cycles with 3x or more speed by adopting the cloud. But Testing in most organizations either is running locally or not taking advantage of the full potential of cloud infrastructure. Testing is the home-alone kid, left to spend the Christmas weekend without the bells the whistles that cloud has to offer.

       

      Digital transformation in IT and Agile delivery model are pushing the testing teams to complete their testing in shorter testing windows. 26 % of the organization are moving to daily releases. 70% of the organization have adopted Agile in delivery. Even after having a high amount of automation coverage teams are struggling to keep up with the pace of testing asked by the business teams.

       

      This talk is about how you can change the story and accelerate cloud adoption in your testing organization with Selenium-based frameworks. Through cloud adoption you benefit from box features of the cloud: On-demand scaling, Cost optimation, Security, Reliability, Geo -routing of your test infrastructure. Cloud adoption doesn’t need to limit to the execution of selenium tests but can help you in test management of automated selenium tests, test data generation, test reporting, test artifact store, and many more. It is not enough to have an Automation First Approach these days, you also need to have Cloud-First Approach for test infrastructure to get the best value from automation.

      The talk elaborates on factors to consider while building up the cloud-based testing pipeline and how they will benefit your organization in terms of time to market, cost optimization, and raising the bar of quality.

      Finally talks about the moonshot of having a Testing Cloud – AWS of Testing and what will it take to reach there as a testing community.

      Take your testing to the cloud, and fly your flag high in quality!

    • Yevgeniy Shunevych
      keyboard_arrow_down

      Yevgeniy Shunevych - Atata Framework - Elegant and Powerful Page Object Model

      45 Mins
      Tutorial
      Intermediate

      I'm a creator of Atata Framework and want to share information about it. Atata Framework - C#/.NET web test automation full-featured framework based on Selenium WebDriver. It uses a fluent page object pattern; has a built-in logging system; contains a unique triggers functionality; has a set of ready-to-use components. One of the key ideas of the framework is to provide a simple and intuitive syntax for defining and using page objects. A page object implementation requires as less code as possible. You can describe a page object class without any methods and only have a set of properties marked with attributes representing page components.

      Atata is a quite mature framework that is being developed by me since 2016. It is used in a variety of projects and has positive community feedback. I would like to tell about the framework and approaches implemented in it. Attendees may find Atata interesting to try in practice, as well as get familiar with specific Atata concepts that can be used separately from Atata.

    • Amuthan Sakthivel
      keyboard_arrow_down

      Amuthan Sakthivel - CLEAN TEST DESIGN PRACTICES FOR EFFECTIVE SELENIUM AUTOMATION FRAMEWORK

      Amuthan Sakthivel
      Amuthan Sakthivel
      SDET
      Clipboard Health
      schedule 2 months ago
      Sold Out!
      45 Mins
      Demonstration
      Intermediate

      Selenium is an amazing library for UI Automation. However, using it in a project needs a proper test design, a good approach and the best framework. I have listed some of the challenges that most people face during automation and will also brief on how we can solve those problems with effective design and approach.

      Key Challenges :

      1. Field level validations on a form containing several fields. (Many people will ignore these tests in automation as it may increase the number of lines of code and number of tests. Maintaining them is a difficult task)

      2. Verifying the state of the web element before operating on it. (It is imperative to check whether a web element is present or visible or clickable or needs a scroll to operate. Also, different elements need different explicit wait times. Most probably we will have number of methods like waitForElementToBeClickable, waitForElementToBeVisible. This again results in increased lines of code. )

      3. Assertion of multiple components on a page. (Sometimes we want to validate several items on a page and writing methods like getTitle, isCompanyLogoPresent, isFooterMenuPresent either results in multiple tests or poor test code spoiling the readability.)

      4. CI/CD integration. ( Most of the companies were using Jenkins as their CI/CD tool to schedule tests and this is most probably maintained by Devops team. To set up Jenkins job we need a lot of permission. At the worst we need a machine/infra to run and schedule our tests)


      How we can solve these commonly occurring problems?

      1. With the advent of functional programming, we can pass different behaviours to the test methods. In the demo, I will use BiPredicate Interface implementations to solve this problem with clean design.

      2. Annotations in Java is very powerful but hardly used in Test Automation Frameworks. I will use reflections and annotation to solve this problem with a much cleaner design.

      3. We can leverage Custom Validator classes and AssertJ to write some effective readable tests.

      4. We can leverage Github Actions and the Github runner to set up Selenium Grid Infrastructure and run our tests without any additional infra.

      Tech Stack : Java, Functional Interfaces, Selenium, AssertJ, Github Actions

    help