Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Julian Dehm
briar
Commits
1c90e648
Verified
Commit
1c90e648
authored
Sep 06, 2018
by
Torsten Grote
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Split up UI and Screenshot tests
Closes
#1377
parent
f0e2d528
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
154 additions
and
126 deletions
+154
-126
briar-android/build.gradle
briar-android/build.gradle
+60
-60
briar-android/fastlane/Screengrabfile
briar-android/fastlane/Screengrabfile
+1
-6
briar-android/src/androidTest/java/org/briarproject/briar/android/BriarTestRunner.java
.../java/org/briarproject/briar/android/BriarTestRunner.java
+3
-5
briar-android/src/androidTest/java/org/briarproject/briar/android/UiTest.java
...droidTest/java/org/briarproject/briar/android/UiTest.java
+4
-43
briar-android/src/androidTest/java/org/briarproject/briar/android/ViewActions.java
...Test/java/org/briarproject/briar/android/ViewActions.java
+1
-1
briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/BriarUiTestComponent.java
.../org/briarproject/briar/android/BriarUiTestComponent.java
+25
-0
briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/navdrawer/NavDrawerActivityTest.java
...roject/briar/android/navdrawer/NavDrawerActivityTest.java
+2
-2
briar-android/src/androidTestScreenshot/java/org/briarproject/briar/android/BriarUiTestComponent.java
.../org/briarproject/briar/android/BriarUiTestComponent.java
+0
-2
briar-android/src/androidTestScreenshot/java/org/briarproject/briar/android/ScreenshotTest.java
...t/java/org/briarproject/briar/android/ScreenshotTest.java
+51
-0
briar-android/src/androidTestScreenshot/java/org/briarproject/briar/android/contact/ConversationActivityScreenshotTest.java
...r/android/contact/ConversationActivityScreenshotTest.java
+2
-2
briar-android/src/androidTestScreenshot/java/org/briarproject/briar/android/login/SetupActivityScreenshotTest.java
...ject/briar/android/login/SetupActivityScreenshotTest.java
+3
-3
briar-android/src/androidTestScreenshot/java/org/briarproject/briar/android/settings/SettingsActivityScreenshotTest.java
...riar/android/settings/SettingsActivityScreenshotTest.java
+2
-2
No files found.
briar-android/build.gradle
View file @
1c90e648
...
...
@@ -2,65 +2,6 @@ apply plugin: 'com.android.application'
apply
plugin:
'witness'
apply
from:
'witness.gradle'
dependencies
{
implementation
project
(
path:
':briar-core'
,
configuration:
'default'
)
implementation
project
(
path:
':bramble-core'
,
configuration:
'default'
)
implementation
project
(
':bramble-android'
)
def
supportVersion
=
'27.1.1'
implementation
"com.android.support:support-v4:$supportVersion"
implementation
(
"com.android.support:appcompat-v7:$supportVersion"
)
{
exclude
module:
'support-v4'
}
implementation
(
"com.android.support:preference-v14:$supportVersion"
)
{
exclude
module:
'support-v4'
}
implementation
(
"com.android.support:design:$supportVersion"
)
{
exclude
module:
'support-v4'
exclude
module:
'recyclerview-v7'
}
implementation
"com.android.support:cardview-v7:$supportVersion"
implementation
"com.android.support:support-annotations:$supportVersion"
implementation
'com.android.support.constraint:constraint-layout:1.1.3'
implementation
(
'ch.acra:acra:4.9.1'
)
{
exclude
module:
'support-v4'
exclude
module:
'support-annotations'
}
implementation
'info.guardianproject.panic:panic:0.5'
implementation
'info.guardianproject.trustedintents:trustedintents:0.2'
implementation
'de.hdodenhof:circleimageview:2.2.0'
implementation
'com.google.zxing:core:3.3.0'
implementation
'uk.co.samuelwall:material-tap-target-prompt:2.8.0'
implementation
'com.vanniktech:emoji-google:0.5.1'
annotationProcessor
'com.google.dagger:dagger-compiler:2.0.2'
compileOnly
'javax.annotation:jsr250-api:1.0'
testImplementation
project
(
path:
':bramble-api'
,
configuration:
'testOutput'
)
testImplementation
project
(
path:
':bramble-core'
,
configuration:
'testOutput'
)
testImplementation
'org.robolectric:robolectric:3.8'
testImplementation
'org.robolectric:shadows-support-v4:3.3.2'
testImplementation
'org.mockito:mockito-core:2.13.0'
testImplementation
'junit:junit:4.12'
testImplementation
"org.jmock:jmock:2.8.2"
testImplementation
"org.jmock:jmock-junit4:2.8.2"
testImplementation
"org.jmock:jmock-legacy:2.8.2"
testImplementation
"org.hamcrest:hamcrest-library:1.3"
testImplementation
"org.hamcrest:hamcrest-core:1.3"
def
espressoVersion
=
'3.0.2'
androidTestImplementation
"com.android.support.test.espresso:espresso-core:$espressoVersion"
androidTestImplementation
"com.android.support.test.espresso:espresso-contrib:$espressoVersion"
androidTestImplementation
"com.android.support.test.espresso:espresso-intents:$espressoVersion"
androidTestImplementation
"tools.fastlane:screengrab:1.1.0"
androidTestImplementation
"com.android.support.test.uiautomator:uiautomator-v18:2.1.3"
androidTestAnnotationProcessor
"com.google.dagger:dagger-compiler:2.0.2"
androidTestCompileOnly
'javax.annotation:jsr250-api:1.0'
androidTestImplementation
'junit:junit:4.12'
}
def
getStdout
=
{
command
,
defaultValue
->
def
stdout
=
new
ByteArrayOutputStream
()
try
{
...
...
@@ -89,7 +30,7 @@ android {
def
now
=
(
long
)
(
System
.
currentTimeMillis
()
/
1000
)
buildConfigField
"Long"
,
"BuildTimestamp"
,
"${getStdout(['git', 'log', '-n', '1', '--format=%ct'], now)}000L"
testInstrumentationRunner
'org.briarproject.briar.android.
test.
BriarTestRunner'
testInstrumentationRunner
'org.briarproject.briar.android.BriarTestRunner'
}
buildTypes
{
...
...
@@ -144,6 +85,65 @@ android {
}
}
dependencies
{
implementation
project
(
path:
':briar-core'
,
configuration:
'default'
)
implementation
project
(
path:
':bramble-core'
,
configuration:
'default'
)
implementation
project
(
':bramble-android'
)
def
supportVersion
=
'27.1.1'
implementation
"com.android.support:support-v4:$supportVersion"
implementation
(
"com.android.support:appcompat-v7:$supportVersion"
)
{
exclude
module:
'support-v4'
}
implementation
(
"com.android.support:preference-v14:$supportVersion"
)
{
exclude
module:
'support-v4'
}
implementation
(
"com.android.support:design:$supportVersion"
)
{
exclude
module:
'support-v4'
exclude
module:
'recyclerview-v7'
}
implementation
"com.android.support:cardview-v7:$supportVersion"
implementation
"com.android.support:support-annotations:$supportVersion"
implementation
'com.android.support.constraint:constraint-layout:1.1.3'
implementation
(
'ch.acra:acra:4.9.1'
)
{
exclude
module:
'support-v4'
exclude
module:
'support-annotations'
}
implementation
'info.guardianproject.panic:panic:0.5'
implementation
'info.guardianproject.trustedintents:trustedintents:0.2'
implementation
'de.hdodenhof:circleimageview:2.2.0'
implementation
'com.google.zxing:core:3.3.0'
implementation
'uk.co.samuelwall:material-tap-target-prompt:2.8.0'
implementation
'com.vanniktech:emoji-google:0.5.1'
annotationProcessor
'com.google.dagger:dagger-compiler:2.0.2'
compileOnly
'javax.annotation:jsr250-api:1.0'
testImplementation
project
(
path:
':bramble-api'
,
configuration:
'testOutput'
)
testImplementation
project
(
path:
':bramble-core'
,
configuration:
'testOutput'
)
testImplementation
'org.robolectric:robolectric:3.8'
testImplementation
'org.robolectric:shadows-support-v4:3.3.2'
testImplementation
'org.mockito:mockito-core:2.13.0'
testImplementation
'junit:junit:4.12'
testImplementation
"org.jmock:jmock:2.8.2"
testImplementation
"org.jmock:jmock-junit4:2.8.2"
testImplementation
"org.jmock:jmock-legacy:2.8.2"
testImplementation
"org.hamcrest:hamcrest-library:1.3"
testImplementation
"org.hamcrest:hamcrest-core:1.3"
def
espressoVersion
=
'3.0.2'
androidTestImplementation
"com.android.support.test.espresso:espresso-core:$espressoVersion"
androidTestImplementation
"com.android.support.test.espresso:espresso-contrib:$espressoVersion"
androidTestImplementation
"com.android.support.test.espresso:espresso-intents:$espressoVersion"
androidTestAnnotationProcessor
"com.google.dagger:dagger-compiler:2.0.2"
androidTestCompileOnly
'javax.annotation:jsr250-api:1.0'
androidTestImplementation
'junit:junit:4.12'
androidTestScreenshotImplementation
"tools.fastlane:screengrab:1.1.0"
androidTestScreenshotImplementation
"com.android.support.test.uiautomator:uiautomator-v18:2.1.3"
}
task
verifyTranslations
{
doLast
{
def
file
=
project
.
file
(
"src/main/res/values/arrays.xml"
)
...
...
briar-android/fastlane/Screengrabfile
View file @
1c90e648
app_package_name "org.briarproject.briar.android.screenshot.debug"
locales ['en-US']
use_tests_in_classes([
'org.briarproject.briar.android.login.SetupActivityScreenshotTest',
'org.briarproject.briar.android.settings.SettingsActivityScreenshotTest',
'org.briarproject.briar.android.contact.ConversationActivityScreenshotTest',
])
app_apk_path "build/outputs/apk/screenshot/debug/briar-android-screenshot-debug.apk"
tests_apk_path "build/outputs/apk/androidTest/screenshot/debug/briar-android-screenshot-debug-androidTest.apk"
test_instrumentation_runner "org.briarproject.briar.android.test.BriarTestRunner"
\ No newline at end of file
test_instrumentation_runner "org.briarproject.briar.android.BriarTestRunner"
\ No newline at end of file
briar-android/src/androidTest/java/org/briarproject/briar/android/
test/
BriarTestRunner.java
→
briar-android/src/androidTest/java/org/briarproject/briar/android/BriarTestRunner.java
View file @
1c90e648
package
org.briarproject.briar.android
.test
;
package
org.briarproject.briar.android
;
import
android.app.Application
;
import
android.content.Context
;
import
android.support.test.runner.AndroidJUnitRunner
;
import
org.briarproject.briar.android.BriarTestComponentApplication
;
public
class
BriarTestRunner
extends
AndroidJUnitRunner
{
@Override
...
...
@@ -13,8 +11,8 @@ public class BriarTestRunner extends AndroidJUnitRunner {
Context
context
)
throws
InstantiationException
,
IllegalAccessException
,
ClassNotFoundException
{
return
super
.
newApplication
(
cl
,
BriarTestComponentApplication
.
class
.
getName
(),
context
);
return
super
.
newApplication
(
cl
,
BriarTestComponentApplication
.
class
.
getName
(),
context
);
}
}
briar-android/src/androidTest/java/org/briarproject/briar/android/
test/Screenshot
Test.java
→
briar-android/src/androidTest/java/org/briarproject/briar/android/
Ui
Test.java
View file @
1c90e648
package
org.briarproject.briar.android
.test
;
package
org.briarproject.briar.android
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.support.test.espresso.intent.rule.IntentsTestRule
;
import
android.util.Log
;
import
org.briarproject.bramble.api.account.AccountManager
;
import
org.briarproject.bramble.api.lifecycle.LifecycleManager
;
import
org.briarproject.bramble.api.nullsafety.NotNullByDefault
;
import
org.briarproject.bramble.api.plugin.ConnectionRegistry
;
import
org.briarproject.bramble.api.system.Clock
;
import
org.briarproject.briar.android.BriarService
;
import
org.briarproject.briar.android.BriarTestComponentApplication
;
import
org.briarproject.briar.android.BriarUiTestComponent
;
import
org.briarproject.briar.api.test.TestDataCreator
;
import
org.junit.ClassRule
;
import
javax.annotation.Nullable
;
import
javax.inject.Inject
;
import
tools.fastlane.screengrab.Screengrab
;
import
tools.fastlane.screengrab.UiAutomatorScreenshotStrategy
;
import
tools.fastlane.screengrab.locale.LocaleTestRule
;
import
static
android
.
support
.
test
.
InstrumentationRegistry
.
getTargetContext
;
import
static
tools
.
fastlane
.
screengrab
.
Screengrab
.
setDefaultScreenshotStrategy
;
public
abstract
class
ScreenshotTest
{
@ClassRule
public
static
final
LocaleTestRule
localeTestRule
=
new
LocaleTestRule
();
@SuppressWarnings
(
"WeakerAccess"
)
public
abstract
class
UiTest
{
protected
static
final
String
USERNAME
=
"Alice"
;
protected
static
final
String
PASSWORD
=
"123456"
;
...
...
@@ -38,16 +23,8 @@ public abstract class ScreenshotTest {
protected
AccountManager
accountManager
;
@Inject
protected
LifecycleManager
lifecycleManager
;
@Inject
protected
TestDataCreator
testDataCreator
;
@Inject
protected
ConnectionRegistry
connectionRegistry
;
@Inject
protected
Clock
clock
;
public
ScreenshotTest
()
{
super
();
setDefaultScreenshotStrategy
(
new
UiAutomatorScreenshotStrategy
());
public
UiTest
()
{
BriarTestComponentApplication
app
=
(
BriarTestComponentApplication
)
getTargetContext
()
.
getApplicationContext
();
...
...
@@ -56,22 +33,6 @@ public abstract class ScreenshotTest {
protected
abstract
void
inject
(
BriarUiTestComponent
component
);
protected
void
screenshot
(
String
name
)
{
try
{
Screengrab
.
screenshot
(
name
);
}
catch
(
RuntimeException
e
)
{
if
(!
e
.
getMessage
().
equals
(
"Unable to capture screenshot."
))
throw
e
;
// The tests should still pass when run from AndroidStudio
// without manually granting permissions like fastlane does.
Log
.
w
(
"Screengrab"
,
"Permission to write screenshot is missing."
);
}
}
protected
long
getMinutesAgo
(
int
minutes
)
{
return
clock
.
currentTimeMillis
()
-
minutes
*
60
*
1000
;
}
@NotNullByDefault
protected
class
CleanAccountTestRule
<
A
extends
Activity
>
extends
IntentsTestRule
<
A
>
{
...
...
briar-android/src/androidTest/java/org/briarproject/briar/android/
test/
ViewActions.java
→
briar-android/src/androidTest/java/org/briarproject/briar/android/ViewActions.java
View file @
1c90e648
package
org.briarproject.briar.android
.test
;
package
org.briarproject.briar.android
;
import
android.app.Activity
;
import
android.support.test.espresso.PerformException
;
...
...
briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/BriarUiTestComponent.java
0 → 100644
View file @
1c90e648
package
org.briarproject.briar.android
;
import
org.briarproject.bramble.BrambleAndroidModule
;
import
org.briarproject.bramble.BrambleCoreModule
;
import
org.briarproject.bramble.account.BriarAccountModule
;
import
org.briarproject.briar.BriarCoreModule
;
import
org.briarproject.briar.android.navdrawer.NavDrawerActivityTest
;
import
javax.inject.Singleton
;
import
dagger.Component
;
@Singleton
@Component
(
modules
=
{
AppModule
.
class
,
BriarCoreModule
.
class
,
BrambleAndroidModule
.
class
,
BriarAccountModule
.
class
,
BrambleCoreModule
.
class
})
public
interface
BriarUiTestComponent
extends
AndroidComponent
{
void
inject
(
NavDrawerActivityTest
test
);
}
briar-android/src/androidTest/java/org/briarproject/briar/android/navdrawer/NavDrawerActivityTest.java
→
briar-android/src/androidTest
Official
/java/org/briarproject/briar/android/navdrawer/NavDrawerActivityTest.java
View file @
1c90e648
...
...
@@ -6,8 +6,8 @@ import android.view.Gravity;
import
org.briarproject.briar.R
;
import
org.briarproject.briar.android.BriarUiTestComponent
;
import
org.briarproject.briar.android.UiTest
;
import
org.briarproject.briar.android.settings.SettingsActivity
;
import
org.briarproject.briar.android.test.ScreenshotTest
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -23,7 +23,7 @@ import static android.support.test.espresso.matcher.ViewMatchers.withId;
import
static
android
.
support
.
test
.
espresso
.
matcher
.
ViewMatchers
.
withText
;
@RunWith
(
AndroidJUnit4
.
class
)
public
class
NavDrawerActivityTest
extends
Screenshot
Test
{
public
class
NavDrawerActivityTest
extends
Ui
Test
{
@Rule
public
CleanAccountTestRule
<
NavDrawerActivity
>
testRule
=
...
...
briar-android/src/androidTest/java/org/briarproject/briar/android/BriarUiTestComponent.java
→
briar-android/src/androidTest
Screenshot
/java/org/briarproject/briar/android/BriarUiTestComponent.java
View file @
1c90e648
...
...
@@ -6,7 +6,6 @@ import org.briarproject.bramble.account.BriarAccountModule;
import
org.briarproject.briar.BriarCoreModule
;
import
org.briarproject.briar.android.contact.ConversationActivityScreenshotTest
;
import
org.briarproject.briar.android.login.SetupActivityScreenshotTest
;
import
org.briarproject.briar.android.navdrawer.NavDrawerActivityTest
;
import
org.briarproject.briar.android.settings.SettingsActivityScreenshotTest
;
import
javax.inject.Singleton
;
...
...
@@ -25,7 +24,6 @@ public interface BriarUiTestComponent extends AndroidComponent {
void
inject
(
ConversationActivityScreenshotTest
test
);
void
inject
(
SetupActivityScreenshotTest
test
);
void
inject
(
NavDrawerActivityTest
test
);
void
inject
(
SettingsActivityScreenshotTest
test
);
}
briar-android/src/androidTestScreenshot/java/org/briarproject/briar/android/ScreenshotTest.java
0 → 100644
View file @
1c90e648
package
org.briarproject.briar.android
;
import
android.util.Log
;
import
org.briarproject.bramble.api.plugin.ConnectionRegistry
;
import
org.briarproject.bramble.api.system.Clock
;
import
org.briarproject.briar.api.test.TestDataCreator
;
import
org.junit.ClassRule
;
import
javax.inject.Inject
;
import
tools.fastlane.screengrab.Screengrab
;
import
tools.fastlane.screengrab.UiAutomatorScreenshotStrategy
;
import
tools.fastlane.screengrab.locale.LocaleTestRule
;
import
static
tools
.
fastlane
.
screengrab
.
Screengrab
.
setDefaultScreenshotStrategy
;
public
abstract
class
ScreenshotTest
extends
UiTest
{
@ClassRule
public
static
final
LocaleTestRule
localeTestRule
=
new
LocaleTestRule
();
@Inject
protected
TestDataCreator
testDataCreator
;
@Inject
protected
ConnectionRegistry
connectionRegistry
;
@Inject
protected
Clock
clock
;
public
ScreenshotTest
()
{
super
();
setDefaultScreenshotStrategy
(
new
UiAutomatorScreenshotStrategy
());
}
protected
void
screenshot
(
String
name
)
{
try
{
Screengrab
.
screenshot
(
name
);
}
catch
(
RuntimeException
e
)
{
if
(!
e
.
getMessage
().
equals
(
"Unable to capture screenshot."
))
throw
e
;
// The tests should still pass when run from AndroidStudio
// without manually granting permissions like fastlane does.
Log
.
w
(
"Screengrab"
,
"Permission to write screenshot is missing."
);
}
}
protected
long
getMinutesAgo
(
int
minutes
)
{
return
clock
.
currentTimeMillis
()
-
minutes
*
60
*
1000
;
}
}
briar-android/src/androidTest/java/org/briarproject/briar/android/contact/ConversationActivityScreenshotTest.java
→
briar-android/src/androidTest
Screenshot
/java/org/briarproject/briar/android/contact/ConversationActivityScreenshotTest.java
View file @
1c90e648
...
...
@@ -9,7 +9,7 @@ import org.briarproject.bramble.api.contact.Contact;
import
org.briarproject.bramble.api.db.DbException
;
import
org.briarproject.briar.R
;
import
org.briarproject.briar.android.BriarUiTestComponent
;
import
org.briarproject.briar.android.
test.
ScreenshotTest
;
import
org.briarproject.briar.android.ScreenshotTest
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -22,7 +22,7 @@ import static android.support.test.espresso.matcher.ViewMatchers.withId;
import
static
android
.
support
.
test
.
espresso
.
matcher
.
ViewMatchers
.
withText
;
import
static
org
.
briarproject
.
bramble
.
api
.
plugin
.
LanTcpConstants
.
ID
;
import
static
org
.
briarproject
.
briar
.
android
.
contact
.
ConversationActivity
.
CONTACT_ID
;
import
static
org
.
briarproject
.
briar
.
android
.
test
.
ViewActions
.
waitUntilMatches
;
import
static
org
.
briarproject
.
briar
.
android
.
ViewActions
.
waitUntilMatches
;
import
static
org
.
hamcrest
.
Matchers
.
allOf
;
@RunWith
(
AndroidJUnit4
.
class
)
...
...
briar-android/src/androidTest/java/org/briarproject/briar/android/login/SetupActivityScreenshotTest.java
→
briar-android/src/androidTest
Screenshot
/java/org/briarproject/briar/android/login/SetupActivityScreenshotTest.java
View file @
1c90e648
...
...
@@ -8,7 +8,7 @@ import android.support.test.uiautomator.UiSelector;
import
org.briarproject.briar.R
;
import
org.briarproject.briar.android.BriarUiTestComponent
;
import
org.briarproject.briar.android.
test.
ScreenshotTest
;
import
org.briarproject.briar.android.ScreenshotTest
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -27,8 +27,8 @@ import static android.support.test.espresso.matcher.ViewMatchers.withId;
import
static
android
.
support
.
test
.
espresso
.
matcher
.
ViewMatchers
.
withText
;
import
static
android
.
support
.
test
.
runner
.
lifecycle
.
Stage
.
PAUSED
;
import
static
junit
.
framework
.
Assert
.
assertTrue
;
import
static
org
.
briarproject
.
briar
.
android
.
test
.
ViewActions
.
waitForActivity
;
import
static
org
.
briarproject
.
briar
.
android
.
test
.
ViewActions
.
waitUntilMatches
;
import
static
org
.
briarproject
.
briar
.
android
.
ViewActions
.
waitForActivity
;
import
static
org
.
briarproject
.
briar
.
android
.
ViewActions
.
waitUntilMatches
;
import
static
org
.
briarproject
.
briar
.
android
.
util
.
UiUtils
.
needsDozeWhitelisting
;
...
...
briar-android/src/androidTest/java/org/briarproject/briar/android/settings/SettingsActivityScreenshotTest.java
→
briar-android/src/androidTest
Screenshot
/java/org/briarproject/briar/android/settings/SettingsActivityScreenshotTest.java
View file @
1c90e648
...
...
@@ -9,7 +9,7 @@ import android.view.Gravity;
import
org.briarproject.briar.R
;
import
org.briarproject.briar.android.BriarUiTestComponent
;
import
org.briarproject.briar.android.navdrawer.NavDrawerActivity
;
import
org.briarproject.briar.android.
test.
ScreenshotTest
;
import
org.briarproject.briar.android.ScreenshotTest
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -26,7 +26,7 @@ import static android.support.test.espresso.matcher.ViewMatchers.withChild;
import
static
android
.
support
.
test
.
espresso
.
matcher
.
ViewMatchers
.
withClassName
;
import
static
android
.
support
.
test
.
espresso
.
matcher
.
ViewMatchers
.
withId
;
import
static
android
.
support
.
test
.
espresso
.
matcher
.
ViewMatchers
.
withText
;
import
static
org
.
briarproject
.
briar
.
android
.
test
.
ViewActions
.
waitUntilMatches
;
import
static
org
.
briarproject
.
briar
.
android
.
ViewActions
.
waitUntilMatches
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
@RunWith
(
AndroidJUnit4
.
class
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment