mirror of
https://github.com/flutter/flutter
synced 2024-09-20 00:32:02 +00:00
80 lines
2.4 KiB
Bash
Executable file
80 lines
2.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Copyright 2014 The Flutter Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# The tests to run on Firebase Test Lab.
|
|
# Currently, the test consists on building an Android App Bundle and ensuring
|
|
# that the app doesn't crash upon startup.
|
|
#
|
|
# When adding a test, ensure that there's at least a `print()` statement under lib/*.dart.
|
|
#
|
|
# The first and only parameter should be the path to an integration test.
|
|
|
|
# The devices where the tests are run.
|
|
#
|
|
# To get the full list of devices available, run:
|
|
# gcloud firebase test android models list
|
|
devices=(
|
|
# Pixel 3
|
|
"model=blueline,version=28"
|
|
"model=blueline,version=29"
|
|
|
|
# Moto Z XT1650
|
|
"model=griffin,version=24"
|
|
)
|
|
|
|
set -e
|
|
|
|
GIT_REVISION=$(git rev-parse HEAD)
|
|
|
|
DEVICE_FLAG=""
|
|
for device in ${devices[*]}; do
|
|
DEVICE_FLAG+="--device $device "
|
|
done
|
|
|
|
# New contributors will not have permissions to run this test - they won't be
|
|
# able to access the service account information. We should just mark the test
|
|
# as passed - it will run fine on post submit, where it will still catch
|
|
# failures.
|
|
# We can also still make sure that building a release app bundle still works.
|
|
if [[ $GCLOUD_FIREBASE_TESTLAB_KEY == ENCRYPTED* ]]; then
|
|
echo "This user does not have permission to run this test."
|
|
exit 0
|
|
fi
|
|
|
|
echo $GCLOUD_FIREBASE_TESTLAB_KEY > ${HOME}/gcloud-service-key.json
|
|
gcloud auth activate-service-account --key-file=${HOME}/gcloud-service-key.json
|
|
gcloud --quiet config set project flutter-infra
|
|
|
|
function test_app_bundle() {
|
|
pushd "$@"
|
|
../../../bin/flutter build appbundle --target-platform android-arm,android-arm64
|
|
|
|
aab="build/app/outputs/bundle/release/app-release.aab"
|
|
|
|
# If the app bundle doesn't exist, then exit with code 1.
|
|
if [ ! -f "$aab" ]; then
|
|
exit 1
|
|
fi
|
|
|
|
# Run the test.
|
|
gcloud firebase test android run \
|
|
--type robo \
|
|
--app "$aab" \
|
|
--timeout 2m \
|
|
--results-bucket=gs://flutter_firebase_testlab \
|
|
--results-dir="$@"/"$GIT_REVISION"/"$CIRRUS_BUILD_ID" \
|
|
$DEVICE_FLAG
|
|
|
|
rm -f /tmp/logcat
|
|
gsutil cat gs://flutter_firebase_testlab/"$@"/"$GIT_REVISION"/"$CIRRUS_BUILD_ID"/*/logcat > /tmp/logcat
|
|
# Check logcat for "E/flutter" - if it's there, something's wrong.
|
|
! grep "E/flutter" /tmp/logcat || false
|
|
# Check logcat for "I/flutter" - This is in the log if there's a print statement under lib/*.dart.
|
|
grep "I/flutter" /tmp/logcat
|
|
popd
|
|
}
|
|
|
|
test_app_bundle "$1"
|