And I have created few projects to show usage of different automation testing tools.
Repo | Build Status | Release Status |
---|---|---|
Cucumber web Demo | ||
Cucumber api Demo | ||
Specflow web/api Demo | ||
Cypress Demo | ||
Appium Demo |
Web part is a Java Maven project which using Selenium, Junit, Cucumber under Page Object Design Pattern.
- It can run with different browsers, also provides Headless option. (default by chrome you can find setting in config.properties)
- It allows parallel test execution by using maven-surefire-plugin
- In
RunCucumber
file, you can run scenarios with a particular tag. like @chrome, @headless, @api, @countdown - Using
dynamic XPath
andWait till
to locate UI elements - Using
PicoContainer
as Dependency Injection (DI) Containers to Sharing Test Context between Cucumber Step Definitions - Using
ScenarioContext
&Java Hash Map
to store and share test date between steps
There are multiple options to test Api eg: Postman, Swagger. In this Demo, I am using Rest Assured which is one of the most used library for REST API automation testing.\
- Parallel test execution by using
maven-surefire-plugin
- Using
PicoContainer
as Dependency Injection (DI) Containers to Sharing Test Context between Cucumber Step Definitions - Using
ScenarioContext
&Java Hash Map
to store and share test date between steps Json Schema
validation- Deserialization with Generics using
io.restassured.mapper.TypeRef
to deserialize the response to a container with a generic type - Authentication
- Specification Re-use by using
RequestSpecBuilder
orResponseSpecBuilder.
- Verifying Response Data: status code, status line, cookies, headers, content type and body
- Specifying Request Data: headers, cookies, body and content type.
- Parallel Execution by Specflow.Nunit
- Customize BoDi container which used in before scenario
Hook
, in this demo, I addeddriver
,pages
to container - Use Explicit wait to help to findElement call WebDriverWait until the dynamically added element from the script has been added to the DOM
WebElement foo = new WebDriverWait(driver, Duration.ofSeconds(3)).until(driver -> driver.findElement(By.name("q")));```
- Tracking log using Nlog, see in folder specflow-uis
- Use "Page Object Model" reason behind is Code becomes less and optimized because of the reusable page methods in the POM classes, also it makes code makes the code cleaner and easy to understand.
- Logging
- Nlog
- CI - Azure
- SpecFlow+ LivingDoc
- Validate Response using RestSharp
- Response Status
- Response Headers
- Response Body
- Send and verify HTTP request
- Post/Get/Delete/Put
- Execute request with Powerful Generic Deserialization (more explanations please see below)
- Parallel Execution using Context dependency Injection(see videos)
- Reporting
- specflow-living doc
- Test Assertion by Specflow.assist CompareToInstance
- Include Authenticators
- JWT
- Basic Auth
- end-to-end
- Integration testing which only written in
- JavaScript
- Page Object
- Continuous Integration
- Testing frameworks TestNG\
- All capabilities, playback and delay settings are configurable through config file.\
- Supports video recording of tests\
- Supports capturing screenshots for Android\
- Provides inbuilt assertions to verify the device elements.\
- Supports Android Emulators.