Skip to content

Commit

Permalink
feat: Add a setting to respect half modals while detecting active apps
Browse files Browse the repository at this point in the history
  • Loading branch information
mwakizaka committed Oct 16, 2024
1 parent f9223b3 commit eb5e7cb
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 0 deletions.
4 changes: 4 additions & 0 deletions WebDriverAgentLib/Commands/FBSessionCommands.m
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,7 @@ + (NSArray *)routes
FB_SETTING_DEFAULT_ALERT_ACTION: request.session.defaultAlertAction ?: @"",
FB_SETTING_MAX_TYPING_FREQUENCY: @([FBConfiguration maxTypingFrequency]),
FB_SETTING_RESPECT_SYSTEM_ALERTS: @([FBConfiguration shouldRespectSystemAlerts]),
FB_SETTING_RESPECT_HALF_MODALS: @([FBConfiguration shouldRespectHalfModals]),
#if !TARGET_OS_TV
FB_SETTING_SCREENSHOT_ORIENTATION: [FBConfiguration humanReadableScreenshotOrientation],
#endif
Expand Down Expand Up @@ -394,6 +395,9 @@ + (NSArray *)routes
if (nil != [settings objectForKey:FB_SETTING_RESPECT_SYSTEM_ALERTS]) {
[FBConfiguration setShouldRespectSystemAlerts:[[settings objectForKey:FB_SETTING_RESPECT_SYSTEM_ALERTS] boolValue]];
}
if (nil != [settings objectForKey:FB_SETTING_RESPECT_HALF_MODALS]) {
[FBConfiguration setShouldRespectHalfModals:[[settings objectForKey:FB_SETTING_RESPECT_HALF_MODALS] boolValue]];
}
// SNAPSHOT_TIMEOUT setting is deprecated. Please use CUSTOM_SNAPSHOT_TIMEOUT instead
if (nil != [settings objectForKey:FB_SETTING_SNAPSHOT_TIMEOUT]) {
[FBConfiguration setCustomSnapshotTimeout:[[settings objectForKey:FB_SETTING_SNAPSHOT_TIMEOUT] doubleValue]];
Expand Down
3 changes: 3 additions & 0 deletions WebDriverAgentLib/Routing/FBSession.m
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,9 @@ - (XCUIApplication *)activeApplication
if ([FBConfiguration shouldRespectSystemAlerts]
&& [XCUIApplication.fb_systemApplication descendantsMatchingType:XCUIElementTypeAlert].count > 0) {
return XCUIApplication.fb_systemApplication;
} else if ([FBConfiguration shouldRespectHalfModals]
&& [XCUIApplication.fb_systemApplication fb_descendantsMatchingProperty:@"name" value:@"SBTransientOverlayWindow" partialSearch:false].count > 0) {
return XCUIApplication.fb_systemApplication;
}
return (XCUIApplication *)self.testedApplication;
}
Expand Down
4 changes: 4 additions & 0 deletions WebDriverAgentLib/Utilities/FBConfiguration.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ extern NSString *const FBSnapshotMaxDepthKey;
+ (void)setShouldRespectSystemAlerts:(BOOL)value;
+ (BOOL)shouldRespectSystemAlerts;

/* Enforces WDA to verify the presense of half modals while checking for an active app */
+ (void)setShouldRespectHalfModals:(BOOL)value;
+ (BOOL)shouldRespectHalfModals;

/**
* Extract switch value from arguments
*
Expand Down
11 changes: 11 additions & 0 deletions WebDriverAgentLib/Utilities/FBConfiguration.m
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
static BOOL FBShouldUseTestManagerForVisibilityDetection = NO;
static BOOL FBShouldUseSingletonTestManager = YES;
static BOOL FBShouldRespectSystemAlerts = NO;
static BOOL FBShouldRespectHalfModals = NO;

static NSUInteger FBMjpegScalingFactor = 100;
static BOOL FBMjpegShouldFixOrientation = NO;
Expand Down Expand Up @@ -388,6 +389,16 @@ + (BOOL)shouldRespectSystemAlerts
return FBShouldRespectSystemAlerts;
}

+ (void)setShouldRespectHalfModals:(BOOL)value
{
FBShouldRespectHalfModals = value;
}

+ (BOOL)shouldRespectHalfModals
{
return FBShouldRespectHalfModals;
}

+ (void)setUseFirstMatch:(BOOL)enabled
{
FBShouldUseFirstMatch = enabled;
Expand Down
1 change: 1 addition & 0 deletions WebDriverAgentLib/Utilities/FBSettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ extern NSString* const FB_SETTING_WAIT_FOR_IDLE_TIMEOUT;
extern NSString* const FB_SETTING_ANIMATION_COOL_OFF_TIMEOUT;
extern NSString* const FB_SETTING_MAX_TYPING_FREQUENCY;
extern NSString* const FB_SETTING_RESPECT_SYSTEM_ALERTS;
extern NSString* const FB_SETTING_RESPECT_HALF_MODALS;


NS_ASSUME_NONNULL_END
1 change: 1 addition & 0 deletions WebDriverAgentLib/Utilities/FBSettings.m
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,4 @@
NSString* const FB_SETTING_ANIMATION_COOL_OFF_TIMEOUT = @"animationCoolOffTimeout";
NSString* const FB_SETTING_MAX_TYPING_FREQUENCY = @"maxTypingFrequency";
NSString* const FB_SETTING_RESPECT_SYSTEM_ALERTS = @"respectSystemAlerts";
NSString* const FB_SETTING_RESPECT_HALF_MODALS = @"respectHalfModals";

0 comments on commit eb5e7cb

Please sign in to comment.