Simple and useful wrapper for MagicPod Web API.
Download the latest magicpod-api-client executable from here and unzip it to any directory you prefer.
- You can check the help by
./magicpod-api-client help
- You can check the help of each command by
./magicpod-api-client help <command name>
In any cases below, you can check the test result status programatically by magicpod-api-client's return values.
- 0: Succeeded
- 1: Failed
- 2: Unresolved (Self-healing happened)
Upload app, run batch test for the app, wait until the batch run is finished, and delete the app if the test passed.
export MAGICPOD_API_TOKEN=<API token displayed on https://app.magicpod.com/accounts/api-token/>
export MAGICPOD_ORGANIZATION=<organization>
export MAGICPOD_PROJECT=<project>
FILE_NO=$(./magicpod-api-client upload-app -a <path to app/ipa/apk>)
./magicpod-api-client batch-run -S <test_settings_number> -s "{\"app_file_number\":\"${FILE_NO}\"}"
if [ $? = 0 ]
then
./magicpod-api-client delete-app -a ${FILE_NO}
fi
When you have already defined test settings on the project batch run page, the command is like below.
./magicpod-api-client batch-run -n -t <API token displayed on https://app.magicpod.com/accounts/api-token/> -o <organization> -p <project> -S <test_settings_number>
Or you can specify arbitrary settings.
./magicpod-api-client batch-run -n -t <API token displayed on https://app.magicpod.com/accounts/api-token/> -o <organization> -p <project> -s "{\"environment\":\"magic_pod\",\"os\":\"ios\",\"device_type\":\"simulator\",\"version\":\"13.1\",\"model\":\"iPhone 8\",\"app_type\":\"app_url\",\"app_url\":\"<URL to zipped app/ipa/apk>\"}"
./magicpod-api-client batch-run -t <API token displayed on https://app.magicpod.com/accounts/api-token/> -o <organization> -p <project> -S <test_settings_number>
Or
./magicpod-api-client batch-run -t <API token displayed on https://app.magicpod.com/accounts/api-token/> -o <organization> -p <project> -s "{\"test_settings\":[{\"environment\":\"magic_pod\",\"os\":\"ios\",\"device_type\":\"simulator\",\"version\":\"13.1\",\"model\":\"iPhone 8\",\"app_type\":\"app_url\",\"app_url\":\"<URL to zipped app/ipa/apk>\"},{\"environment\":\"magic_pod\",\"os\":\"ios\",\"device_type\":\"simulator\",\"version\":\"13.1\",\"model\":\"iPhone X\",\"app_type\":\"app_url\",\"app_url\":\"<URL to zipped app/ipa/apk>\"}]\,\"concurrency\": 1}"
You can execute the tests in parallel by settings concurrency
a number greater than 1.
export MAGICPOD_API_TOKEN=<API token displayed on https://app.magicpod.com/accounts/api-token/>
export MAGICPOD_ORGANIZATION=<organization>
./magicpod-api-client batch-run -p <project_1> -S <test_settings_number_1> &
PID1=$!
./magicpod-api-client batch-run -p <project_2> -S <test_settings_number_2> &
PID2=$!
# return values of the wait commands will be magicpod-api-client's return values.
wait $PID1
wait $PID2
Note: The default of Wait limit in seconds is 300 seconds.
You can also specify the wait limit in seconds. If execution time of your BatchRun/CrossBatchRun is expected to exceed the value of test count x 10 minutes, it would be better to specify as follows.
./magicpod-api-client batch-run -p <project_1> -S <test_settings_number_1> -w <seconds to wait> &
PID1=$!
See the details.
./magicpod-api-client batch-run --help
Run the following in the top directory of this repository.
go get -d .
go build
The following is the script to generate 64 bit executables and zip files for Mac, Linux, Windows.
# Mac64
GOOS=darwin GOARCH=amd64 go build -o out/mac64/magicpod-api-client.amd64
GOOS=darwin GOARCH=arm64 go build -o out/mac64/magicpod-api-client.arm64
lipo -create -output out/mac64/magicpod-api-client out/mac64/magicpod-api-client.amd64 out/mac64/magicpod-api-client.arm64
zip -jq out/magicpod-api-client.zip out/mac64/magicpod-api-client
# Linux64
GOOS=linux GOARCH=amd64 go build -o out/linux64/magicpod-api-client
zip -jq out/linux64_magicpod-api-client.zip out/linux64/magicpod-api-client
GOOS=linux GOARCH=arm64 go build -o out/linux64_arm64/magicpod-api-client
zip -jq out/linux64_arm64_magicpod-api-client.zip out/linux64_arm64/magicpod-api-client
# Win64
GOOS=windows GOARCH=amd64 go build -o out/win64/magicpod-api-client.exe
zip -jq out/win64_magicpod-api-client.exe.zip out/win64/magicpod-api-client.exe
Note: The similar process is not necessary for Windows and Linux binary.
To make a distributable binary for macOS, we need to code-sign and notarize the app. Otherwise, the app cannot be opened in the other machine due to macOS security feature to prevent malware.
- Store certificate for code-signing
- Create an app-specific password for the Apple ID
The basic procedures are as follows.
- Build a macOS binary
- Code-sign the binary
- Zip the binary file before submission
- Submit the zip file for notarization
Note: You can check
<certificate name>
and<Team ID>
bysecurity find-identity -v -p codesigning
.
The following is an example script.
# Build a universal macOS binary.
GOOS=darwin GOARCH=amd64 go build -o out/mac64/magicpod-api-client.amd64
GOOS=darwin GOARCH=arm64 go build -o out/mac64/magicpod-api-client.arm64
lipo -create -output out/mac64/magicpod-api-client out/mac64/magicpod-api-client.amd64 out/mac64/magicpod-api-client.arm64
# Code-sign the binary.
codesign -s <certificate name> -v --timestamp --options runtime out/mac64/magicpod-api-client
# For notarization, the binary file must be archived into a zip file.
zip -jq out/mac64_magicpod-api-client.zip out/mac64/magicpod-api-client
# Submit the zip file for notarization.
# You'll be asked to enter the app-specific password after this command.
xcrun notarytool submit out/mac64_magicpod-api-client.zip --apple-id <Apple ID> --team-id <Team ID> --wait