From e5a01212f6a99dd4d853bc635cc6ab6943ddb376 Mon Sep 17 00:00:00 2001 From: Md Shahnewaz Zaman Date: Tue, 7 Feb 2023 17:37:27 -0500 Subject: [PATCH] Add files via upload --- javaBoilerplate/README.md | 29 ++++++ javaBoilerplate/pom.xml | 95 +++++++++++++++++++ .../java/com/insight/javaBoilerplate/App.java | 13 +++ .../javaBoilerplate/pageObjects/BasePage.java | 24 +++++ .../pageObjects/LoginPage.java | 25 +++++ .../javaBoilerplate/testCases/BaseTest.java | 50 ++++++++++ .../javaBoilerplate/testCases/LaunchTest.java | 50 ++++++++++ .../javaBoilerplate/testCases/LoginTest.java | 28 ++++++ .../javaBoilerplate/testCases/Test.java | 45 +++++++++ .../javaBoilerplate/utilities/Data.java | 10 ++ javaBoilerplate/testNGSuite.xml | 13 +++ 11 files changed, 382 insertions(+) create mode 100644 javaBoilerplate/README.md create mode 100644 javaBoilerplate/pom.xml create mode 100644 javaBoilerplate/src/main/java/com/insight/javaBoilerplate/App.java create mode 100644 javaBoilerplate/src/test/java/com/insight/javaBoilerplate/pageObjects/BasePage.java create mode 100644 javaBoilerplate/src/test/java/com/insight/javaBoilerplate/pageObjects/LoginPage.java create mode 100644 javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/BaseTest.java create mode 100644 javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/LaunchTest.java create mode 100644 javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/LoginTest.java create mode 100644 javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/Test.java create mode 100644 javaBoilerplate/src/test/java/com/insight/javaBoilerplate/utilities/Data.java create mode 100644 javaBoilerplate/testNGSuite.xml diff --git a/javaBoilerplate/README.md b/javaBoilerplate/README.md new file mode 100644 index 0000000..f2af429 --- /dev/null +++ b/javaBoilerplate/README.md @@ -0,0 +1,29 @@ +Architecture: Selenium uses the WebDriver API to interact between web browsers and browser drivers. It operates by translating test cases into JSON and sending them to the browsers, which then execute the commands and send an HTTP response back. +Architecture: Playwright uses a WebSocket connection rather than the WebDriver API and HTTP. This stays open for the duration of the test, so everything is sent on one connection. This is one reason why Playwright’s execution speeds tend to be faster. + +## Setup Allure result +``` +Pre-configure +- Folow the instruction from the website - https://docs.qameta.io/allure/#_testng +- Set up POM File +``` +``` +- Navigate to the URL - https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ +- Click on the download latest version like: 2.20.1 +- Download zip file +- Extract it +- Set up environment variable upto bin folder +``` + +``` +- Open up the terminal +- > allure --version (version should be available) +- > allure serve allure-result (Result will open on the browser) +``` + +## Run/Execute the test suite +``` +- On the test case click run play button or right click on the class file and click on run test +- Right click on the testNG.xml file and clcik on run test +- open up the terminal and type > mvn clean test +``` diff --git a/javaBoilerplate/pom.xml b/javaBoilerplate/pom.xml new file mode 100644 index 0000000..8d049a3 --- /dev/null +++ b/javaBoilerplate/pom.xml @@ -0,0 +1,95 @@ + + + + 4.0.0 + + com.insight.javaBoilerplate + javaBoilerplate + 1.0-SNAPSHOT + + javaBoilerplate + + http://www.example.com + + + 1.9.19 + UTF-8 + 1.8 + 1.8 + 1.28.1 + 7.7.1 + 2.20.0 + 2.14.0 + 3.8.0 + 2.22.1 + + + + + com.microsoft.playwright + playwright + ${playwright.version} + + + org.testng + testng + ${testng.version} + test + + + io.qameta.allure + allure-testng + ${allure.testng.version} + test + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + true + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + integration-test + + test + + + true + + testNGSuite.xml + + + -javaagent:"${settings.localRepository}\org\aspectj\aspectjweaver\${aspectj.version}\aspectjweaver-${aspectj.version}.jar" + + + + + + + org.aspectj + aspectjweaver + ${aspectj.version} + + + + + + + diff --git a/javaBoilerplate/src/main/java/com/insight/javaBoilerplate/App.java b/javaBoilerplate/src/main/java/com/insight/javaBoilerplate/App.java new file mode 100644 index 0000000..d8461a8 --- /dev/null +++ b/javaBoilerplate/src/main/java/com/insight/javaBoilerplate/App.java @@ -0,0 +1,13 @@ +package com.insight.javaBoilerplate; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/pageObjects/BasePage.java b/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/pageObjects/BasePage.java new file mode 100644 index 0000000..2d89f4c --- /dev/null +++ b/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/pageObjects/BasePage.java @@ -0,0 +1,24 @@ +package com.insight.javaBoilerplate.pageObjects; + +import com.microsoft.playwright.Page; + +public class BasePage { + + public static Page page; + + public BasePage(Page page){ + this.page = page; + } + public void click(String locator){ + page.click(locator); + } + public void fill(String locator, String value){ + page.fill(locator, value); + } + public void mouseHover(String locator){ + page.hover(locator); + + } + + +} diff --git a/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/pageObjects/LoginPage.java b/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/pageObjects/LoginPage.java new file mode 100644 index 0000000..f268ab8 --- /dev/null +++ b/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/pageObjects/LoginPage.java @@ -0,0 +1,25 @@ +package com.insight.javaBoilerplate.pageObjects; + +import com.microsoft.playwright.Page; + +public class LoginPage extends BasePage{ + public LoginPage(Page page) { + super(page); + } + + String abTesting = "a[href='/abtest']"; + String addRemoveElement = "a[href='/add_remove_elements/']"; + String BasicAuth = "a[href='/basic_auth']"; + + public String getAbTesting() { + return abTesting; + } + + public String getAddRemoveElement() { + return addRemoveElement; + } + + public String getBasicAuth() { + return BasicAuth; + } +} diff --git a/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/BaseTest.java b/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/BaseTest.java new file mode 100644 index 0000000..79605e8 --- /dev/null +++ b/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/BaseTest.java @@ -0,0 +1,50 @@ +package com.insight.javaBoilerplate.testCases; + +import com.microsoft.playwright.Browser; +import com.microsoft.playwright.BrowserType; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.Playwright; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeSuite; + +public class BaseTest { + + private Playwright playwright; + public Browser browser; + public Page page; + + @BeforeClass + public void setUp(){ + System.out.println("Log file configuration goes here"); + System.out.println("Database configuration goes here"); + } + + public Browser getBrowser(String browserName) { + playwright = Playwright.create(); + switch (browserName) { + case "chrome": + return playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel("chrome").setHeadless(false)); + case "headless": + return playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false)); + case "firefox": + return playwright.firefox().launch(new BrowserType.LaunchOptions().setChannel("firefox").setHeadless(false)); + case "webkit": + return playwright.webkit().launch(new BrowserType.LaunchOptions().setHeadless(false)); + default: + throw new IllegalArgumentException(); + } + } + public void navigate(Browser browser, String url){ + this.browser = browser; + page = this.browser.newPage(); + page.navigate(url); + } + @AfterMethod + public void quit(){ + browser.close(); + page.close(); + playwright.close(); + } + +} diff --git a/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/LaunchTest.java b/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/LaunchTest.java new file mode 100644 index 0000000..953ffae --- /dev/null +++ b/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/LaunchTest.java @@ -0,0 +1,50 @@ +package com.insight.javaBoilerplate.testCases; + +import com.microsoft.playwright.*; +import org.testng.annotations.Test; + +import java.awt.*; +import java.nio.file.Paths; + +public class LaunchTest +{ + @Test + public void playwrightTest() + { + + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + double width = screenSize.getWidth(); + double height = screenSize.getHeight(); + + Playwright playwright = Playwright.create(); + //.setSlowMo(50)); + Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false)); + //Without private mode + // BrowserContext browserContext = playwright.chromium().launchPersistentContext(Paths.get(""), new BrowserType.LaunchPersistentContextOptions().setHeadless(false)); + // Set browser executable path + // Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setExecutablePath(Paths.get("chrome.exe/msedge.exe/firefox.exe"))); + // Browser set edge + // Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel("msedge").setHeadless(false)); + // Chrome + // Browser browser = playwright.firefox().launch(new BrowserType.LaunchOptions().setHeadless(false)); + // Firefox + // Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel("chrome").setHeadless(false)); + // Maximizing Browser + // BrowserContext browserContext = browser.newContext(new Browser.NewContextOptions().setViewportSize((int)width, (int)height)); + + // Simple way to maximize +// ArrayList argument = new ArrayList<>(); +// argument.add("--start-maximized"); +// Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel("chrome").setHeadless(false).setArgs(argument)); +// BrowserContext browserContext = browser.newContext(new Browser.NewContextOptions().setViewportSize(null)); + + Page page = browser.newPage(); + page.navigate("https://reqres.in/"); + System.out.println(page.title()); + + page.close(); + playwright.close(); + + } + +} diff --git a/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/LoginTest.java b/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/LoginTest.java new file mode 100644 index 0000000..6ad9753 --- /dev/null +++ b/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/LoginTest.java @@ -0,0 +1,28 @@ +package com.insight.javaBoilerplate.testCases; + +import com.insight.javaBoilerplate.pageObjects.LoginPage; +import com.insight.javaBoilerplate.utilities.Data; +import com.microsoft.playwright.Browser; +import org.testng.annotations.Test; + +public class LoginTest extends BaseTest{ + @Test + public void loginTest() throws InterruptedException { + Browser browser = getBrowser(Data.CHROME); + navigate(browser, Data.URL); + + LoginPage loginPage = new LoginPage(page); + loginPage.click(loginPage.getAbTesting()); + Thread.sleep(1000); + page.goBack(); + Thread.sleep(1000); + loginPage.click(loginPage.getAddRemoveElement()); + Thread.sleep(1000); + page.goBack(); + Thread.sleep(1000); + loginPage.click(loginPage.getBasicAuth()); + Thread.sleep(1000); + page.goBack(); + Thread.sleep(1000); + } +} diff --git a/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/Test.java b/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/Test.java new file mode 100644 index 0000000..c1040f3 --- /dev/null +++ b/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/testCases/Test.java @@ -0,0 +1,45 @@ +package com.insight.javaBoilerplate.testCases; + +import com.microsoft.playwright.Browser; +import com.microsoft.playwright.BrowserType; +import com.microsoft.playwright.Page; +import com.microsoft.playwright.Playwright; + +import java.awt.*; + +public class Test +{ + @org.testng.annotations.Test + public void playwrightTest() + { + + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + double width = screenSize.getWidth(); + double height = screenSize.getHeight(); + + Playwright playwright = Playwright.create(); + //.setSlowMo(50)); + Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false)); + // Browser set edge + // Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel("msedge").setHeadless(false)); + // Chrome + // Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel("chrome").setHeadless(false)); + // Maximizing Browser + // BrowserContext browserContext = browser.newContext(new Browser.NewContextOptions().setViewportSize((int)width, (int)height)); + + // Simple way to maximize +// ArrayList argument = new ArrayList<>(); +// argument.add("--start-maximized"); +// Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel("chrome").setHeadless(false).setArgs(argument)); +// BrowserContext browserContext = browser.newContext(new Browser.NewContextOptions().setViewportSize(null)); + + Page page = browser.newPage(); + page.navigate("https://reqres.in/"); + System.out.println(page.title()); + + page.close(); + playwright.close(); + + } + +} diff --git a/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/utilities/Data.java b/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/utilities/Data.java new file mode 100644 index 0000000..3b1c9ac --- /dev/null +++ b/javaBoilerplate/src/test/java/com/insight/javaBoilerplate/utilities/Data.java @@ -0,0 +1,10 @@ +package com.insight.javaBoilerplate.utilities; + +public class Data { + + public static final String URL = "https://the-internet.herokuapp.com/"; + public static final String FIREFOX = "firefox"; + public static final String CHROME = "chrome"; + public static final String WEBKIT = "webkit"; + +} diff --git a/javaBoilerplate/testNGSuite.xml b/javaBoilerplate/testNGSuite.xml new file mode 100644 index 0000000..d4e8641 --- /dev/null +++ b/javaBoilerplate/testNGSuite.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file