tell me about your framework
I am using JAVA as a programming language.
My testing framework is combination of tools
Maven-Selenium-Junit-Cucumber-TestNG
My framework created as a maven project,
I use Maven as a built automation tool which
has pom.xml file that allows us to manage
dependencies and plugins easily.
Selenium WebDriver is a library/tool/API
which is used to automate the browser.
TestNG used to group tests using xml files,
do soft and hard assertions, create test
methods, run in certain order.
Junit ,I use cucumber with junit, to run
tests and also to do assertions.
Annotations are used in hooks and runner class.
Cucumber is a tool for running automated tests
written in a behavior driven development style.
My framework support both Behavioral
Driven and Data Driven Developments.
For Unit Testing, BDD I achieve by using
Cucumber with Gherkin language and
DDD by using Scenario Outline with Examples
in my feature files or Apache POI to read the
data from external sources.
I use Maven as project build tool, in pom.xml
file I manage framework dependencies and plugins:
Dependencies selenium-java, WebDriver manager,
cucumber-java, cucumber- Junit
Plugins: Runner/FailedTestRunner, apache maven,
maven -cucumber reporting, cucumber html reporting
I use Page Object Model to simplify managing and
maintaining our framework for myself and my team.
POM Design Pattern allows me to locate web elements
only once, in their respective classes.
So that, if there are any problems with any web elements,
I know exactly where to go and how to fix it.
We created Singleton design pattern to allow our
framework to pass the Exact same instance of our driver
in the same runtime.
(one session: when you click run, selenium creates
one session. the session will end when the driver stops.)
1. I created a configuration.properties
I keep important test data such as: URL, Browser, credentials
so that we can reach them from one place to avoid hardcoding
2. I have a Pages Package where I identify and store
web elements variables and methods for each page of my application.
*I also use PageFactory pattern to instantiate
my web elements by using @FindBy
3. I trigger my framework from my Runner Class.
Runner classes that helps to generate code from Feature file.
*Runner class allows me to run different types of testing
suites that I created with my tags, such as smoke,
regression, mini-regression.
4. I have a resources folder with Feature Files
where I store my tests with scenarios or scenario outline.
*All feature files are written in Gherkin Language
and when we run the runner class with dryRun as true
it creates all the test steps.
5. I have a STEP DEFINITIONS package which
I implemented the actual code in the classes
so they are separated from the rest of the framework
6. Under step definitions I also have Hook Class
there which contain before and after annotations
to run code before(set up browser, maximize the window)
and after my tests (close the browser).
7. I also have Utilities packages where
I keep all my reusable methods and driver class
such as Browser Utilities, ConfigurationReader,
Driver class with singleton pattern, Application Utils, TestBase class
8. In Target folder - I have html report and rerun.txt file
and it stores my failed features files, and
I have Failed Test Runner class which will rerun
my failed classes. I also have excel folder where
I store excel files with testing data and
I have excel util in my utilities folder
with reusable methods to read and write in excel file.
As I mention all my feature files are written
in Gherkin language which helps non-technical
people to have clear understanding.
We are using JDBC library for Database testing
and Rest Assured for API testing.
I use Git for version control and Jenkins for
continuous integration, as well as Jira with
X-ray for management and defect tracking tool.
- I have different types of reports. But mainly
I use "maven-cucumber-reporting"
Also our framework supports Data Driving Testing
for external data resources like excel,
csv files, apache poi, scenario outline.
Our framework also generates cucumber html and json
format reports with steps from feature files.