Skip to content

Commit d8017cd

Browse files
authored
Merge pull request #463 from Instabug/dev
2 parents a18e8d2 + aaca54e commit d8017cd

36 files changed

+489
-102
lines changed

.circleci/config.yml

Lines changed: 35 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
version: 2.1
22

33
orbs:
4-
android: circleci/[email protected]
4+
android: circleci/android@2.5.0
55
flutter: circleci/[email protected]
6-
node: circleci/[email protected]
6+
node: circleci/[email protected]
7+
advanced-checkout: vsco/[email protected]
78

89
commands:
910
setup_flutter:
@@ -46,7 +47,7 @@ commands:
4647
steps:
4748
- run:
4849
name: Install XCUITest Driver
49-
command: appium driver install xcuitest@4.35.0
50+
command: appium driver install xcuitest@7.14.0
5051
- when:
5152
condition:
5253
equal:
@@ -55,7 +56,7 @@ commands:
5556
steps:
5657
- run:
5758
name: Install UIAutomator2 Driver
58-
command: appium driver install uiautomator2@2.29.5
59+
command: appium driver install uiautomator2@3.1.0
5960
- run:
6061
name: Launch Appium
6162
# Enable --relaxed-security for `mobile: shell` command that Captain uses internally.
@@ -103,13 +104,12 @@ commands:
103104
name: Build Pigeons
104105
command: dart run build_runner build --delete-conflicting-outputs
105106

106-
107107
jobs:
108108
danger:
109109
executor:
110110
name: node/default
111111
steps:
112-
- checkout
112+
- advanced-checkout/shallow-checkout
113113
- node/install-packages:
114114
pkg-manager: yarn
115115
override-ci-command: yarn install --frozen-lockfile --network-concurrency 1
@@ -126,7 +126,7 @@ jobs:
126126
docker:
127127
- image: cirrusci/flutter:<<parameters.version>>
128128
steps:
129-
- checkout
129+
- advanced-checkout/shallow-checkout
130130
- install_flutter_and_dart_packages:
131131
generate_pigeons: true
132132
- run: flutter test --coverage
@@ -142,16 +142,10 @@ jobs:
142142
executor:
143143
name: android/android-machine
144144
resource-class: xlarge
145-
tag: 2022.04.1
145+
tag: default
146146
steps:
147-
- checkout
147+
- advanced-checkout/shallow-checkout
148148
- setup_flutter
149-
- android/start-emulator-and-run-tests:
150-
system-image: system-images;android-30;google_apis;x86
151-
additional-avd-args: -d "Nexus 5"
152-
post-emulator-launch-assemble-command: cd example && flutter build apk
153-
run-tests-working-directory: example/android
154-
test-command: ./gradlew app:connectedAndroidTest -Ptarget=`pwd`/../test_driver/example.dart
155149
- android/run-tests:
156150
working-directory: example/android
157151
test-command: ./gradlew test
@@ -160,42 +154,46 @@ jobs:
160154
executor:
161155
name: android/android-machine
162156
resource-class: xlarge
163-
tag: 2022.04.1
157+
tag: default
164158
steps:
165-
- checkout
159+
- advanced-checkout/shallow-checkout
166160
- setup_captain:
167161
platform: android
168162
- setup_flutter
169163
- android/start-emulator-and-run-tests:
170-
system-image: system-images;android-30;google_apis;x86
171-
additional-avd-args: -d "pixel_4"
172-
post-emulator-launch-assemble-command: cd example || true && flutter build apk --debug
173-
test-command: cd e2e || true && dotnet test
164+
run-tests-working-directory: e2e
165+
additional-avd-args: --device 3
166+
system-image: system-images;android-33;default;x86_64
167+
post-emulator-launch-assemble-command: cd example && flutter build apk --debug
168+
test-command: dotnet test
174169

175170
test_ios:
176171
macos:
177-
xcode: 13.4.1
172+
xcode: 15.2.0
178173
resource_class: macos.m1.medium.gen1
174+
environment:
175+
INSTABUG_SOURCEMAPS_UPLOAD_DISABLE: true
179176
steps:
180-
- checkout
177+
- advanced-checkout/shallow-checkout
181178
- setup_ios
182179
- run:
183180
name: Build and run tests
184-
working_directory: example/ios
181+
working_directory: ~/project/example/ios
185182
command: |
186183
xcodebuild -allowProvisioningUpdates \
187-
-workspace Runner.xcworkspace \
188-
-scheme Runner \
189-
-sdk iphonesimulator \
190-
-destination 'name=iPhone 12 Pro Max' \
191-
test | xcpretty
184+
-workspace Runner.xcworkspace \
185+
-scheme Runner \
186+
-resultBundlePath coverage/result.xcresult \
187+
-sdk iphonesimulator \
188+
-destination 'platform=iOS Simulator,name=iPhone 15 Pro Max,OS=17.2' \
189+
test | xcpretty
192190
193191
e2e_ios_captain:
194192
macos:
195-
xcode: 13.4.1
193+
xcode: 15.2.0
196194
resource_class: macos.m1.medium.gen1
197195
steps:
198-
- checkout
196+
- advanced-checkout/shallow-checkout
199197
- setup_captain:
200198
platform: ios
201199
- setup_ios
@@ -213,7 +211,7 @@ jobs:
213211
docker:
214212
- image: cirrusci/flutter
215213
steps:
216-
- checkout
214+
- advanced-checkout/shallow-checkout
217215
- install_flutter_and_dart_packages:
218216
generate_pigeons: false
219217
- run:
@@ -224,7 +222,7 @@ jobs:
224222
docker:
225223
- image: cirrusci/flutter
226224
steps:
227-
- checkout
225+
- advanced-checkout/shallow-checkout
228226
- install_flutter_and_dart_packages:
229227
generate_pigeons: true
230228
- run:
@@ -235,7 +233,7 @@ jobs:
235233
docker:
236234
- image: cirrusci/flutter
237235
steps:
238-
- checkout
236+
- advanced-checkout/shallow-checkout
239237
- install_flutter_and_dart_packages:
240238
generate_pigeons: true
241239
- run:
@@ -245,11 +243,11 @@ jobs:
245243

