├── plugin ├── src │ ├── py │ │ ├── __init__.py │ │ └── android_screenshot_tests │ │ │ ├── fixtures │ │ │ ├── sdcard │ │ │ │ └── screenshots │ │ │ │ │ └── com.foo │ │ │ │ │ └── screenshots-default │ │ │ │ │ ├── one_dump.xml │ │ │ │ │ ├── com.foo.ScriptsFixtureTest_testSecondScreenshot.png │ │ │ │ │ ├── com.foo.ScriptsFixtureTest_testGetTextViewScreenshot.png │ │ │ │ │ ├── metadata_no_errors.xml │ │ │ │ │ └── metadata.xml │ │ │ ├── dummy.zip │ │ │ └── AndroidManifest.xml │ │ │ ├── example.apk │ │ │ ├── background.png │ │ │ ├── __init__.py │ │ │ ├── default.css │ │ │ ├── default.js │ │ │ ├── metadata.py │ │ │ ├── simple_puller.py │ │ │ ├── common.py │ │ │ ├── test_common.py │ │ │ ├── aapt.py │ │ │ ├── test_simple_puller.py │ │ │ ├── test_metadata.py │ │ │ ├── test_aapt.py │ │ │ ├── recorder.py │ │ │ ├── metadata_fixture.xml │ │ │ └── test_recorder.py │ ├── main │ │ ├── resources │ │ │ └── META-INF │ │ │ │ └── gradle-plugins │ │ │ │ └── com.facebook.testing.screenshot.properties │ │ └── groovy │ │ │ └── com │ │ │ └── facebook │ │ │ └── testing │ │ │ └── screenshot │ │ │ └── build │ │ │ └── ScreenshotsPlugin.groovy │ └── test │ │ └── groovy │ │ └── com │ │ └── facebook │ │ └── testing │ │ └── screenshot │ │ └── build │ │ └── ScreenshotsPluginTest.groovy ├── gradle.properties └── build.gradle ├── settings.gradle ├── examples ├── app-example-androidjunitrunner │ ├── app │ │ ├── .gitignore │ │ ├── src │ │ │ ├── main │ │ │ │ ├── res │ │ │ │ │ ├── values │ │ │ │ │ │ ├── strings.xml │ │ │ │ │ │ ├── colors.xml │ │ │ │ │ │ ├── dimens.xml │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── values-v21 │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── values-w820dp │ │ │ │ │ │ └── dimens.xml │ │ │ │ │ ├── menu │ │ │ │ │ │ └── menu_main.xml │ │ │ │ │ └── layout │ │ │ │ │ │ ├── content_main.xml │ │ │ │ │ │ └── activity_main.xml │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── screenshots │ │ │ │ │ └── MainActivity.java │ │ │ ├── test │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── screenshots │ │ │ │ │ └── ExampleUnitTest.java │ │ │ └── androidTest │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── screenshots │ │ │ │ ├── CustomTestRunner.java │ │ │ │ └── MainActivityTest.java │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── screenshots │ │ │ ├── com.example.screenshots.MainActivityTest_mainActivityTest.png │ │ │ └── com.example.screenshots.MainActivityTest_mainActivityTestSettingsOpen.png │ │ ├── local.properties │ │ ├── proguard-rules.pro │ │ ├── build.gradle │ │ ├── gradlew.bat │ │ └── gradlew │ ├── settings.gradle │ ├── .gitignore │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── build.gradle │ ├── gradle.properties │ ├── gradlew.bat │ └── gradlew └── app-example │ ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── screenshots │ ├── com.facebook.testing.screenshot.SearchBarTest_testChinese.png │ ├── com.facebook.testing.screenshot.SearchBarTest_testLongText.png │ └── com.facebook.testing.screenshot.SearchBarTest_testRendering.png │ ├── build.gradle │ ├── src │ ├── main │ │ ├── AndroidManifest.xml │ │ └── res │ │ │ └── layout │ │ │ └── search_bar.xml │ └── androidTest │ │ └── java │ │ └── com │ │ └── facebook │ │ └── testing │ │ └── screenshot │ │ └── SearchBarTest.java │ ├── gradlew.bat │ └── gradlew ├── gradle.properties ├── core ├── gradle.properties ├── src │ ├── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── com │ │ │ └── facebook │ │ │ └── testing │ │ │ └── screenshot │ │ │ ├── ScreenshotTestRunner.java │ │ │ ├── plugin │ │ │ ├── ViewDumpPlugin.java │ │ │ ├── TextViewDumper.java │ │ │ └── PluginRegistry.java │ │ │ ├── internal │ │ │ ├── Registry.java │ │ │ ├── Tiling.java │ │ │ ├── Album.java │ │ │ ├── ScreenshotDirectories.java │ │ │ ├── TestNameDetector.java │ │ │ ├── HostFileSender.java │ │ │ ├── ViewHierarchy.java │ │ │ └── RecordBuilderImpl.java │ │ │ ├── RecordBuilder.java │ │ │ ├── Screenshot.java │ │ │ ├── ScreenshotRunner.java │ │ │ ├── ViewHelpers.java │ │ │ └── WindowAttachment.java │ └── androidTest │ │ ├── res │ │ └── layout │ │ │ ├── testing_simple_textview.xml │ │ │ └── testing_for_view_hierarchy.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── facebook │ │ └── testing │ │ └── screenshot │ │ ├── CustomScreenshotTestRunner.java │ │ ├── MyActivity.java │ │ ├── internal │ │ ├── ScreenshotDirectoriesTest.java │ │ ├── TestNameDetectorTest.java │ │ ├── TestNameDetectorForJUnit4Test.java │ │ ├── RecordBuilderImplTest.java │ │ └── HostFileSenderTest.java │ │ ├── plugin │ │ └── TextViewDumperTest.java │ │ ├── ScriptsFixtureTest.java │ │ ├── ViewHelpersTest.java │ │ └── WindowAttachmentTest.java └── build.gradle ├── .gitignore ├── CHANGELOG ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── pull_screenshots ├── integration_test.sh ├── LICENSE-examples ├── LICENSE ├── PATENTS ├── CONTRIBUTING.md ├── gradlew.bat ├── README.md ├── release.gradle └── gradlew /plugin/src/py/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include 'core', 'plugin' -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | VERSION_NAME=0.4.2 2 | GROUP=com.facebook.testing.screenshot 3 | -------------------------------------------------------------------------------- /core/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Screenshot tests core android library 2 | POM_ARTIFACT_ID=core 3 | POM_PACKAGING=aar 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | */build/ 3 | .gradle 4 | /repo/ 5 | /build 6 | repo 7 | examples/**/build 8 | .idea 9 | *.iml 10 | -------------------------------------------------------------------------------- /plugin/src/py/android_screenshot_tests/fixtures/sdcard/screenshots/com.foo/screenshots-default/one_dump.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /CHANGELOG: -------------------------------------------------------------------------------- 1 | 2 | * 0.4.2 3 | 4 | - Support for Android gradle plugin 2.2.0 5 | - Make ViewHierarchy dump more useful information 6 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /plugin/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Gradle build plugin for Screenshot tests for android library 2 | POM_ARTIFACT_ID=plugin 3 | POM_PACKAGING=jar 4 | -------------------------------------------------------------------------------- /pull_screenshots: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | export PYTHONPATH=`dirname $0`/src/py:$PYTHONPATH 4 | python -m android_screenshot_tests.pull_screenshots "$@" 5 | -------------------------------------------------------------------------------- /plugin/src/main/resources/META-INF/gradle-plugins/com.facebook.testing.screenshot.properties: -------------------------------------------------------------------------------- 1 | implementation-class=com.facebook.testing.screenshot.build.ScreenshotsPlugin -------------------------------------------------------------------------------- /plugin/src/py/android_screenshot_tests/example.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/plugin/src/py/android_screenshot_tests/example.apk -------------------------------------------------------------------------------- /examples/app-example/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/examples/app-example/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /plugin/src/py/android_screenshot_tests/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/plugin/src/py/android_screenshot_tests/background.png -------------------------------------------------------------------------------- /plugin/src/py/android_screenshot_tests/fixtures/dummy.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/plugin/src/py/android_screenshot_tests/fixtures/dummy.zip -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | My Application 3 | Settings 4 | 5 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/examples/app-example-androidjunitrunner/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/examples/app-example-androidjunitrunner/app/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/examples/app-example-androidjunitrunner/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/examples/app-example-androidjunitrunner/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/examples/app-example-androidjunitrunner/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/examples/app-example-androidjunitrunner/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/examples/app-example-androidjunitrunner/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /examples/app-example/screenshots/com.facebook.testing.screenshot.SearchBarTest_testChinese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/examples/app-example/screenshots/com.facebook.testing.screenshot.SearchBarTest_testChinese.png -------------------------------------------------------------------------------- /examples/app-example/screenshots/com.facebook.testing.screenshot.SearchBarTest_testLongText.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/examples/app-example/screenshots/com.facebook.testing.screenshot.SearchBarTest_testLongText.png -------------------------------------------------------------------------------- /examples/app-example/screenshots/com.facebook.testing.screenshot.SearchBarTest_testRendering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/examples/app-example/screenshots/com.facebook.testing.screenshot.SearchBarTest_testRendering.png -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue Aug 25 16:18:11 EDT 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.6-bin.zip 7 | -------------------------------------------------------------------------------- /core/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/screenshots/com.example.screenshots.MainActivityTest_mainActivityTest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/examples/app-example-androidjunitrunner/app/screenshots/com.example.screenshots.MainActivityTest_mainActivityTest.png -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /examples/app-example/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Oct 07 14:29:02 EDT 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-bin.zip 7 | -------------------------------------------------------------------------------- /core/src/androidTest/res/layout/testing_simple_textview.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/screenshots/com.example.screenshots.MainActivityTest_mainActivityTestSettingsOpen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/examples/app-example-androidjunitrunner/app/screenshots/com.example.screenshots.MainActivityTest_mainActivityTestSettingsOpen.png -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Dec 28 10:00:20 PST 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip 7 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Dec 28 10:00:20 PST 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip 7 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 16dp 6 | 7 | -------------------------------------------------------------------------------- /plugin/src/py/android_screenshot_tests/fixtures/sdcard/screenshots/com.foo/screenshots-default/com.foo.ScriptsFixtureTest_testSecondScreenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/plugin/src/py/android_screenshot_tests/fixtures/sdcard/screenshots/com.foo/screenshots-default/com.foo.ScriptsFixtureTest_testSecondScreenshot.png -------------------------------------------------------------------------------- /plugin/src/py/android_screenshot_tests/fixtures/sdcard/screenshots/com.foo/screenshots-default/com.foo.ScriptsFixtureTest_testGetTextViewScreenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/runtastic/screenshot-tests-for-android/HEAD/plugin/src/py/android_screenshot_tests/fixtures/sdcard/screenshots/com.foo/screenshots-default/com.foo.ScriptsFixtureTest_testGetTextViewScreenshot.png -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /integration_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -x 4 | set -e 5 | set -o pipefail 6 | 7 | echo $ANDROID_SERIAL 8 | 9 | cleanup() { 10 | rm -rf ~/.m2 ~/.gradle/caches 11 | rm -rf */build/ 12 | rm -rf examples/one/build/ 13 | } 14 | 15 | cleanup 16 | 17 | ./gradlew :plugin:install 18 | ./gradlew :core:install 19 | 20 | cd examples/app-example 21 | ./gradlew connectedAndroidTest 22 | ./gradlew screenshotTests 23 | 24 | cleanup 25 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /plugin/src/py/android_screenshot_tests/__init__.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-present, Facebook, Inc. 3 | # All rights reserved. 4 | # 5 | # This source code is licensed under the BSD-style license found in the 6 | # LICENSE file in the root directory of this source tree. An additional grant 7 | # of patent rights can be found in the PATENTS file in the same directory. 8 | # 9 | from __future__ import absolute_import 10 | from __future__ import division 11 | from __future__ import print_function 12 | from __future__ import unicode_literals 13 | -------------------------------------------------------------------------------- /plugin/src/py/android_screenshot_tests/fixtures/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/local.properties: -------------------------------------------------------------------------------- 1 | ## This file is automatically generated by Android Studio. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must *NOT* be checked into Version Control Systems, 5 | # as it contains information specific to your local configuration. 6 | # 7 | # Location of the SDK. This is only used by Gradle. 8 | # For customization when using a Version Control System, please read the 9 | # header note. 10 | #Fri Dec 30 12:33:21 NZDT 2016 11 | sdk.dir=/Users/nadera/Library/Android/sdk 12 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/src/test/java/com/example/screenshots/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.example.nadera.myapplication; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /core/src/androidTest/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 9 | 10 | 12 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /plugin/src/py/android_screenshot_tests/default.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: #D3D3D3; 3 | } 4 | 5 | img { 6 | display:block; 7 | } 8 | 9 | .img-wrapper { 10 | background-image: url("background.png"); 11 | } 12 | 13 | div.screenshot { 14 | padding: 10px; 15 | } 16 | 17 | div.alternate { 18 | background: #E0E0E0; 19 | } 20 | 21 | div.screenshot_error { 22 | color: red; 23 | } 24 | 25 | table { 26 | border-collapse: collapse; 27 | } 28 | 29 | table, th, tr, td, img{ 30 | padding: 0; 31 | margin: 0; 32 | border: 0; 33 | } 34 | 35 | table { 36 | border-spacing: 0; 37 | border-collapse: collapse; 38 | } 39 | -------------------------------------------------------------------------------- /core/src/main/java/com/facebook/testing/screenshot/ScreenshotTestRunner.java: -------------------------------------------------------------------------------- 1 | // Copyright 2004-present Facebook. All Rights Reserved. 2 | 3 | package com.facebook.testing.screenshot; 4 | 5 | import android.os.Bundle; 6 | import android.test.InstrumentationTestRunner; 7 | 8 | public class ScreenshotTestRunner extends InstrumentationTestRunner { 9 | @Override 10 | public void onCreate(Bundle args) { 11 | ScreenshotRunner.onCreate(this, args); 12 | super.onCreate(args); 13 | } 14 | 15 | @Override 16 | public void finish(int resultCode, Bundle results) { 17 | ScreenshotRunner.onDestroy(); 18 | super.finish(resultCode, results); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /examples/app-example/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | mavenLocal() 4 | mavenCentral() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:2.2.0' 10 | classpath 'com.facebook.testing.screenshot:plugin:0.4.2' 11 | } 12 | } 13 | 14 | apply plugin: 'com.android.application' 15 | apply plugin: 'com.facebook.testing.screenshot' 16 | 17 | repositories { 18 | mavenLocal() 19 | mavenCentral() 20 | } 21 | 22 | android { 23 | compileSdkVersion 22 24 | buildToolsVersion "23.0.1" 25 | 26 | sourceSets { 27 | } 28 | } 29 | 30 | dependencies { 31 | } 32 | -------------------------------------------------------------------------------- /LICENSE-examples: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015-present, Facebook, Inc. All rights reserved. 2 | 3 | The examples provided by Facebook are for non-commercial testing and evaluation 4 | purposes only. Facebook reserves all rights not expressly granted. 5 | 6 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 7 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 8 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 9 | FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 10 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 11 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 12 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:2.2.3' 9 | classpath 'com.facebook.testing.screenshot:plugin:0.4.2' 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | } 19 | } 20 | 21 | task clean(type: Delete) { 22 | delete rootProject.buildDir 23 | } 24 | -------------------------------------------------------------------------------- /core/src/androidTest/java/com/facebook/testing/screenshot/CustomScreenshotTestRunner.java: -------------------------------------------------------------------------------- 1 | // Copyright 2004-present Facebook. All Rights Reserved. 2 | 3 | package com.facebook.testing.screenshot; 4 | 5 | import android.os.Bundle; 6 | import android.test.InstrumentationTestRunner; 7 | import android.support.test.runner.AndroidJUnitRunner; 8 | 9 | public class CustomScreenshotTestRunner extends AndroidJUnitRunner { 10 | @Override 11 | public void onCreate(Bundle args) { 12 | ScreenshotRunner.onCreate(this, args); 13 | super.onCreate(args); 14 | } 15 | 16 | @Override 17 | public void finish(int resultCode, Bundle results) { 18 | ScreenshotRunner.onDestroy(); 19 | super.finish(resultCode, results); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/nadera/Library/Android/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /core/src/androidTest/java/com/facebook/testing/screenshot/MyActivity.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2014-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | package com.facebook.testing.screenshot; 11 | 12 | import android.app.Activity; 13 | 14 | /** 15 | * A dummy activity used in {@link BaseActivityInstrumentationTestCase2Test} 16 | */ 17 | public class MyActivity extends Activity { 18 | public boolean destroyed = false; 19 | 20 | @Override 21 | public void onDestroy() { 22 | super.onDestroy(); 23 | destroyed = true; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /examples/app-example/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 12 | 13 | 14 | 15 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/src/androidTest/java/com/example/screenshots/CustomTestRunner.java: -------------------------------------------------------------------------------- 1 | package com.example.screenshots; 2 | 3 | import android.os.Bundle; 4 | import android.support.multidex.MultiDex; 5 | import android.support.test.runner.AndroidJUnitRunner; 6 | 7 | import com.facebook.testing.screenshot.ScreenshotRunner; 8 | 9 | 10 | public class CustomTestRunner extends AndroidJUnitRunner { 11 | 12 | @Override 13 | public void onCreate(Bundle arguments) { 14 | MultiDex.install(getTargetContext()); 15 | ScreenshotRunner.onCreate(this, arguments); 16 | super.onCreate(arguments); 17 | } 18 | 19 | @Override 20 | public void finish(int resultCode, Bundle results) { 21 | ScreenshotRunner.onDestroy(); 22 | super.finish(resultCode, results); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | 18 | org.gradle.parallel=true -------------------------------------------------------------------------------- /examples/app-example-androidjunitrunner/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 |