UI tests failing in Xcode 11, but used to pass in Xcode 10 - swift

I recently upgraded to Xcode 11, and my UI tests that used to pass in Xcode 10, are now failing, no code changes were made, and now its failing to find an element on the screen that it used to find
I tried setting the isAccessibilityElement to true for the element I want, like I used to, and I can see it on the Accessibility inspector, but when I run my UI tests and try "po XCUIApplication()" the element I am looking for is not found, any thoughts on what could be wrong? I have been busting my head trying to solve this, but I don't know what's wrong anymore

Never mind turns out I had a button for a view, and Xcode 11 is more strict when it comes to UI testing than Xcode 10 used to be, so after changing the button to a view instead, the tests were passing again

Related

WidgetKit getCurrentConfigurations returns wrong list of widget-configurations

I've added Widget Extension with Configuration Intent.
For the logging purposes, I've tried to log number of widgets user of the app has
WidgetCenter.shared.getCurrentConfigurations { results in
guard let widgets = try? results.get() else { return }
..<log widgets.count>...
}
To my surprise, instead of the active [WidgetInfo]'s I've got a whole list of all the configuration intents ever been used in all the widgets instead of the actual ones.
I.e. I have 2 widgets on the screen, while WidgetCenter claims I have 9 current configurations. Any better ideas how to count widgets?
iOS 14 Beta 8 (both iPhone & Simulator) & Xcode 12 Beta 6
Apparently iOS caches the configuration of all widgets ever created for an app, and recreates the configurations cache on startup of iOS.
So if you really want function getCurrentConfigurations to return the current configurations, restart your device first.
It seems to be an Beta-issue, that has been resolved with GA-release. Need to observe more, but with today's Xcode build I'm seeing relevant numbers.
We were also trying to do something similar and were experiencing a similar issue. I think the issue is that the device is holding on to every widget configuration ever installed (which is odd and IMO not helpful). Once I erased all contents and settings the widget info reset back to 0.
Perhaps just a restart would clear that info out?

Swift not printing to console with print() command, other code works fine

I am using XCode Version 9.0 beta (9M136h) to write an application with a watchkit extension. I can get the application to communicate with the watch app and send information back and forth using the WatchConnectivity Framework. I also have the app utilizing the AlamoFire framework to communicate with a server.
All my functions are being called and executing, however, i cant seem to get print() to log anything to the console! I have tried placing various print() commands in different areas of the application, but none of them are producing anything to the console, even though the code around them is working.
I am 100% sure that I am looking at the correct area of XCode, I have gone to View->Debug Area->Activate Console and I have also made sure that All output is selected. I even tried adding the OS_ACTIVITY_MODE with its value as disabled but that didn't seem to do anything, either.
Here is an example of how I am using it in my ViewController.swift file:
override func viewDidLoad()
{
super.viewDidLoad()
print("view did load")
initWCSession()
print("Attorney General Jeff Sessions")
}
This code runs and calls the initWCSession() function but I never see any output of "view did load" or "Attorney General Jeff Sessions" anywhere!
Is this is a bug in XCode? Is there something I am forgetting? (I am new to XCode).
Try view.backgroundColor = .red
I think view contoller is not being called. Just a guess. Otherwise printshould work.
I am not sure why this worked but I went into Edit Scheme and checked the checkboxes for logging malloc. I saved these settings and then went back into Edit Scheme and unchecked the boxes and saved.
After that, I started seeing the print() statements log to the console!
Must be a bug in this version of XCode.
On the recent Xcode 11.3.1 I was getting the log lines from CocoaLumberjack, but nothing from my print calls. Restarting Xcode fixed the problem.

Xcode Storyboard not updating custom class Designables

I have had many problems after closing Xcode which one of them is that Xcode Storyboard is not updating Custom Class Designables anymore and do not show the content. For example I use "SkyFloatingLabelTextField" which worked perfeclty before so I can't blame the library. Is there some way so I can force it to update it?
What I mean illustration:
As you can see, in the first picture I have assigned the custom class and there is actually textField inside my viewController which for some reason doesn't show up anymore in Storyboard but works on real device or simulator.
So can I force it somehow?
I tried removing the class and all runtime values, clean, build close Xcode but nothing is working.
Huhh... Enabling "Automatically refresh views" did the trick. For some reason it was turned off in my case. If you do not know what I mean, then it is the setting in Editor -> Automatically refresh views

XPC connection interrupted in Xcode 7 for iOS 9

