test ui diff
Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
This commit is contained in:
parent
cbf59eb04a
commit
76bbc110a9
@ -66,13 +66,14 @@ steps:
|
|||||||
ORG_GRADLE_PROJECT_coverage: ''
|
ORG_GRADLE_PROJECT_coverage: ''
|
||||||
commands:
|
commands:
|
||||||
- scripts/checkIfRunDrone.sh $GIT_USERNAME $GIT_TOKEN $DRONE_PULL_REQUEST || exit 0
|
- scripts/checkIfRunDrone.sh $GIT_USERNAME $GIT_TOKEN $DRONE_PULL_REQUEST || exit 0
|
||||||
- emulator-headless -avd android-27 -no-snapshot -gpu swiftshader_indirect -no-window -no-audio &
|
- emulator-headless -avd android-27 -no-snapshot -gpu swiftshader_indirect -no-window -no-audio -skin 500x833 &
|
||||||
- ./gradlew assembleGplay
|
- ./gradlew assembleGplay
|
||||||
- ./gradlew assembleGplayDebug
|
- ./gradlew assembleGplayDebug
|
||||||
- ./wait_for_emulator.sh
|
- ./wait_for_emulator.sh
|
||||||
- ./gradlew jacocoTestGplayDebugUnitTestReport || scripts/uploadReport.sh $LOG_USERNAME $LOG_PASSWORD $DRONE_BUILD_NUMBER "Unit" $DRONE_PULL_REQUEST $GIT_USERNAME $GIT_TOKEN
|
- ./gradlew jacocoTestGplayDebugUnitTestReport || scripts/uploadReport.sh $LOG_USERNAME $LOG_PASSWORD $DRONE_BUILD_NUMBER "Unit" $DRONE_PULL_REQUEST $GIT_USERNAME $GIT_TOKEN
|
||||||
- ./gradlew installGplayDebugAndroidTest
|
- ./gradlew installGplayDebugAndroidTest
|
||||||
- ./gradlew createGplayDebugCoverageReport || scripts/uploadReport.sh $LOG_USERNAME $LOG_PASSWORD $DRONE_BUILD_NUMBER "IT" $DRONE_PULL_REQUEST $GIT_USERNAME $GIT_TOKEN
|
- ./gradlew createGplayDebugCoverageReport || scripts/uploadReport.sh $LOG_USERNAME $LOG_PASSWORD $DRONE_BUILD_NUMBER "IT" $DRONE_PULL_REQUEST $GIT_USERNAME $GIT_TOKEN
|
||||||
|
- ./gradlew executeScreenshotTests || scripts/uploadReport.sh $LOG_USERNAME $LOG_PASSWORD $DRONE_BUILD_NUMBER "Screenshot" $DRONE_PULL_REQUEST $GIT_USERNAME $GIT_TOKEN
|
||||||
- ./gradlew combinedTestReport
|
- ./gradlew combinedTestReport
|
||||||
- curl -o codecov.sh https://codecov.io/bash
|
- curl -o codecov.sh https://codecov.io/bash
|
||||||
- bash ./codecov.sh -t fc506ba4-33c3-43e4-a760-aada38c24fd5
|
- bash ./codecov.sh -t fc506ba4-33c3-43e4-a760-aada38c24fd5
|
||||||
|
14
build.gradle
14
build.gradle
@ -28,6 +28,7 @@ buildscript {
|
|||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.2.2"
|
classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.2.2"
|
||||||
classpath "commons-httpclient:commons-httpclient:3.1@jar" // remove after entire switch to lib v2
|
classpath "commons-httpclient:commons-httpclient:3.1@jar" // remove after entire switch to lib v2
|
||||||
|
classpath 'com.karumi:shot:3.1.0'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,8 +40,9 @@ apply plugin: 'kotlin-kapt'
|
|||||||
apply plugin: 'checkstyle'
|
apply plugin: 'checkstyle'
|
||||||
apply plugin: 'pmd'
|
apply plugin: 'pmd'
|
||||||
apply plugin: 'jacoco-android'
|
apply plugin: 'jacoco-android'
|
||||||
apply plugin: "com.github.spotbugs"
|
apply plugin: 'com.github.spotbugs'
|
||||||
apply plugin: "io.gitlab.arturbosch.detekt"
|
apply plugin: 'io.gitlab.arturbosch.detekt'
|
||||||
|
apply plugin: 'shot'
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
ktlint
|
ktlint
|
||||||
@ -101,6 +103,11 @@ spotbugs {
|
|||||||
toolVersion = '3.1.12'
|
toolVersion = '3.1.12'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shot {
|
||||||
|
appId = 'com.nextcloud.client'
|
||||||
|
instrumentationTestTask = 'connectedGenericDebugAndroidTest'
|
||||||
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
lintOptions {
|
lintOptions {
|
||||||
abortOnError false
|
abortOnError false
|
||||||
@ -126,7 +133,7 @@ android {
|
|||||||
targetSdkVersion 29
|
targetSdkVersion 29
|
||||||
|
|
||||||
// arguments to be passed to functional tests
|
// arguments to be passed to functional tests
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "com.nextcloud.client.ScreenshotTestRunner"
|
||||||
testInstrumentationRunnerArgument "TEST_SERVER_URL", "${NC_TEST_SERVER_BASEURL}"
|
testInstrumentationRunnerArgument "TEST_SERVER_URL", "${NC_TEST_SERVER_BASEURL}"
|
||||||
testInstrumentationRunnerArgument "TEST_SERVER_USERNAME", "${NC_TEST_SERVER_USERNAME}"
|
testInstrumentationRunnerArgument "TEST_SERVER_USERNAME", "${NC_TEST_SERVER_USERNAME}"
|
||||||
testInstrumentationRunnerArgument "TEST_SERVER_PASSWORD", "${NC_TEST_SERVER_PASSWORD}"
|
testInstrumentationRunnerArgument "TEST_SERVER_PASSWORD", "${NC_TEST_SERVER_PASSWORD}"
|
||||||
@ -369,6 +376,7 @@ dependencies {
|
|||||||
//androidTestImplementation "com.android.support:support-annotations:${supportLibraryVersion}"
|
//androidTestImplementation "com.android.support:support-annotations:${supportLibraryVersion}"
|
||||||
androidTestImplementation 'tools.fastlane:screengrab:1.2.0'
|
androidTestImplementation 'tools.fastlane:screengrab:1.2.0'
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||||
|
androidTestCompile('com.android.support.test.espresso:espresso-intents:2.2.1')
|
||||||
|
|
||||||
// jacocoAnt "org.jacoco:org.jacoco.ant:${jacocoVersion}"
|
// jacocoAnt "org.jacoco:org.jacoco.ant:${jacocoVersion}"
|
||||||
// jacocoAgent "org.jacoco:org.jacoco.agent:${jacocoVersion}"
|
// jacocoAgent "org.jacoco:org.jacoco.agent:${jacocoVersion}"
|
||||||
|
BIN
screenshots/com.nextcloud.client.TestIT_test.png
Normal file
BIN
screenshots/com.nextcloud.client.TestIT_test.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
@ -13,20 +13,23 @@ ID=$3
|
|||||||
USER=$1
|
USER=$1
|
||||||
PASS=$2
|
PASS=$2
|
||||||
TYPE=$4
|
TYPE=$4
|
||||||
|
FOLDER=$ID-$TYPE
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
if [ $TYPE = "IT" ]; then
|
if [ $TYPE = "IT" ]; then
|
||||||
cd build/reports/androidTests/connected/flavors/GPLAY
|
cd build/reports/androidTests/connected/flavors/GPLAY
|
||||||
else
|
elif [ $TYPE = "Unit" ]; then
|
||||||
cd build/reports/tests/testGplayDebugUnitTest
|
cd build/reports/tests/testGplayDebugUnitTest
|
||||||
|
else
|
||||||
|
cd build/reports/short/verification/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find . -type d -exec curl -u $USER:$PASS -X MKCOL $URL/$ID/$(echo {} | sed s#\./##) \;
|
find . -type d -exec curl -u $USER:$PASS -X MKCOL $URL/$FOLDER/$(echo {} | sed s#\./##) \;
|
||||||
find . -type f -exec curl -u $USER:$PASS -X PUT $URL/$ID/$(echo {} | sed s#\./##) --upload-file {} \;
|
find . -type f -exec curl -u $USER:$PASS -X PUT $URL/$FOLDER/$(echo {} | sed s#\./##) --upload-file {} \;
|
||||||
|
|
||||||
echo "Uploaded failing tests to https://www.kaminsky.me/nc-dev/android-integrationTests/$ID"
|
echo "Uploaded failing tests to https://www.kaminsky.me/nc-dev/android-integrationTests/$FOLDER"
|
||||||
|
|
||||||
curl -u $6:$7 -X POST https://api.github.com/repos/nextcloud/android/issues/$5/comments -d "{ \"body\" : \"$TYPE test failed: https://www.kaminsky.me/nc-dev/android-integrationTests/$ID \" }"
|
curl -u $6:$7 -X POST https://api.github.com/repos/nextcloud/android/issues/$5/comments -d "{ \"body\" : \"$TYPE test failed: https://www.kaminsky.me/nc-dev/android-integrationTests/$FOLDER \" }"
|
||||||
|
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -26,7 +26,9 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<manifest xmlns:tools="http://schemas.android.com/tools"
|
<manifest xmlns:tools="http://schemas.android.com/tools"
|
||||||
package="${applicationId}.test">
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="${applicationId}.test"
|
||||||
|
android:sharedUserId="${applicationId}.uid">
|
||||||
|
|
||||||
<uses-sdk tools:overrideLibrary="android_libs.ub_uiautomator" />
|
<uses-sdk tools:overrideLibrary="android_libs.ub_uiautomator" />
|
||||||
</manifest>
|
</manifest>
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Nextcloud Android client application
|
||||||
|
*
|
||||||
|
* @author Tobias Kaminsky
|
||||||
|
* Copyright (C) 2019 Tobias Kaminsky
|
||||||
|
* Copyright (C) 2019 Nextcloud GmbH
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.nextcloud.client;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import com.facebook.testing.screenshot.ScreenshotRunner;
|
||||||
|
|
||||||
|
import androidx.test.runner.AndroidJUnitRunner;
|
||||||
|
|
||||||
|
public class ScreenshotTestRunner extends AndroidJUnitRunner {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle args) {
|
||||||
|
super.onCreate(args);
|
||||||
|
ScreenshotRunner.onCreate(this, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void finish(int resultCode, Bundle results) {
|
||||||
|
ScreenshotRunner.onDestroy();
|
||||||
|
super.finish(resultCode, results);
|
||||||
|
}
|
||||||
|
}
|
68
src/androidTest/java/com/nextcloud/client/TestIT.java
Normal file
68
src/androidTest/java/com/nextcloud/client/TestIT.java
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Nextcloud Android client application
|
||||||
|
*
|
||||||
|
* @author Tobias Kaminsky
|
||||||
|
* Copyright (C) 2019 Tobias Kaminsky
|
||||||
|
* Copyright (C) 2019 Nextcloud GmbH
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.nextcloud.client;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
|
import android.app.Activity;
|
||||||
|
|
||||||
|
import com.facebook.testing.screenshot.Screenshot;
|
||||||
|
import com.nextcloud.client.onboarding.FirstRunActivity;
|
||||||
|
import com.owncloud.android.AbstractIT;
|
||||||
|
import com.owncloud.android.ui.activity.FileDisplayActivity;
|
||||||
|
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import androidx.test.core.app.ActivityScenario;
|
||||||
|
import androidx.test.espresso.Espresso;
|
||||||
|
import androidx.test.espresso.NoActivityResumedException;
|
||||||
|
import androidx.test.espresso.intent.rule.IntentsTestRule;
|
||||||
|
import androidx.test.rule.GrantPermissionRule;
|
||||||
|
|
||||||
|
|
||||||
|
public class TestIT extends AbstractIT {
|
||||||
|
@Rule public IntentsTestRule<FirstRunActivity> activityRule =
|
||||||
|
new IntentsTestRule<>(FirstRunActivity.class, true, false);
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public final GrantPermissionRule permissionRule = GrantPermissionRule.grant(
|
||||||
|
Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() throws InterruptedException {
|
||||||
|
Activity test = activityRule.launchActivity(null);
|
||||||
|
|
||||||
|
Screenshot.snapActivity(test).record();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void openOverflowMenu() throws InterruptedException {
|
||||||
|
try {
|
||||||
|
Espresso.openContextualActionModeOverflowMenu();
|
||||||
|
} catch (NoActivityResumedException e) {
|
||||||
|
ActivityScenario.launch(FileDisplayActivity.class);
|
||||||
|
Thread.sleep(1000);
|
||||||
|
Espresso.openContextualActionModeOverflowMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -469,7 +469,6 @@ public class TestSorting {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user