diff --git a/proJect/pom.xml b/proJect/pom.xml
index 8427783..d25e191 100644
--- a/proJect/pom.xml
+++ b/proJect/pom.xml
@@ -12,11 +12,23 @@
11
+
+
+
+ io.qameta.allure
+ allure-bom
+ ${allure.version}
+ pom
+ import
+
+
+
+
org.junit.jupiter
junit-jupiter-api
- 5.9.2
+ 5.9.2
test
@@ -32,6 +44,51 @@
5.9.2
test
+
+
+ io.appium
+ java-client
+ 7.6.0
+
+
+
+ io.qameta.allure
+ allure-junit5
+ test
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 3.2.3
+
+
+ -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
+
+
+
+
+ org.aspectj
+ aspectjweaver
+ ${aspectj.version}
+
+
+
+
+
+ io.qameta.allure
+ allure-maven
+ 2.10.0
+
+ 2.25.0
+
+
+
+
+
+
\ No newline at end of file
diff --git a/proJect/src/main/java/anlov/java/Factorial.java b/proJect/src/main/java/anlov/java/Factorial.java
deleted file mode 100644
index 27a9dcf..0000000
--- a/proJect/src/main/java/anlov/java/Factorial.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package anlov.java;
-
-public class Factorial {
-
- public static long getFactorial(int num) {
- if (num < 0) {
- throw new IllegalArgumentException("Число должно быть положительным");
- }
- int factorial = 1;
- for (int i = 1; i <= num; i++) {
- factorial *= i;
- }
- return factorial;
- }
-}
diff --git a/proJect/src/main/java/anlov/java/Main.java b/proJect/src/main/java/anlov/java/Main.java
deleted file mode 100644
index c14deaa..0000000
--- a/proJect/src/main/java/anlov/java/Main.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package anlov.java;
-
-
-import java.util.Arrays;
-
-public class Main {
- public static void main(String[] args) {
- System.out.println(Factorial.getFactorial(3));
- }
-}
\ No newline at end of file
diff --git a/proJect/src/main/java/anlov/java/common/BasePage.java b/proJect/src/main/java/anlov/java/common/BasePage.java
new file mode 100644
index 0000000..f3ef168
--- /dev/null
+++ b/proJect/src/main/java/anlov/java/common/BasePage.java
@@ -0,0 +1,10 @@
+package anlov.java.common;
+
+import io.appium.java_client.android.AndroidDriver;
+import io.appium.java_client.android.AndroidElement;
+
+
+
+public class BasePage {
+ protected AndroidDriver driver = InstanceDriver.getDriver();
+}
\ No newline at end of file
diff --git a/proJect/src/main/java/anlov/java/common/Constants.java b/proJect/src/main/java/anlov/java/common/Constants.java
new file mode 100644
index 0000000..db033f9
--- /dev/null
+++ b/proJect/src/main/java/anlov/java/common/Constants.java
@@ -0,0 +1,5 @@
+package anlov.java.common;
+
+public class Constants {
+ public static final String useApk = "C:\\Users\\Haff\\IdeaProjects\\CourseOnJava\\proJect\\src\\test\\resources\\com.google.android.calculator-85006687.apk";
+}
diff --git a/proJect/src/main/java/anlov/java/common/InstanceDriver.java b/proJect/src/main/java/anlov/java/common/InstanceDriver.java
new file mode 100644
index 0000000..3deee9c
--- /dev/null
+++ b/proJect/src/main/java/anlov/java/common/InstanceDriver.java
@@ -0,0 +1,49 @@
+package anlov.java.common;
+
+
+import io.appium.java_client.android.AndroidDriver;
+import io.appium.java_client.android.AndroidElement;
+import io.appium.java_client.remote.MobileCapabilityType;
+import org.openqa.selenium.remote.DesiredCapabilities;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.concurrent.TimeUnit;
+public class InstanceDriver {
+
+ private static InstanceDriver instanceDriver;
+ private static AndroidDriver driver;
+
+ private InstanceDriver() {
+ }
+
+ public static AndroidDriver getDriver() {
+ if (instanceDriver == null) {
+ instanceDriver = new InstanceDriver();
+ }
+ return instanceDriver.initialize();
+ }
+
+ public static void quit() {
+ driver.quit();
+ instanceDriver = null;
+ driver = null;
+ }
+
+ private AndroidDriver initialize() {
+ if (driver == null) {
+ DesiredCapabilities capabilities = new DesiredCapabilities();
+ capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Pixel 3A API 34");
+ capabilities.setCapability(MobileCapabilityType.APP, Constants.useApk);
+ capabilities.setCapability(MobileCapabilityType.NO_RESET, true);
+
+ try {
+ driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
+ driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
+ } catch (MalformedURLException e) {
+ System.out.println(e.getMessage());
+ }
+ }
+ return driver;
+ }
+}
\ No newline at end of file
diff --git a/proJect/src/main/java/anlov/java/common/MainPage.java b/proJect/src/main/java/anlov/java/common/MainPage.java
new file mode 100644
index 0000000..92bf42f
--- /dev/null
+++ b/proJect/src/main/java/anlov/java/common/MainPage.java
@@ -0,0 +1,37 @@
+package anlov.java.common;
+
+public class MainPage extends BasePage {
+ private static final String idDigLocator = "com.google.android.calculator:id/digit_";
+ private static final String idCalculatLocator = "com.google.android.calculator:id/";
+
+ public MainPage takeExpress(String expression) {
+ String[] expres = expression.split(" ");
+ for (int i = 0; i < expres.length; i++) {
+ if (i % 2 == 0) driver.findElementById(idDigLocator + expres[i]).click();
+ else takeOperation(expres[i]);
+ }
+ return this;
+ }
+
+ private void takeOperation(String operation) {
+ switch (operation) {
+ case "+":
+ driver.findElementById(idCalculatLocator + "op_add").click();
+ break;
+ case "-":
+ driver.findElementById(idCalculatLocator + "op_sub").click();
+ break;
+ case "*":
+ driver.findElementById(idCalculatLocator + "op_mul").click();
+ break;
+ case "/":
+ driver.findElementById(idCalculatLocator + "op_div").click();
+ break;
+ }
+ }
+
+ public String getResult() {
+ driver.findElementById(idCalculatLocator + "eq").click();
+ return driver.findElementById(idCalculatLocator + "result_final").getText();
+ }
+}
\ No newline at end of file
diff --git a/proJect/src/test/java/BaseTest.java b/proJect/src/test/java/BaseTest.java
new file mode 100644
index 0000000..9722743
--- /dev/null
+++ b/proJect/src/test/java/BaseTest.java
@@ -0,0 +1,20 @@
+import io.appium.java_client.android.AndroidDriver;
+import io.appium.java_client.android.AndroidElement;
+import anlov.java.common.InstanceDriver;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+
+public class BaseTest {
+
+ protected static AndroidDriver driver;
+
+ @BeforeAll
+ public static void setup() {
+ driver = InstanceDriver.getDriver();
+ }
+
+ @AfterAll
+ public static void teardown() {
+ InstanceDriver.quit();
+ }
+}
\ No newline at end of file
diff --git a/proJect/src/test/java/CalculatorTest.java b/proJect/src/test/java/CalculatorTest.java
new file mode 100644
index 0000000..9f25dc3
--- /dev/null
+++ b/proJect/src/test/java/CalculatorTest.java
@@ -0,0 +1,19 @@
+import anlov.java.common.MainPage;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
+import org.openqa.selenium.support.PageFactory;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class CalculatorTest extends BaseTest {
+
+ protected MainPage mainPage = PageFactory.initElements(driver, MainPage.class);
+ @DisplayName("Check calculator's operations")
+ @ParameterizedTest
+ @CsvSource({"1 + 4, 5", "8 - 3, 5", "3 * 2, 6", "9 / 3, 3"})
+ public void checkOperations(String expression, String expected) {
+ String actual = mainPage.takeExpress(expression).getResult();
+ assertEquals(expected,actual);
+ }
+}
\ No newline at end of file
diff --git a/proJect/src/test/java/FactorialTest.java b/proJect/src/test/java/FactorialTest.java
deleted file mode 100644
index 618d24f..0000000
--- a/proJect/src/test/java/FactorialTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-import anlov.java.Factorial;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-
-
-class FactorialTest {
-
- @DisplayName("Check factorial if num equals 0")
- @Test
- void checkFactorial() {
- assertEquals(1, Factorial.getFactorial(0));
- }
-
- @DisplayName("Check factorial if num more 0")
- @ParameterizedTest
- @ValueSource(ints = {1, 2, 3, 4})
- void checkMoreZero(int num) {
- long[] numbers = {1, 2, 6, 24};
- assertEquals(numbers[num - 1], Factorial.getFactorial(num));
-
- }
-
- @Test
- void negativeInputShouldThrowException() {
- assertThrows(IllegalArgumentException.class,
- () -> Factorial.getFactorial(-5), "Число должно быть больше нуля");
- }
-}