Skip to content

Commit 96920c6

Browse files
feat: add session replay mode argument to reprosteps api
1 parent 7d40638 commit 96920c6

File tree

7 files changed

+33
-9
lines changed

7 files changed

+33
-9
lines changed

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ public void run() {
276276
}
277277

278278
@Override
279-
public void setReproStepsConfig(@Nullable String bugMode, @Nullable String crashMode) {
279+
public void setReproStepsConfig(@Nullable String bugMode, @Nullable String crashMode, @Nullable String sessionReplayMode) {
280280
try {
281281
final ReproConfigurations.Builder builder = new ReproConfigurations.Builder();
282282

@@ -290,6 +290,11 @@ public void setReproStepsConfig(@Nullable String bugMode, @Nullable String crash
290290
builder.setIssueMode(IssueType.Crash, resolvedCrashMode);
291291
}
292292

293+
if (sessionReplayMode != null) {
294+
final Integer resolvedSessionReplayMode = ArgsRegistry.reproModes.get(sessionReplayMode);
295+
builder.setIssueMode(IssueType.SessionReplay, resolvedSessionReplayMode);
296+
}
297+
293298
final ReproConfigurations config = builder.build();
294299

295300
Instabug.setReproConfigurations(config);

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,19 +379,21 @@ public void testGetUserAttributes() {
379379
public void testSetReproStepsConfig() {
380380
String bug = "ReproStepsMode.enabled";
381381
String crash = "ReproStepsMode.disabled";
382+
String sessionReplay = "ReproStepsMode.disabled";
382383

383384
ReproConfigurations config = mock(ReproConfigurations.class);
384385
MockedConstruction<ReproConfigurations.Builder> mReproConfigurationsBuilder = mockConstruction(ReproConfigurations.Builder.class, (mock, context) -> {
385386
when(mock.setIssueMode(anyInt(), anyInt())).thenReturn(mock);
386387
when(mock.build()).thenReturn(config);
387388
});
388389

389-
api.setReproStepsConfig(bug, crash);
390+
api.setReproStepsConfig(bug, crash, sessionReplay);
390391

391392
ReproConfigurations.Builder builder = mReproConfigurationsBuilder.constructed().get(0);
392393

393394
verify(builder).setIssueMode(IssueType.Bug, ReproMode.EnableWithScreenshots);
394395
verify(builder).setIssueMode(IssueType.Crash, ReproMode.Disable);
396+
verify(builder).setIssueMode(IssueType.SessionReplay, ReproMode.Disable);
395397
verify(builder).build();
396398

397399
mInstabug.verify(() -> Instabug.setReproConfigurations(config));

example/ios/InstabugTests/ApmApiTests.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,11 @@ - (void)testStartExecutionTraceWhenTraceNotNil {
6161
NSString *name = @"trace-name";
6262
XCTestExpectation *expectation = [self expectationWithDescription:@"Call completion handler"];
6363

64-
OCMStub([self.mAPM startExecutionTraceWithName:name]).andReturn([IBGExecutionTrace new]);
64+
OCMStub([self.mAPM startExecutionTraceWithName:name]).andReturn([IBGAPM startExecutionTraceWithName:name]);
6565

6666
[self.api startExecutionTraceId:expectedId name:name completion:^(NSString *actualId, FlutterError *error) {
6767
[expectation fulfill];
68-
XCTAssertEqual(actualId, expectedId);
68+
XCTAssertEqualObjects(actualId, expectedId);
6969
XCTAssertNil(error);
7070
}];
7171

@@ -124,7 +124,7 @@ - (void)testStartUITrace {
124124

125125
- (void)testEndUITrace {
126126
FlutterError *error;
127-
127+
128128
[self.api endUITraceWithError:&error];
129129

130130
OCMVerify([self.mAPM endUITrace]);

example/ios/InstabugTests/InstabugApiTests.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,12 +285,14 @@ - (void)testGetUserAttributes {
285285
- (void)testSetReproStepsConfig {
286286
NSString *bugMode = @"ReproStepsMode.enabled";
287287
NSString *crashMode = @"ReproStepsMode.disabled";
288+
NSString *sessioNReplayMode = @"ReproStepsMode.disabled";
288289
FlutterError *error;
289290

290-
[self.api setReproStepsConfigBugMode:bugMode crashMode:crashMode error:&error];
291+
[self.api setReproStepsConfigBugMode:bugMode crashMode:crashMode sessionReplayMode:sessioNReplayMode error:&error];
291292

292293
OCMVerify([self.mInstabug setReproStepsFor:IBGIssueTypeBug withMode:IBGUserStepsModeEnable]);
293294
OCMVerify([self.mInstabug setReproStepsFor:IBGIssueTypeCrash withMode:IBGUserStepsModeDisable]);
295+
OCMVerify([self.mInstabug setReproStepsFor:IBGIssueTypeSessionReplay withMode:IBGUserStepsModeDisable]);
294296
}
295297

296298
- (void)testReportScreenChange {

ios/Classes/Modules/InstabugApi.m

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ - (void)getUserAttributesWithCompletion:(nonnull void (^)(NSDictionary<NSString
149149
completion(Instabug.userAttributes, nil);
150150
}
151151

152-
- (void)setReproStepsConfigBugMode:(nullable NSString *)bugMode crashMode:(nullable NSString *)crashMode error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
152+
- (void)setReproStepsConfigBugMode:(nullable NSString *)bugMode crashMode:(nullable NSString *)crashMode sessionReplayMode:(nullable NSString *)sessionReplayMode error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error {
153153
if (bugMode != nil) {
154154
IBGUserStepsMode resolvedBugMode = ArgsRegistry.reproModes[bugMode].integerValue;
155155
[Instabug setReproStepsFor:IBGIssueTypeBug withMode:resolvedBugMode];
@@ -159,6 +159,11 @@ - (void)setReproStepsConfigBugMode:(nullable NSString *)bugMode crashMode:(nulla
159159
IBGUserStepsMode resolvedCrashMode = ArgsRegistry.reproModes[crashMode].integerValue;
160160
[Instabug setReproStepsFor:IBGIssueTypeCrash withMode:resolvedCrashMode];
161161
}
162+
163+
if (sessionReplayMode != nil) {
164+
IBGUserStepsMode resolvedSessionReplayMode = ArgsRegistry.reproModes[sessionReplayMode].integerValue;
165+
[Instabug setReproStepsFor:IBGIssueTypeSessionReplay withMode:resolvedSessionReplayMode];
166+
}
162167
}
163168

164169
- (UIImage *)getImageForAsset:(NSString *)assetName {

lib/src/modules/instabug.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,10 +351,11 @@ class Instabug {
351351
}
352352
}
353353

354-
/// Sets the repro steps mode for bugs and crashes.
354+
/// Sets the repro steps mode for bugs, crashes and session Replay.
355355
///
356356
/// [bug] repro steps mode for bug reports.
357357
/// [crash] repro steps mode for crash reports.
358+
/// [sessionReplay] repro steps mode for session replay.
358359
/// [all] repro steps mode for both bug and crash reports, when present it
359360
/// overrides [bug] and [crash].
360361
///
@@ -363,19 +364,23 @@ class Instabug {
363364
/// Instabug.setReproStepsConfig(
364365
/// bug: ReproStepsMode.enabled,
365366
/// crash: ReproStepsMode.disabled,
367+
/// sessionReplay: ReproStepsMode.enabled,
366368
/// );
367369
/// ```
368370
static Future<void> setReproStepsConfig({
369371
ReproStepsMode? bug,
370372
ReproStepsMode? crash,
373+
ReproStepsMode? sessionReplay,
371374
ReproStepsMode? all,
372375
}) async {
373376
var bugMode = bug;
374377
var crashMode = crash;
378+
var sessionReplayMode = sessionReplay;
375379

376380
if (all != null) {
377381
bugMode = all;
378382
crashMode = all;
383+
sessionReplayMode = all;
379384
}
380385

381386
// There's an issue with crashes repro steps with screenshots in the iOS SDK
@@ -389,6 +394,7 @@ class Instabug {
389394
return _host.setReproStepsConfig(
390395
bugMode.toString(),
391396
crashMode.toString(),
397+
sessionReplayMode.toString(),
392398
);
393399
}
394400

pigeons/instabug.api.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@ abstract class InstabugHostApi {
3939
@async
4040
Map<String, String>? getUserAttributes();
4141

42-
void setReproStepsConfig(String? bugMode, String? crashMode);
42+
void setReproStepsConfig(
43+
String? bugMode,
44+
String? crashMode,
45+
String? sessionReplayMode,
46+
);
4347
void reportScreenChange(String screenName);
4448

4549
void setCustomBrandingImage(String light, String dark);

0 commit comments

Comments
 (0)