-
Notifications
You must be signed in to change notification settings - Fork 153
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
* change docs * chnages revert * added lambdatest runner * added LambdaTest Runner * changes comments * changes for lambdatest runner * removed TODO * added the LT Doc * added the LT Doc * added the LT Doc * Fix newlines and typos * Rename Lambdatest.mdx to lambdatest.mdx * Add docs redirects and navigation * Remove unnecessary redirect * Fix whitespace * Fix wording --------- Co-authored-by: Gauravpandeyr <[email protected]>
- Loading branch information
1 parent
daefa2c
commit 36c9835
Showing
3 changed files
with
118 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
--- | ||
title: Integrations - LambdaTest | ||
--- | ||
|
||
# LambdaTest overview | ||
|
||
[LambdaTest App Test Automation] is a popular cloud device farm. | ||
|
||
<Warning>This integration is currently Android-only.</Warning> | ||
|
||
### Change runner | ||
|
||
Modify the **app-level build.gradle**: | ||
|
||
```groovy title="android/app/build.gradle" | ||
android { | ||
// ... | ||
defaultConfig { | ||
//... | ||
testInstrumentationRunner "pl.leancode.patrol.LambdaTestPatrolJUnitRunner" | ||
} | ||
// ... | ||
} | ||
// ... | ||
``` | ||
|
||
### Upload to LambdaTest | ||
|
||
To run Android UI tests on LambdaTest: | ||
|
||
1. Upload the app under test APK to LambdaTest ([see docs][LT_app_docs]) | ||
2. Upload the instrumentation app APK to LambdaTest ([see docs][LT_test_docs]) | ||
3. Start test execution on LambdaTest ([see docs][LT_execute_docs]) | ||
|
||
``` | ||
$ export LAMBDATEST_PROJECT=AwesomeApp # optional | ||
$ export LAMBDATEST_DEVICES="[\"Pixel 7 Pro-13\"]" # optional | ||
• Building apk with entrypoint test_bundle.dart... | ||
✓ Completed building apk with entrypoint test_bundle.dart (11.0s) | ||
% Total % Received % Xferd Average Speed Time Time Time Current | ||
Dload Upload Total Spent Left Speed | ||
100 82.4M 100 255 100 82.4M 7 2897k 0:00:31 0:00:36 0:00:02 2051k | ||
Uploaded app, "app_id": "lt://APP1016047291733313441063634", | ||
Uploaded testsuite, "app_id": "lt://APP1016047291733312896265135", | ||
{ | ||
"status": [ | ||
"Success" | ||
], | ||
"buildId": [ | ||
"5875687" | ||
], | ||
"message": [ | ||
"" | ||
] | ||
} | ||
``` | ||
|
||
[LT_app_docs]: https://www.lambdatest.com/support/docs/getting-started-with-flutter-dart-android-automation/#step-2-upload-your-application | ||
[LT_test_docs]: https://www.lambdatest.com/support/docs/getting-started-with-flutter-dart-android-automation/#step-3-uploading-test-suite | ||
[LT_execute_docs]: https://www.lambdatest.com/support/docs/getting-started-with-flutter-dart-android-automation/#step-4-executing-the-test | ||
[LambdaTest App Test Automation]: https://www.lambdatest.com/app-test-automation |
52 changes: 52 additions & 0 deletions
52
packages/patrol/android/src/main/kotlin/pl/leancode/patrol/LambdaTestPatrolJUnitRunner.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
package pl.leancode.patrol; | ||
|
||
import android.util.Log; | ||
import pl.leancode.patrol.contracts.PatrolAppServiceClientException; | ||
|
||
import java.net.Inet4Address; | ||
import java.net.NetworkInterface; | ||
import java.net.SocketException; | ||
import java.util.Enumeration; | ||
import java.util.Objects; | ||
|
||
public class LambdaTestPatrolJUnitRunner extends PatrolJUnitRunner { | ||
@Override | ||
public PatrolAppServiceClient createAppServiceClient() { | ||
// Create client with a default constructor (localhost:8082) by default. | ||
PatrolAppServiceClient client = new PatrolAppServiceClient(); | ||
waitForPatrolAppService(); | ||
|
||
try { | ||
client.listDartTests(); | ||
} catch (PatrolAppServiceClientException ex) { | ||
ex.printStackTrace(); | ||
// If the client on localhost:8082 fails, let's apply the wokraround | ||
Logger.INSTANCE.i("PatrolAppServiceClientException in createAppServiceClient " + ex.getMessage()); | ||
Logger.INSTANCE.i("LOOPBACK: " + getLoopback()); | ||
client = new PatrolAppServiceClient(getLoopback()); | ||
} | ||
|
||
return client; | ||
} | ||
|
||
public String getLoopback() { | ||
try { | ||
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); | ||
while (interfaces.hasMoreElements()) { | ||
NetworkInterface i = interfaces.nextElement(); | ||
Log.d("LOOPBACK", i.getDisplayName()); | ||
if (Objects.equals(i.getDisplayName(), "tun0")) { | ||
for (java.net.InterfaceAddress a : i.getInterfaceAddresses()) { | ||
if (a.getAddress() instanceof Inet4Address) { | ||
return a.getAddress().toString().substring(1); | ||
} | ||
} | ||
} | ||
|
||
} | ||
} catch (SocketException e) { | ||
} | ||
|
||
return null; | ||
} | ||
} |