Skip to content

added java client test #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Jul 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 68 additions & 4 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
on:
workflow_dispatch:


name: Appium Flutter Integration Driver
jobs:
Java_Test:
Expand Down Expand Up @@ -40,32 +39,97 @@ jobs:
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Setup gradle
uses: gradle/actions/setup-gradle@v3
- name: run tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
target: ${{ matrix.target }}
arch: x86_64
profile: Nexus 6
working-directory: ${{ github.workspace }}/flutter-by/java
script: |
echo ${{ env }}
adb devices
node --version
mkdir ${{ github.workspace }}/appium-logs
npm install -g wait-on
npm install -g appium
appium server -ka 800 -pa /wd/hub > appium-logs/log1.txt &
appium driver install uiautomator2
appium driver install --source npm appium-flutter-integration-driver
appium driver list
appium plugin list
adb logcat > ${{ github.workspace }}/appium-logs/flutter.txt &
cd ${{ github.workspace }}/flutter-by/java
./gradlew clean build
# appium server -pa=/wd/hub & wait-on http://127.0.0.1:4723/wd/hub/status &&
- name: upload appium logs
if: always()
uses: actions/upload-artifact@v4
with:
name: appium-logs
path: ${{ github.workspace }}/appium-logs
path: ${{ github.workspace }}/flutter-by/java/build/reports
WDIO_Test:
runs-on: ubuntu-latest
strategy:
matrix:
api-level: [ 29 ]
target: [ google_apis ]
steps:
- name: Check out my other private repo
uses: actions/checkout@master
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'adopt'
- name: Setup Android SDK
uses: android-actions/setup-android@v2.0.10

- name: 'List files'
run: |
release_info=$(curl -s https://api.github.com/repos/AppiumTestDistribution/appium-flutter-server/releases/latest)
asset_urls=$(echo "$release_info" | grep "browser_download_url" | cut -d '"' -f 4)
android_app=$(echo "$asset_urls" | head -n 1)
echo "$android_app"
ios_app=$(echo "$asset_urls" | tail -n 1)
echo "$ios_app"
curl -LO $android_app
ls ${{ github.workspace }}
echo "APP_PATH=${{ github.workspace }}/app-debug.apk" >> $GITHUB_ENV
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: run tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
target: ${{ matrix.target }}
arch: x86_64
profile: Nexus 6
working-directory: ${{ github.workspace }}/flutter-by/wdio-flutter-by-service
script: |
echo ${{ env }}
adb devices
node --version
mkdir ${{ github.workspace }}/appium-logs
npm install
npm run build
npm install -g wait-on
npm install -g appium
appium driver list
appium plugin list
adb logcat > ${{ github.workspace }}/appium-logs/flutter.txt &
APP_PATH=${{ env.APP_PATH }} npm run wdio-android
# appium server -pa=/wd/hub & wait-on http://127.0.0.1:4723/wd/hub/status &&
- name: upload appium logs
if: always()
uses: actions/upload-artifact@v4
with:
name: appium-logs
path: ${{ github.workspace }}/flutter-by/java/build/reports
26 changes: 21 additions & 5 deletions flutter-by/java/src/test/java/FlutterByTests.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import io.appium.java_client.android.options.UiAutomator2Options;
import io.appium.java_client.service.local.AppiumDriverLocalService;
import io.appium.java_client.service.local.AppiumServiceBuilder;
import io.appium.java_client.service.local.flags.GeneralServerFlag;
import org.devicefarm.FlutterBy;
import org.devicefarm.FlutterCommands;
import org.devicefarm.models.*;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.*;
import io.appium.java_client.android.AndroidDriver;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebElement;

Expand All @@ -17,9 +17,10 @@

public class FlutterByTests {
private AndroidDriver driver;
protected static final int PORT = 4723;
private static final String USERNAME = "admin";
private static final String PASSWORD = "1234";

private static AppiumDriverLocalService service;
public void performLogin() {
WebElement userNameTxtField = driver.findElement(FlutterBy.key("username_text_field"));
WebElement passWordTxtField = driver.findElement(FlutterBy.key("password_text_field"));
Expand All @@ -38,6 +39,21 @@ public void openScreen(String screenTitle) {
element.click();
}

@BeforeAll
public static void beforeClass() {
service = new AppiumServiceBuilder()
.withIPAddress("127.0.0.1")
.usingPort(PORT)
.withArgument(GeneralServerFlag.BASEPATH,"/wd/hub").build();
service.start();
}

@AfterAll public static void afterClass() {
if (service != null) {
service.stop();
}
}

@BeforeEach
public void setUp() throws MalformedURLException {
UiAutomator2Options options = new UiAutomator2Options()
Expand Down
19 changes: 19 additions & 0 deletions flutter-by/wdio-flutter-by-service/android.conf.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// @ts-nocheck
import { join } from 'node:path';
import { config as baseConfig } from './wdio.conf.ts';

export const config: WebdriverIO.Config = {
...baseConfig,
capabilities: [
{
// capabilities for local Appium web tests on an Android Emulator
platformName: 'Android',
'appium:automationName': 'FlutterIntegration',
'appium:orientation': 'PORTRAIT',
'appium:app':
process.env.APP_PATH || join(process.cwd(), 'app-debug.apk'),
'appium:newCommandTimeout': 240,
'appium:flutterServerLaunchTimeout': 10000,
},
],
};
Loading