atsushieno / aap-core

an Audio Plugin Format/Framework for Android
MIT License
92 stars 3 forks source link

automated connection testing across multiple plugin projects #40

Open atsushieno opened 4 years ago

atsushieno commented 4 years ago

Now we have various combination of testable audio plugins (LV2-based plugins e.g. mda, and JUCE-based plugins e.g. andes and SARAH) as well as hosts (aaphostsample, JuceAAPAudioPluginHost), there should be some automated connection tests.

Although unlike normal Android apps it is not very straightforward, as we have to install more than just one app, and create a test matrix for all combinations. Also, those hosts need to become testable without UI (or we write UI testing).

To make it harder, there is still no way to automate JUCE-based projects on various CI servers (none successfully built them).

So far, here is what I usually test manually (not always everything):

atsushieno commented 4 years ago

https://github.com/atsushieno/android-audio-plugin-framework/issues/42 -> https://github.com/atsushieno/aap-juce

atsushieno commented 3 years ago

It is partially achieved as aaphostsample androidTest. It's not really runnable without relevant plugins installed and therefore not ready for CI testing though.

atsushieno commented 3 years ago

There is androidaudioplugin-testing.aar for reusable simple instancing tests, and I applied it to couple of plugin projects.

atsushieno commented 2 years ago

It may be possible to use Firebase Testing for running such tests. That would be to collect multiple apks from different repositories first, and install them from a repo using some script that runs gcloud tool.

atsushieno commented 2 years ago

More on testing multiple apks: Use Android Test Orchestrator https://developer.android.com/training/testing/instrumented-tests/androidx-test-libraries/runner#use-android

atsushieno commented 1 year ago

Orchestrator was not the right one; maybe espresso remote runner works. https://developer.android.com/training/testing/espresso/multiprocess