I tried for the longest time to click the back button, but I couldn’t reference it using an accessibilityLabel. I found that you need the navigation controller to pop the top view controller.
In the it block:
[nav popViewControllerAnimated:YES];
To get the navigation controller add these lines
In the beforeAll block:
UIWindow *window = [UIApplication sharedApplication].keyWindow;
nav = ((UINavigationController*)window.rootViewController);
Since the navigation controller needs to be declared throughout the whole test. Declare a navigation controller
Between the first describe statement and the beforeAll block:
it(@"should be able to load a table view controller", ^{
[tester waitForViewWithAccessibilityLabel:@"Locations Table"];
}
Tap a cell in a table view controller.
it(@"should be able to tap a cell in a table view controller", ^{
NSIndexPath *thirdLocation = [NSIndexPath indexPathForRow:2 inSection:0];
[tester tapRowAtIndexPath:thirdLocation inTableViewWithAccessibilityIdentifier:@"Locations Table"];
}
Tap a view (such as a button)
it(@"should be able to tap a cell in a table view controller", ^{
[tester tapRowAtIndexPath:thirdLocation inTableViewWithAccessibilityIdentifier:@"Locations Table"];
}
Check text of a cell
it(@"should have the correct third element in the table view", ^{
NSIndexPath *thirdLocation = [NSIndexPath indexPathForRow:2 inSection:0];
UITableViewCell *cell = (UITableViewCell*)[tester waitForCellAtIndexPath:thirdLocation inTableViewWithAccessibilityIdentifier:@"Locations Table"];
expect(cell.textLabel.text).to.equal(@"Statue Of Liberty");
expect(cell.detailTextLabel.text).to.equal(@"1");
});
Accessibility Label
KIF is relying on the accessibility label to find the views on the app. The accessibility label is on the identity inspector or it can be set programmatically.
Accessibility Label. Make sure it’s enabled.
Programmatically (in viewDidLoad of a table view controller for example):