Skip to content

Commit

Permalink
Added support for XCUITests (with a subset of checks). Add check for …
Browse files Browse the repository at this point in the history
…dynamic text check. Fixed typos and some APIs have been renamed for clarity. APIs imporvements: more flexible scan APIs that return result info. Improved accessibility auto enable code. Extracted GTX core logic into a C++ library and used Protobuf for cross platform execution.
  • Loading branch information
vigoroustelevision committed Feb 8, 2021
1 parent 2d1be50 commit 409c037
Show file tree
Hide file tree
Showing 159 changed files with 11,477 additions and 2,071 deletions.
42 changes: 40 additions & 2 deletions Classes/GTXAccessibilityTree.m
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,19 @@
*/
static const NSInteger kAccessibilityChildrenUpperBound = 50000;

/**
* The class name for @c UIPickerTableView elements. Must be accessed via @c NSClassFromString
* because it is a private class.
*/
static NSString *const kUIPickerTableViewClassName = @"UIPickerTableView";

/**
* The class name for accessibility children of @c UIPickerTableView elements. Must be accessed via
* @c NSClassFromString because it is a private class.
*/
static NSString *const kUIPickerTableViewAccessibilityElementClassName =
@"UITableViewCellAccessibilityElement";

@implementation GTXAccessibilityTree {
// A queue of elements to be visited.
NSMutableArray *_queue;
Expand Down Expand Up @@ -62,7 +75,6 @@ - (id)nextObject {
if (!nextInQueue) {
return nil;
}

[_visitedElements addObject:nextInQueue];
if ([nextInQueue respondsToSelector:@selector(isAccessibilityElement)]) {
if (![nextInQueue isAccessibilityElement]) {
Expand Down Expand Up @@ -199,7 +211,33 @@ - (BOOL)gtx_isAccessibilityHiddenElement:(id)element {
isHiddenDueToFrame = frame.size.width == 0 || frame.size.height == 0;
}
return (isHidden || isAccessibilityHidden ||
(isHiddenDueToFrame && isHiddenDueToAccessibilityFrame));
(isHiddenDueToFrame && isHiddenDueToAccessibilityFrame) ||
[self gtx_isElementOffscreenPickerViewElement:element]);
}

/**
* Determines if the element represents an accessibility element in a @c UIPickerTableView, and the
* element is offscreen.
*
* @param element The accessibility element to check.
* @return @c YES if the element is an offscreen accessibility element whose container is a
* @c UIPickerTableView, @c NO otherwise.
*/
- (BOOL)gtx_isElementOffscreenPickerViewElement:(id)element {
if (![element respondsToSelector:@selector(accessibilityFrame)] ||
![element respondsToSelector:@selector(accessibilityContainer)]) {
return NO;
}
id accessibilityContainer = [element accessibilityContainer];
if ([accessibilityContainer isKindOfClass:NSClassFromString(kUIPickerTableViewClassName)] &&
[element isKindOfClass:NSClassFromString(kUIPickerTableViewAccessibilityElementClassName)]) {
CGRect containerAccessibilityFrame = [accessibilityContainer accessibilityFrame];
CGRect childAccessibilityFrame = [element accessibilityFrame];
if (!CGRectIntersectsRect(childAccessibilityFrame, containerAccessibilityFrame)) {
return YES;
}
}
return NO;
}

@end
43 changes: 0 additions & 43 deletions Classes/GTXArtifactCollector.h

This file was deleted.

52 changes: 0 additions & 52 deletions Classes/GTXArtifactCollector.m

This file was deleted.

86 changes: 0 additions & 86 deletions Classes/GTXArtifactProcessor.h

This file was deleted.

140 changes: 0 additions & 140 deletions Classes/GTXArtifactProcessor.m

This file was deleted.

Loading

0 comments on commit 409c037

Please sign in to comment.