Software All-Encompassing QA Test Automation Project For Apple. Using Cucumber JVM BDD with Selenium and JUnit 5 Test Framework. TeamCity was used as CI/CD. Maven used as Runner and Builder. Automated tests are Designed for be Easy-To-Read, Easy-To-Maintain, Easy-To-Understand and Long-Use. OOP and Clean File Architecture used. Includes only smoke tests, regression, integration and ad-hoc tests will be added later. The tests will be perform 100% automation 0% manually. The tests are optimized for Chrome, Edge, Firefox and Safari browsers.
The entire project is designed to be run and built with Maven. If you want to run and build with JUnit 5, you need to make some changes to the project.
All Feature files located in /resources/features
All Page Objects located in /abstractions/pageObjects
All Step Definitions located in /abstractions/stepDefinitions
All Utils located in /abstractions/utils
All Helpers located in /abstractions/helpers
- TeamCity Pro 2022
- Java JDK 18
- IntelliJ IDE
- Cucumber Extension
- Cucumber+ Extension
- Gherkin Extension
- JUnit Extension
- Maven Builder
If you don't want to be Authentication, you can fork the project.
[Requires Authentication]
https://github.com/Berkantyuks/QATestCucumberSeleniumApple.git
[No Need Authentication] but you need generate own token key.
https://github.com/<your_username>/QATestCucumberSeleniumApple.git
Command Prompt/Power Shell (Windows OS) or Open terminal (for MAC OSX) or and navigate to the project directory type mvn clean test
command to run features. With this command it will invoke the default Chrome and will execute the tests.
- To run features on specific browser use,
mvn test "-Dbrowser=<browser_name>"
browser_name can be one of following but make sure that browser’s driver file are present and specified in system variable. Like "chrome", "firefox", "edge" and "safari".
Note that the web drivers in this project are adjusted according to my agent browser version. For example, if you are using chrome, you should download a driver version compatible with your browser.
- To run specific feature if you want only search.feature, Run
mvn test -Dcucumber.options="classpath:features/Search.feature"
Main
├─ .gitignore
├─ .idea
│ ├─ .gitignore
│ ├─ compiler.xml
│ ├─ jarRepositories.xml
│ ├─ misc.xml
│ ├─ uiDesigner.xml
│ └─ vcs.xml
├─ README.md
├─ pom.xml
└─ src
└─ test
├─ java
│ └─ abstractions
│ ├─ RuntimeTest.java
│ ├─ helpers
│ │ ├─ AbstractHelper.java
│ │ ├─ HelperInterface.java
│ │ ├─ NavigateHelper.java
│ │ └─ ProductHelper.java
│ ├─ pageObjects
│ │ ├─ Bag.java
│ │ ├─ Footer.java
│ │ ├─ Mac
│ │ │ ├─ BuyMac
│ │ │ │ ├─ BuyMac.java
│ │ │ │ └─ CustomizeMac.java
│ │ │ ├─ IMac
│ │ │ │ ├─ IMac.java
│ │ │ │ └─ Models
│ │ │ │ └─ IMAC_24.java
│ │ │ ├─ Mac.java
│ │ │ ├─ MacInterface.java
│ │ │ ├─ MacMini
│ │ │ │ ├─ MacMini.java
│ │ │ │ └─ Models
│ │ │ │ └─ MacMini_M1.java
│ │ │ ├─ MacPro
│ │ │ │ └─ MacPro.java
│ │ │ ├─ MacStudio
│ │ │ │ ├─ MacStudio.java
│ │ │ │ └─ Models
│ │ │ │ └─ MacStudio_M1.java
│ │ │ ├─ MacbookAir
│ │ │ │ ├─ MBA.java
│ │ │ │ └─ Models
│ │ │ │ ├─ MBA_M1.java
│ │ │ │ └─ MBA_M2.java
│ │ │ └─ MacbookPro
│ │ │ ├─ MBP.java
│ │ │ └─ Models
│ │ │ ├─ MBP_13.java
│ │ │ ├─ MBP_14.java
│ │ │ └─ MBP_16.java
│ │ ├─ Navbar.java
│ │ └─ SearchResults.java
│ ├─ stepDefinitions
│ │ ├─ Hook.java
│ │ ├─ ProductStepDefinitions.java
│ │ ├─ SearchStepDefinitions.java
│ │ └─ StepDefinitionsInterface.java
│ └─ utils
│ ├─ AssertionMethods.java
│ ├─ ClickElementMethods.java
│ ├─ Constants
│ │ ├─ Global.java
│ │ ├─ ModelConfigurations.java
│ │ └─ ProductFamily.java
│ ├─ DriverManager.java
│ ├─ DriverWaits.java
│ ├─ Exceptions
│ │ ├─ ConfigurationNotMatchByDefinedException.java
│ │ ├─ MacFamilyNotMatchByGivenException.java
│ │ ├─ ModelNotMatchByGivenException.java
│ │ ├─ NavbarItemNotMatchByGivenException.java
│ │ ├─ StringNotContainsByGivenException.java
│ │ └─ StringNotMatchByGivenException.java
│ ├─ InputMethods.java
│ ├─ Locators.java
│ ├─ NavigateMethods.java
│ ├─ SelectElementByType.java
│ ├─ Transformer.java
│ ├─ UtilsInterface.java
│ └─ expectedConditions
│ ├─ ClickabilityOfElement.java
│ ├─ ClickabilityOfElementByLocator.java
│ ├─ InvisibilityOfElement.java
│ ├─ InvisibilityOfElementByLocator.java
│ ├─ VisibilityOfElement.java
│ └─ VisibilityOfElementByLocator.java
└─ resources
├─ drivers
│ ├─ chromedriver.exe
│ ├─ geckodriver.exe
│ └─ msedgedriver.exe
└─ features
├─ Product.feature
└─ Search.feature