Files
MapLibreParticleLab/platform/android/MapboxGLAndroidSDKTestApp
Anand Thakker f901e776b3 [core] Implement data-driven styling for {text,icon}-{color,opacity,halo-color,halo-blur,halo-width} (#7939)
* Add symbol dds attributes and adapt style code generation

* Update to mapbox-gl-js/master

* Refactor SymbolFeature as a subclass of GeometryTileFeature

Prepares for enabling DDS on symbol paint properties by allowing the
SymbolFeatures, which we keep around after constructing SymbolLayout,
to be used in evaluating data-driven paint properties later in the
layout process.

* Draft approach for splitting icon/text paint properties

The `Program` types are set up to bind GL attributes to each of the
data-driven paint properties specified in the `PaintProperties` type
provided.  Since `SymbolPaintProperties` specifies both `Text*` and
`Icon*` properties, the symbolIcon, symbolIconSDF, and symbolGlyph
programs each attempt to bind roughly double the number of attributes
that they actually need.

This change addresses this by:
- Adding the more specific `IconPaintProperties` and `TextPaintProperties` types, which are subsets of the full `SymbolPaintProperties`.
- The symbol layer continues to use its `SymbolPaintProperties paint` member to track layer property state, but it provides helpers that construct objects of each the specific `{Icon,Text}PaintProperties::Evaluated` type, for use by the painter.
- The three symbol programs instantiate `Program<>` using the appropriate `{Icon,Text}PaintProperties` type.

* check in generated style code

* Populate paint buffers for symbol DDS properties

* Address first round of review comments

* Refactor VectorTile{Layer,Feature} to explicitly share data

* Update submodule
2017-02-28 19:54:24 -08:00
..

Mapbox GL Test App

Testing

Running Espresso tests on a device

This test project comes with all the required Android Testing Support Library dependencies in the Gradle file. Tests are under the app/src/androidTest folder.

Note that before running your tests, you might want to turn off animations on your test device. It's a known issue that leaving system animations turned on in a test device (window animation scale, transition animation scale, animator duration scale) might cause unexpected results, or may lead tests to fail.

To create a new run configuration:

  • Click on Run -> Edit Configurations...
  • Click on the plus sign and then on "Android Tests"
  • Give a name to the configuration, e.g. TestAppTests
  • Choose the MapboxGLAndroidSDKTestApp module
  • Choose android.support.test.runner.AndroidJUnitRunner as the instrumentation runner
  • Click OK to save the new configuration

You can now run this configuration from the main toolbar dropdown menu.

Running Espresso tests on AWS Device Farm

On a terminal, within mapbox-gl-native/android/java, run the tests (cC stands for connectedCheck):

$ ./gradlew cC -p MapboxGLAndroidSDKTestApp

Then:

  • Go to your AWS Console and choose Device Farm.
  • Create a new project, e.g. MapboxGLAndroidSDKTestApp
  • On step 1, upload the APK in mapbox-gl-native/android/java/MapboxGLAndroidSDKTestApp/build/outputs/apk/MapboxGLAndroidSDKTestApp-debug-unaligned.apk
  • On step 2, choose Instrumentation, test filter is com.mapbox.mapboxgl.testapp.MainActivityTest and upload the APK in mapbox-gl-native/android/java/MapboxGLAndroidSDKTestApp/build/outputs/apk/MapboxGLAndroidSDKTestApp-debug-androidTest-unaligned.apk
  • On step 3, choose a device pool. E.g. Top Devices
  • On step 4, customize your device state (if needed)
  • Finally, confirm the configuration and run the tests.

On Step 2, you can also separate by commas different classes: com.mapbox.mapboxgl.testapp.MainActivityTest,com.mapbox.mapboxgl.testapp.MainActivityScreenTest

If you have no tests for your app, or want to test some random user behavior, you can just choose "Built-in: Fuzz" in step 2.

Running pure JUnit tests

These tests run on a local JVM on your development machine and they are extremely fast to run (as compared to Espresso). These tests are located under src/test/java. To run them you switch to the Unit Tests build variant, then right click the corresponding test class or method and select "Run ...".

You can also have a run configuration:

  • Click on Run -> Edit Configurations...
  • Click on "Junit Tests"
  • Give a name to the configuration, e.g. JUnit tests
  • As "Test Kind", choose "All in directory"
  • As folder, choose the following folder: mapbox-gl-native/android/java/MapboxGLAndroidSDKTestApp/src/test/java
  • Click OK to save the new configuration

You can also run the tests from the command line with:

$ ./gradlew test --continue -p MapboxGLAndroidSDKTestApp

Running the UI/Application Exerciser Monkey

Similar to the "Built-in: Fuzz" test mentioned above, Android provides Monkey, "a program that runs on your emulator or device and generates pseudo-random streams of user events such as clicks, touches, or gestures, as well as a number of system-level events."

To exercise Monkey on the test app, install the package on the device (e.g. via Android Studio) and then:

$ adb shell monkey -p com.mapbox.mapboxgl.testapp -v 500