246244
release:
247245
macos:
248-
xcode: 13.4.1
246+
xcode: 15.2.0
249247
resource_class: macos.m1.medium.gen1
250248
working_directory: "~"
251249
steps:
252-
- checkout:
250+
- advanced-checkout/shallow-checkout:
253251
path: ~/project
254252
# Flutter doesn't support Apple Silicon yet, so we need to install Rosetta use Flutter on M1 machines.
255253
- run:
@@ -284,6 +282,7 @@ workflows:
284282
version: 2
285283
build-test-and-approval-deploy:
286284
jobs:
285+
- test_android
287286
- danger:
288287
requires:
289288
- test_flutter-stable
@@ -293,7 +292,6 @@ workflows:
293292
- test_flutter:
294293
name: test_flutter-2.10.5
295294
version: 2.10.5
296-
- test_android
297295
- e2e_android_captain
298296
- test_ios
299297
- e2e_ios_captain

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
# Changelog
22

3+
## [13.0.0](https://github.com/Instabug/Instabug-React-Native/compare/v12.7.0...dev) (April 29, 2024)
4+
5+
### Added
6+
7+
- Adds custom app rating api ([#453](https://github.com/Instabug/Instabug-Flutter/pull/453))
8+
- Add `SessionReplay.getSessionReplayLink` API which retrieves the current session's replay link ([#445](https://github.com/Instabug/Instabug-Flutter/pull/445)).
9+
- Add support for App Flows APIs `APM.startFlow`, `APM.endFlow` and `APM.setFlowAttribute` ([#446](https://github.com/Instabug/Instabug-Flutter/pull/446)).
10+
11+
### Deprecated
12+
13+
- Deprecate execution traces APIs `APM.startExecutionTrace`, `APM.setExecutionTraceAttribute`, `APM.endExecutionTrace`, `Trace.setAttribute` and `Trace.end` in favor of the new app flow APIs ([#446](https://github.com/Instabug/Instabug-Flutter/pull/446)).
14+
15+
### Changed
16+
- Bump Instabug Android SDK to v13.0.0 ([#455](https://github.com/Instabug/Instabug-Flutter/pull/455)). [See release notes](https://github.com/Instabug/Instabug-Android/releases/tag/v13.0.0).
17+
- Bump Instabug iOS SDK to v13.0.0 ([#446](https://github.com/Instabug/Instabug-Flutter/pull/446)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/13.0.0).
18+
319
## [12.7.0](https://github.com/Instabug/Instabug-Flutter/compare/v12.5.0...v12.7.0) (February 15, 2024)
420

521
### Added

android/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
group 'com.instabug.flutter'
2-
version '12.7.0'
2+
version '13.0.0'
33

44
buildscript {
55
repositories {
@@ -41,7 +41,7 @@ android {
4141
}
4242

4343
dependencies {
44-
api 'com.instabug.library:instabug:12.7.1'
44+
api 'com.instabug.library:instabug:13.0.0'
4545

4646
testImplementation 'junit:junit:4.13.2'
4747
testImplementation "org.mockito:mockito-inline:3.12.1"

android/src/main/java/com/instabug/flutter/modules/ApmApi.java

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,21 @@
11
package com.instabug.flutter.modules;
22

33
import android.util.Log;
4-
54
import androidx.annotation.NonNull;
6-
5+
import androidx.annotation.Nullable;
76
import com.instabug.apm.APM;
87
import com.instabug.apm.model.ExecutionTrace;
98
import com.instabug.apm.networking.APMNetworkLogger;
109
import com.instabug.flutter.generated.ApmPigeon;
1110
import com.instabug.flutter.util.Reflection;
1211
import com.instabug.flutter.util.ThreadManager;
13-
12+
import io.flutter.plugin.common.BinaryMessenger;
1413
import org.json.JSONObject;
1514

1615
import java.lang.reflect.Method;
1716
import java.util.HashMap;
1817
import java.util.Map;
1918

20-
import io.flutter.plugin.common.BinaryMessenger;
21-
2219
public class ApmApi implements ApmPigeon.ApmHostApi {
2320
private final String TAG = ApmApi.class.getName();
2421
private final HashMap<String, ExecutionTrace> traces = new HashMap<>();
@@ -95,6 +92,33 @@ public void run() {
9592
);
9693
}
9794

95+
@Override
96+
public void startFlow(@NonNull String name) {
97+
try {
98+
APM.startFlow(name);
99+
} catch (Exception e) {
100+
e.printStackTrace();
101+
}
102+
}
103+
104+
@Override
105+
public void setFlowAttribute(@NonNull String name, @NonNull String key, @Nullable String value) {
106+
try {
107+
APM.setFlowAttribute(name, key, value);
108+
} catch (Exception e) {
109+
e.printStackTrace();
110+
}
111+
}
112+
113+
@Override
114+
public void endFlow(@NonNull String name) {
115+
try {
116+
APM.endFlow(name);
117+
} catch (Exception e) {
118+
e.printStackTrace();
119+
}
120+
}
121+
98122
@Override
99123
public void setExecutionTraceAttribute(@NonNull String id, @NonNull String key, @NonNull String value) {
100124
try {

android/src/main/java/com/instabug/flutter/modules/InstabugApi.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public void setCurrentPlatform() {
7676
@Override
7777
public void setEnabled(@NonNull Boolean isEnabled) {
7878
try {
79-
if(isEnabled)
79+
if (isEnabled)
8080
Instabug.enable();
8181
else
8282
Instabug.disable();
@@ -171,13 +171,12 @@ public void setSessionProfilerEnabled(@NonNull Boolean enabled) {
171171

172172
@Override
173173
public void setValueForStringWithKey(@NonNull String value, @NonNull String key) {
174-
if(ArgsRegistry.placeholders.containsKey(key)) {
174+
if (ArgsRegistry.placeholders.containsKey(key)) {
175175
InstabugCustomTextPlaceHolder.Key resolvedKey = ArgsRegistry.placeholders.get(key);
176176
placeHolder.set(resolvedKey, value);
177177
Instabug.setCustomTextPlaceHolders(placeHolder);
178-
}
179-
else {
180-
Log.i(TAG, "Instabug: " + key + " is only relevant to iOS.");
178+
} else {
179+
Log.i(TAG, "Instabug: " + key + " is only relevant to iOS.");
181180
}
182181
}
183182

@@ -397,4 +396,9 @@ public void networkLog(@NonNull Map<String, Object> data) {
397396
Log.e(TAG, "Network logging failed");
398397
}
399398
}
399+
400+
@Override
401+
public void willRedirectToStore() {
402+
Instabug.willRedirectToStore();
403+
}
400404
}

android/src/main/java/com/instabug/flutter/modules/SessionReplayApi.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.instabug.flutter.modules;
22

33
import androidx.annotation.NonNull;
4+
import androidx.annotation.Nullable;
45

56
import com.instabug.flutter.generated.SessionReplayPigeon;
7+
import com.instabug.library.OnSessionReplayLinkReady;
68
import com.instabug.library.sessionreplay.SessionReplay;
79

810
import io.flutter.plugin.common.BinaryMessenger;
@@ -33,4 +35,11 @@ public void setInstabugLogsEnabled(@NonNull Boolean isEnabled) {
3335
public void setUserStepsEnabled(@NonNull Boolean isEnabled) {
3436
SessionReplay.setUserStepsEnabled(isEnabled);
3537
}
38+
39+
@Override
40+
public void getSessionReplayLink(@NonNull SessionReplayPigeon.Result<String> result) {
41+
SessionReplay.getSessionReplayLink(result::success);
42+
}
43+
44+
3645
}

android/src/test/java/com/instabug/flutter/ApmApiTest.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,39 @@ public void testEndExecutionTrace() {
148148
verify(mTrace).end();
149149
}
150150

151+
@Test
152+
public void testStartFlow() {
153+
String appFlowName = "appFlowName";
154+
155+
api.startFlow(appFlowName);
156+
157+
mAPM.verify(() -> APM.startFlow(appFlowName));
158+
mAPM.verifyNoMoreInteractions();
159+
}
160+
161+
@Test
162+
public void testEndFlow() {
163+
String appFlowName = "appFlowName";
164+
165+
api.startFlow(appFlowName);
166+
167+
mAPM.verify(() -> APM.startFlow(appFlowName));
168+
mAPM.verifyNoMoreInteractions();
169+
}
170+
171+
@Test
172+
public void testSetFlowAttribute() {
173+
String appFlowName = "appFlowName";
174+
String flowAttributeKey = "attributeKey";
175+
String flowAttributeValue = "attributeValue";
176+
177+
178+
api.setFlowAttribute(appFlowName, flowAttributeKey, flowAttributeValue);
179+
180+
mAPM.verify(() -> APM.setFlowAttribute(appFlowName, flowAttributeKey, flowAttributeValue));
181+
mAPM.verifyNoMoreInteractions();
182+
}
183+
151184
@Test
152185
public void testStartUITrace() {
153186
String name = "login";

0 commit comments

Comments
 (0)