You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

153 lines
5.7 KiB

// Copyright © 2015 Abhishek Banthia
#import <XCTest/XCTest.h>
@interface ClockerUITests : XCTestCase
@property (strong) XCUIApplication *app;
@end
@implementation ClockerUITests
- (void)setUp {
[super setUp];
self.continueAfterFailure = YES;
self.app = [[XCUIApplication alloc] init];
[self.app launch];
if (self.app.tables[@"FloatingTableView"].exists) {
XCUIElement *floatingPinButton = self.app.buttons[@"FloatingPin"];
[floatingPinButton click];
}
}
- (void)tearDown {
// Put teardown code here. This method is called after the invocation of each test method in the class.
[super tearDown];
}
/*
- (void)testChangingLabelFromPopover {
XCUIElement *menuElement = [[self.app menuBars] elementBoundByIndex:1];
[menuElement click];
XCUIElement *cell = [self.app.tables[@"mainTableView"] cells].firstMatch;
XCUIElement *originalField = cell.staticTexts[@"CustomNameLabelForCell"];
NSString *originalFieldValue = originalField.value;
[cell hover];
NSLog(@"%@", cell.buttons.count);
XCUIElement *extraOptionButton = cell.buttons[@"extraOptionButton"];
[extraOptionButton click];
XCUIElement *textField = self.app.textFields[@"CustomLabel"];
[textField typeText:@"My Precious"];
sleep(2);
XCUIElement *verifyCell = self.app.tables[@"mainTableView"].cells.firstMatch;
XCUIElement *newField = verifyCell.staticTexts[@"CustomNameLabelForCell"];
NSString *newFieldValue = (NSString *)newField.value;
XCTAssertTrue([newFieldValue isEqualToString:@"My Precious"]);
[self reset:textField withText:originalFieldValue];
sleep(2);
} */
- (void)testSettingAFavourite {
XCUIElement *menuElement = [[self.app statusItems] firstMatch];
[menuElement click];
[self.app/*@START_MENU_TOKEN@*/.tables[@"mainTableView"]/*[[".dialogs",".scrollViews.tables[@\"mainTableView\"]",".tables[@\"mainTableView\"]"],[[[-1,2],[-1,1],[-1,0,1]],[[-1,2],[-1,1]]],[0]]@END_MENU_TOKEN@*/ typeKey:@"," modifierFlags:XCUIKeyModifierCommand];
XCUIElement *clockerWindow = self.app.windows[@"Clocker"];
if (clockerWindow.tables.count == 0) {
XCTFail("We don't have any timezones added");
return;
}
NSInteger rowQueryCount = [[clockerWindow.tables[@"TimezoneTableView"] tableRows] count];
if (rowQueryCount == 0) {
XCTFail("We don't have any timezones added");
return;
}
XCUIElement *currentElement = [[clockerWindow.tables[@"TimezoneTableView"] tableRows] elementBoundByIndex:0];
XCUIElement *favoriteCheckbox = [currentElement.checkBoxes elementBoundByIndex:0];
[favoriteCheckbox click];
sleep(2);
}
- (void)testChangingTo12Hour {
XCUIElement *menuElement = [[self.app statusItems] firstMatch];
[menuElement click];
[self.app/*@START_MENU_TOKEN@*/.tables[@"mainTableView"]/*[[".dialogs",".scrollViews.tables[@\"mainTableView\"]",".tables[@\"mainTableView\"]"],[[[-1,2],[-1,1],[-1,0,1]],[[-1,2],[-1,1]]],[0]]@END_MENU_TOKEN@*/ typeKey:@"," modifierFlags:XCUIKeyModifierCommand];
XCUIElement *appearance = [[self.app.toolbars buttons] elementBoundByIndex: 1];
[appearance click];
XCUIElement *timeFormat = [self.app.popUpButtons[@"TimeFormatPopover"] firstMatch];
[timeFormat click]; // Open Time Format Popover
XCUIElementQuery *const query = [[[timeFormat childrenMatchingType:XCUIElementTypeMenu] firstMatch] childrenMatchingType:0];
[[query elementBoundByIndex:0] click]; // 0 is 12-Hour
XCUIElementQuery *mainTableView = [[self.app.tables[@"mainTableView"] cells] staticTexts];
NSPredicate *timeCells = [NSPredicate predicateWithFormat:@"identifier like 'ActualTime'"];
XCUIElementQuery *elements = [mainTableView matchingPredicate:timeCells];
for (NSInteger i = 0; i < elements.count; i++) {
XCUIElement *currentElement = [elements elementBoundByIndex:i];
NSString *currentTime = (NSString *)currentElement.value;
XCTAssertTrue([currentTime containsString:@"AM"] || [currentTime containsString:@"PM"]);
}
}
- (void)testChangingTo24Hour {
XCUIElement *menuElement = [[self.app statusItems] firstMatch];
[menuElement click];
[self.app/*@START_MENU_TOKEN@*/.tables[@"mainTableView"]/*[[".dialogs",".scrollViews.tables[@\"mainTableView\"]",".tables[@\"mainTableView\"]"],[[[-1,2],[-1,1],[-1,0,1]],[[-1,2],[-1,1]]],[0]]@END_MENU_TOKEN@*/ typeKey:@"," modifierFlags:XCUIKeyModifierCommand];
XCUIElement *appearance = [[self.app.toolbars buttons] elementBoundByIndex: 1];
[appearance click];
XCUIElement *timeFormat = self.app.popUpButtons[@"TimeFormatPopover"];
[timeFormat click];
XCUIElementQuery *const query = [[[timeFormat childrenMatchingType:XCUIElementTypeMenu] firstMatch] childrenMatchingType:0];
[[query elementBoundByIndex:1] click]; // 1 is 24-Hour
XCUIElementQuery *mainTableView = [[self.app.tables[@"mainTableView"] cells] staticTexts];
NSPredicate *timeCells = [NSPredicate predicateWithFormat:@"identifier like 'ActualTime'"];
XCUIElementQuery *elements = [mainTableView matchingPredicate:timeCells];
for (NSInteger i = 0; i < elements.count; i++) {
XCUIElement *currentElement = [elements elementBoundByIndex:i];
NSString *currentTime = (NSString *)currentElement.value;
XCTAssertFalse([currentTime containsString:@"AM"] || [currentTime containsString:@"PM"]);
}
}
- (void)reset:(XCUIElement *)field withText:(NSString *)text {
NSString *currentValue = (NSString *)field.value;
for (NSInteger i = 0; i < currentValue.length; i++) {
[field typeKey:XCUIKeyboardKeyDelete modifierFlags:XCUIKeyModifierNone];
}
[field typeText:text];
}
@end