architraw.pro

programming space

Author: Bartłomiej Kania

  • MyWhoosh custom workouts folder with example

    Where is custom workouts folder for MyWhoosh app?

    HERE:

    C:\Users\<YOUR_USERNAME>\AppData\Local\Packages\MyWhooshTechnologyService.644173E064ED2_eps1123pz0kt0\LocalCache\Local\MyWhoosh\Saved\PersistentDownloadDir\DefaultCache\CustomWorkouts
    
    MAKE SURE THAT YOU HAVE CHANGED:
    - <YOUR_USERNAME>
    - 644173E064ED2_eps1123pz0kt0 - this random id, can be different

    In that folder you should place your .json file with workout.

    Example workout.json file

    Workout:
    2min free ride
    12 min ride in Z2
    1min free ride

    {
      "Id": 1767595041,
      "Name": "15min",
      "Description": "my 15m workout",
      "Mode": "E_Ride",
      "ERGMode": "E_OFF",
      "IsRecovery": false,
      "IsIntervals": false,
      "FTPMode": "E_NoFTP",
      "IsTT": false,
      "IsTSS": false,
      "IsIF": false,
      "FTPMultiplier": 0,
      "StressPoint": 0,
      "Time": 1080,
      "CustomTagDescription": "",
      "CategoryId": 1,
      "SubcategoryId": 0,
      "Type": "E_Custom",
      "DisplayType": "E_byWatts",
      "StepCount": 3,
      "IsFavorite": false,
      "CompletedCount": 0,
      "WorkoutStepsArray": [
        {
          "Id": 1,
          "Pace": 1,
          "IntervalId": 0,
          "WorkoutMessage": [],
          "Rpm": 0,
          "StepType": "E_FreeRide",
          "Power": 0,
          "StartPower": 0,
          "EndPower": 0,
          "Time": 120,
          "IsManualGrade": false,
          "ManualGradeValue": 0,
          "ShowAveragePower": false,
          "FlatRoad": 0
        },
        {
          "Id": 2,
          "Pace": 1,
          "IntervalId": 0,
          "WorkoutMessage": [],
          "Rpm": 0,
          "StepType": "E_Normal",
          "Power": 0.75,
          "StartPower": 0,
          "EndPower": 0,
          "Time": 900,
          "IsManualGrade": false,
          "ManualGradeValue": 0,
          "ShowAveragePower": false,
          "FlatRoad": 0
        },
        {
          "Id": 3,
          "Pace": 1,
          "IntervalId": 0,
          "WorkoutMessage": [],
          "Rpm": 0,
          "StepType": "E_FreeRide",
          "Power": 0,
          "StartPower": 0,
          "EndPower": 0,
          "Time": 60,
          "IsManualGrade": false,
          "ManualGradeValue": 0,
          "ShowAveragePower": false,
          "FlatRoad": 0
        }
      ],
      "AuthorName": "",
      "WorkoutSteps": {
        "1": {
          "Id": 1,
          "Pace": 1,
          "IntervalId": 0,
          "WorkoutMessage": [],
          "Rpm": 0,
          "StepType": "E_FreeRide",
          "Power": 0,
          "StartPower": 0,
          "EndPower": 0,
          "Time": 120,
          "IsManualGrade": false,
          "ManualGradeValue": 0,
          "ShowAveragePower": false,
          "FlatRoad": 0
        },
        "2": {
          "Id": 2,
          "Pace": 1,
          "IntervalId": 0,
          "WorkoutMessage": [],
          "Rpm": 0,
          "StepType": "E_Normal",
          "Power": 0.75,
          "StartPower": 0,
          "EndPower": 0,
          "Time": 900,
          "IsManualGrade": false,
          "ManualGradeValue": 0,
          "ShowAveragePower": false,
          "FlatRoad": 0
        },
        "3": {
          "Id": 3,
          "Pace": 1,
          "IntervalId": 0,
          "WorkoutMessage": [],
          "Rpm": 0,
          "StepType": "E_FreeRide",
          "Power": 0,
          "StartPower": 0,
          "EndPower": 0,
          "Time": 60,
          "IsManualGrade": false,
          "ManualGradeValue": 0,
          "ShowAveragePower": false,
          "FlatRoad": 0
        }
      },
      "WorkoutstepsTMap": [],
      "WokoutAssociationId": 0,
      "IF": 0,
      "TSS": 15,
      "KJ": 0,
      "IsVODAvailable": false
    }

  • How to run test in Maven from console

    1. Navigate to folder with maven project.
    2. Run command:
    • run all tests from all java classes
    mvn test
    • run all test from one java class
    mvn test -Dtest=LoginTest
    • run one test from one java class
    mvn test -Dtest=LoginTest#success_login_test

  • POM.xml – example

    Here is example of POM.xml file

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.example</groupId>
        <artifactId>java-selenium-pom</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>25</maven.compiler.source>
            <maven.compiler.target>25</maven.compiler.target>
        </properties>
        <dependencies>
            <dependency>
                <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>5.14.1</version>
                <scope>test</scope>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-java</artifactId>
                <version>4.38.0</version>
            </dependency>
        </dependencies>
    
    </project>
  • TestBase.java – example

    This is example of TestBase.java

    //TestBase.java
    package base;
    
    import java.time.Duration;
    
    import org.junit.jupiter.api.AfterAll;
    import org.junit.jupiter.api.BeforeAll;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.firefox.FirefoxOptions;
    
    public class TestBase {
    
        public static WebDriver driver;
        public static FirefoxOptions options;
    
        @BeforeAll
        public static void setup() {
            options = new FirefoxOptions();
            options.addArguments("--headless");
            driver = new FirefoxDriver(options);
            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
        }
    
        @AfterAll
        public static void teardown() {
            if (driver != null) {
                driver.quit();
            }
        }
    
    }
  • LoginTest.java – example

    //LoginTest.java
    
    package tests;
    
    import static org.junit.jupiter.api.Assertions.assertEquals;
    
    import org.junit.jupiter.api.Test;
    
    import base.TestBase;
    import pages.LoginPage;
    
    public class LoginTest extends TestBase {
    
        @Test
        public void success_login_test() {
            // arrange
            LoginPage loginPage = new LoginPage(driver);
            InventoryPage inventory = new InventoryPage(driver);
            // act
            loginPage.login("standard_user", "secret_sauce");
            // assert
            assertEquals(true, inventory.inventory_container_is_displayed());
        }
    
    }
  • LoginPage.java – exmaple

    Here is example of LoginPage.java

    //LoginPage.java
    package pages;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    
    public class LoginPage {
        private WebDriver driver;
    
        private By usernameField = By.id("username");
        private By passwordField = By.id("password");
        private By loginBtn = By.id("loginBtn");
    
        public LoginPage(WebDriver driver) {
            this.driver = driver;
        }
    
        public void login(String user, String pass) {
            driver.findElement(usernameField).sendKeys(user);
            driver.findElement(passwordField).sendKeys(pass);
            driver.findElement(loginBtn).click();
        }
    }
  • Page Object Model – folder structure

    Here is folder structure for Page Object Model

    project-root/
    ├── pom.xml
    ├── src/
    │   ├── main/
    │   │   └── java/
    │   │       └── pages/
    │   │           ├── LoginPage.java
    │   │           ├── HomePage.java
    │   │           └── BasePage.java
    │   └── test/
    │       ├── java/
    │       │   ├── tests/
    │       │   │   ├── LoginTest.java
    │       │   │   └── HomeTest.java
    │       │   ├── base/
    │       │   │   └── TestBase.java
    │       │   └── utils/
    │       │       └── TestData.java
    │       └── resources/
    │           ├── config.properties
    │           └── testdata.json
    └── target/
    

  • Hello world

    Hello internet!