From manual tester to automation engineer. 1-2 hours per day.
JDK 17 download, IntelliJ setup, create project, Hello World, compile & run
Class, Object, Constructor, this keyword, Getters/Setters, Inheritance (extends), super, Method overriding
Add Selenium JAR/Maven dependency, ChromeDriver setup, WebDriver driver = new ChromeDriver(), driver.get(), driver.quit()
By.id(), By.name(), By.className(), By.tagName(), By.linkText(), By.partialLinkText(), findElement vs findElements
#id, .class, tag[attr='value'], :nth-child(), combinators (>, +, ~), chaining selectors
Absolute vs relative XPath, //tag[@attr='value'], text(), contains(), starts-with(), axes: parent, following-sibling, ancestor
.click(), .sendKeys(), .getText(), .getAttribute(), .isDisplayed(), .isEnabled(), .isSelected(), .clear()
Text fields, email, password, textarea, submit button, read output, form validation messages
switchTo().alert(), .accept(), .dismiss(), .getText(), .sendKeys(), confirm box, prompt box
switchTo().frame(index), switchTo().frame(nameOrId), switchTo().frame(element), switchTo().defaultContent(), nested frames
getWindowHandle(), getWindowHandles(), switchTo().window(), close vs quit, handle new tabs opened by links
Locate rows with //table//tr, cells with //td, dynamic row count, read cell by row+col index, search table for value
Debug Day 13-20 scripts, fix StaleElementException, NoSuchElementException, ElementNotInteractableException, refactor repeated code
Timing issues, race conditions, Thread.sleep() problems, implicit wait, page load timeout, script timeout
WebDriverWait, ExpectedConditions.visibilityOf(), .elementToBeClickable(), .presenceOfElementLocated(), .textToBe(), custom wait conditions
Delayed buttons, loading spinners, disappearing elements, progress bars, elements appearing after AJAX calls
AJAX calls, content loaded without page refresh, wait for data to render, stalenessOf(), retry patterns
manage().getCookies(), .addCookie(), .deleteCookie(), JavaScript executor for localStorage.getItem(), sessionStorage
Dynamic IDs, stale elements, overlapping elements, infinite scroll, lazy loading, hidden elements, auto-complete fields
Add TestNG dependency, @Test annotation, run tests, test output, testng.xml suite file, test groups
assertEquals, assertTrue, assertFalse, assertNotNull, @BeforeMethod, @AfterMethod, @BeforeClass, @AfterClass, test execution order
@DataProvider, return Object[][], parameterized tests, read test data from arrays, multiple login scenarios from one test
Why POM, separate test logic from page logic, one class per page, methods return page objects, benefits for maintenance
BasePage: click(), type(), waitForElement(), getText(). LoginPage extends BasePage, @FindBy, PageFactory.initElements()
Chain page objects: Login → Dashboard → Transfer → Verify. Assertions in test class, not page class. Test reads like English
Build ShopHomePage, ProductPage, CartPage, CheckoutPage. Write 3 E2E tests using your page objects
pom.xml structure, groupId, artifactId, <dependencies>, add Selenium + TestNG deps, mvn clean test, Maven lifecycle
git init, git add, git commit, git push, .gitignore, create GitHub repo, clone, branches, pull requests basics
Login flow, check balance, transfer money, view transaction history, logout. Full POM + TestNG suite
Calculate premium, apply for policy, upload documents, file a claim. Different domain, same framework pattern
Add Allure dependency, @Step, @Description, generate HTML report, screenshots on failure, attach logs
.github/workflows/test.yml, trigger on push, setup Java + Chrome, run mvn test, view results in Actions tab
Retry failed tests (IRetryAnalyzer), parallel execution in testng.xml, clean code, meaningful method names, push to GitHub
Record yourself: project structure, tools used (Maven, TestNG, Allure), CI/CD pipeline, how you handle test data, failure screenshots
LinkedIn update, GitHub README with setup instructions, highlight: frameworks, tools, CI/CD, real project links