I recently updated to Xcode 7 and upgraded my iPhone to iOS 9. I have developed and released an iOS app that had worked perfectly fine on the latest version of iOS 8 and Xcode 6.
Upon trying to go through the process of updated the app for iOS 9 support, I am getting the most ridiculously strange error that has left me baffled.
I have done all the syntax corrections automatically through Xcode, and now my app builds properly. It even runs fine at first.
I have a button that segues to a view controller with a WebView. This view controller loads a link that will display either an image, website, or video from youtube. The content is loaded perfectly fine as always. However, the program will crash and reboot the simulator (and my iPhone) and send me to the lock screen when I click the Back button (I am on a navigation stack).
In Xcode, I get the following messages:
XPC Connection Interrupted.
Terminating since there is no system app.
I have Flurry analytics integrated in my app by the way, not sure if thats an issue.
How can I fix this issue? My searches for XPC connections do not seem to return problems similar to mine. I do not even have a clue what an XPC connection is, so why is this in my app anyway?
EDIT: I have found a workaround for the issue. I cannot really say it is a fix.
The crashing was occurring during the use of the method self.navigationController?.popViewControllerAnimated, when set to true. I happened to set this to false, and the crashing stops (now the transition looks awful).
I do not know why this works, and just adds to my confusion.
The problem lied in the storyboard for me as well. I created a new project and laid out the views and everything seemed to be working fine. I found these couple lines in the storyboard source (right click on storyboard and select view as -> source code) which weren't common between the working version and the broken version:
<keyCommands>
<keyCommand/>
</keyCommands>
I have no idea what those lines are supposed to do, or how they crept into my storyboard file, but they were what was crashing the app so hard that the phone had to restart. I removed those lines from my main project and everything worked again.
This error can be caused by executing a loop repeatedly. In my case it was a 'for' loop in which I reset the counting variable. As soon as I added an NSLog in the loop it was obvious.
I just faced the same problem. I don't know if that will help you, but I also think it's coming from the Storyboard:
In my case, the problem is coming from a UITextView. Whenever I try to change the default text inside it, I have this error. If I let the default text or leave it empty, the app works fine. Making an IBOutlet and changing the text programmatically works as well.
I tried with other UI elements, but only the UITextView seems to have this issue.
I have struggled with exact same error. Through a process of elimination I established that it had nothing to do with the any class but had to do with the storyboard. Luckily I keep regular backup copies and I tried to compare storyboards to establish what I had done - but could find nothing obvious.
The backup copy worked fine and I was able to copy my controller classes (from the faulty copy with the changes) into the backup copy and they worked fine.
I think there is a bug possibly in storyboards.
I have same error message when I place a subview in -layoutSubviews method:
-(void)layoutSubviews
{
[super layoutSubviews];
[self populateByImageViews];
}
It causes infinite cycle of layout process and crashes app. Don't place subviews in this place!
Deleting UITextView from the one of the view in Storybord removes the error in my case.
In valueChanged: method of a UIControl, I had the same problem
so I made the code inside valueChanged: to run in main thread and it solved the problem.
#IBAction func valueChanged(sender: AnyObject) {
dispatch_async(dispatch_get_main_queue(), {
//code
}
}
For me was some missing constraints with a UISearchBar, but the error was only in the simulator.
I only add some constraints and works better
For me it was xcode live issues caused by IB_DESIGNABLE
If you have any IB_DESIGNABLE in source files, the system's live tracker will check for issues in StoryBoard too. It may leads to unnecessary building.
To disable it-
Open Storyboard file. Editor -> Automatically Refresh Views (Uncheck)
If you needs to Disable Live issue tracking
XCode -> Preferences -> General -> Issues -> Uncheck Live Issues
Reference
My issue probably originated with some storyboard issue, but I cleaned the project, restarted Xcode AND restarted the simulator app and that fixed it.
When using QLPreviewController, I am confronted with this problem. Error messages as follows,
XPC connection interrupted
_BSMachError: (os/kern) invalid capability (20)
_BSMachError: (os/kern) invalid name (15)
Since XPC means OS X interprocess communication, so I think this can solve the problem, especial when updating the UI
dispatch_async(dispatch_get_main_queue(), ^{
// do what you want to do.
});
For Swift 4+, user
DispatchQueue.main.async {
//Your Code
}

mobile web app - keyboard not appearing

I have a mobile web application, working well on simulator 5.1/6.0, xcode 4.5 for iphone.
But when I test on a real device (3gs, ios 5.1), I get a strange behavior: anywhere I place an input field html element, where I need the user to fill in something, I tap the field, it gains focus (I see the cursor), but the touch-keyboard does not come up and I can't type anything. If I try it on the sim, all is fine, the kb comes up.
I am not sure how to diagnose this... tried googling for some answers, haven't found any :(
any ideas?
thanks...
ok found the issue, seems like the app was not created using the latest Xcode template (it is a legacy app), so I removed the MainWindowxxx.xibs which I don't need, and used the code from a new XCode app template to initialize the app by programmatically creating the main view controller, and setting it as the window's rootViewController. And, of course, call [self.window makeKeyAndVisible]