5

I have a a XCUITest that fails to find a specific image, yet it is perfectly visible on the screen.(emulators and physical devices)

How can I workaround or make the the UIImage accessible to the tests? All I want to validate is whether the element is visible and touchable on the screen.

The UIImage is added as a subview to a UITableView - it is placed at the bottom of the TableView.

- (void)viewDidLoad {
         [super viewDidLoad];
         // portions of code left out here
         _aView = [[UIImageView alloc] initWithFrame:CGRectZero];
         [[self aView] setContentMode:UIViewContentModeScaleAspectFit];
         [[self aView] setImage:[UIImage imageNamed:IMG_NAME]] ;
         [[self tableView] addSubview:[self aView]]; 

The UIImageView is later layed out:

  - (void) viewWillLayoutSubviews {
       // portions of code left out here
       [[self aView] setFrame:CGRectMake(0, MAX([self tableView].contentSize.height - 41 ,[self tableView].bounds.size.height - 41) , 180, 30)];
       [[self aView] setCenter:CGPointMake([self tableView].center.x, [self aView].center.y)];

Then when running the test:

    let app = XCUIApplication()

    //this works
    let tapString = localizedString("skip")
    let skipButton = app.buttons[tapString].firstMatch
    if (skipButton.exists) {
        skipButton.tap()
    }

    let theImage = app.images["img.png"]
    let doesExist = theImage.exists //<< it never exists

Also doing a debug and printing all the images does not show the image. I set a breakpoint at the line with doesExists and in the debug window I run the command:

po app.images

Many images are found but not the particular image under test.

Is there perhaps an alternative to solve this problem?

Wayne
  • 3,359
  • 3
  • 30
  • 50
  • Check this https://stackoverflow.com/questions/34342666/how-to-test-uiimageview-elements-in-ios-xctest – Anand Dec 09 '18 at 05:46

0 Answers0