Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 15 additions & 32 deletions .github/workflows/e2e_tests_fdc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,18 +52,15 @@ jobs:
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
echo "FIREBASE_TOOLS_VERSION=$(firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
key: firebase-emulators-v4-${{ runner.os }}-${{ env.FIREBASE_TOOLS_VERSION }}
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
Expand All @@ -81,6 +78,7 @@ jobs:
- name: Start Firebase Emulator
run: |
cd ./packages/firebase_data_connect/firebase_data_connect/example
pkill -x postgres || true
unset PGSERVICEFILE
firebase experiments:enable dataconnect
./start-firebase-emulator.sh
Expand Down Expand Up @@ -136,8 +134,6 @@ jobs:
uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators
Expand Down Expand Up @@ -179,18 +175,15 @@ jobs:
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
echo "FIREBASE_TOOLS_VERSION=$(firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
key: firebase-emulators-v4-${{ runner.os }}-${{ env.FIREBASE_TOOLS_VERSION }}
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
Expand Down Expand Up @@ -218,6 +211,7 @@ jobs:
run: |
sudo chown -R 501:20 "/Users/runner/.npm"
cd ./packages/firebase_data_connect/firebase_data_connect/example
pkill -x postgres || true
unset PGSERVICEFILE
firebase experiments:enable dataconnect
./start-firebase-emulator.sh
Expand All @@ -232,10 +226,9 @@ jobs:
run: |
# Uncomment following line to have simulator logs printed out for debugging purposes.
# xcrun simctl spawn booted log stream --predicate 'eventMessage contains "flutter"' &
# The iOS simulator sometimes fails to connect the VM Service, hanging for
# 12 minutes before timing out. Use a 6-minute limit and retry once with
# a simulator reboot. Normal connection takes 30s-5min.
perl -e 'alarm 360; exec @ARGV' -- flutter test integration_test/e2e_test.dart -d "$SIMULATOR" --dart-define=CI=true --timeout 10x || {
# The iOS simulator sometimes fails to connect the VM Service. Keep a
# limit around the full test command and retry once with a simulator reboot.
perl -e 'alarm 900; exec @ARGV' -- flutter test integration_test/e2e_test.dart -d "$SIMULATOR" --dart-define=CI=true --timeout 10x || {
echo "First attempt failed or timed out. Rebooting simulator and retrying..."
xcrun simctl shutdown "$SIMULATOR" || true
xcrun simctl boot "$SIMULATOR"
Expand All @@ -248,8 +241,6 @@ jobs:
uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators
Expand Down Expand Up @@ -295,22 +286,20 @@ jobs:
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
echo "FIREBASE_TOOLS_VERSION=$(firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
key: firebase-emulators-v4-${{ runner.os }}-${{ env.FIREBASE_TOOLS_VERSION }}
- name: Start Firebase Emulator
run: |
sudo chown -R 501:20 "/Users/runner/.npm"
cd ./packages/firebase_data_connect/firebase_data_connect/example
pkill -x postgres || true
unset PGSERVICEFILE
firebase experiments:enable dataconnect
./start-firebase-emulator.sh
Expand All @@ -336,8 +325,6 @@ jobs:
uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators
Expand Down Expand Up @@ -374,21 +361,19 @@ jobs:
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
echo "FIREBASE_TOOLS_VERSION=$(firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
key: firebase-emulators-v4-${{ runner.os }}-${{ env.FIREBASE_TOOLS_VERSION }}
- name: Start Firebase Emulator
run: |
cd ./packages/firebase_data_connect/firebase_data_connect/example
pkill -x postgres || true
unset PGSERVICEFILE
firebase experiments:enable dataconnect
./start-firebase-emulator.sh
Expand All @@ -415,8 +400,6 @@ jobs:
uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,36 @@ import 'listen_e2e.dart';
import 'query_e2e.dart';
import 'websocket_e2e.dart';

Future<void> _signInTestUser() async {
final auth = FirebaseAuth.instance;
const password = 'password';
final email = 'fdc-test-${DateTime.now().microsecondsSinceEpoch}@mail.com';

for (var attempt = 0; attempt < 5; attempt++) {
try {
await auth.createUserWithEmailAndPassword(
email: email,
password: password,
);
return;
} on FirebaseAuthException catch (e) {
if (e.code == 'email-already-in-use') {
await auth.signInWithEmailAndPassword(
email: email,
password: password,
);
return;
}

if (attempt == 4) {
rethrow;
}
}

await Future<void>.delayed(Duration(seconds: attempt + 1));
}
}

void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();

Expand All @@ -31,8 +61,7 @@ void main() {
.useDataConnectEmulator('127.0.0.1', 9399);
await FirebaseAuth.instance.useAuthEmulator('127.0.0.1', 9099);

await FirebaseAuth.instance.createUserWithEmailAndPassword(
email: 'test@mail.com', password: 'password');
await _signInTestUser();
});

runInstanceTests();
Expand Down
Loading
Loading