How can I prevent calabash-android from pushing the apk for every feature file? - calabash-android

When I run calabash-android, it appears to push the apk to the device for every feature file. I would prefer to push the apk once and reuse it, as each push takes about half a second, and I expect eventually to have enough feature files for this to matter. I'd be happy with a solution which doesn't push the apk at all and to push it myself in an earlier step.

Is it pushing the app each time or just restarting the app? My tests restart between each step by default but I have always had to control the installations.
I deal with the installation by tagging the scenarios that require a reinstall and looking for the tag in my before hook.
If it is the restarting between scenarios that you want to control then you can use the RESET_BETWEEN_SCENARIOS setting.

Related

Why expo hot reload sometimes happend with no aparent reason?

Sometimes with no aparent reason the app gets refreshed, sometimes when i open a file. And when i add a library the expo development server crash, i think that maybe is something with watchman configuration that i don't know how to change. This is enoying.Any help?
PD: I'm using vscode
fast refresh will happen any time a file is changed in your project directory. if you have some other tools that run in that same directory and cause files to be changed then it could be happening seemingly randomly

Do OTA updates in Expo get in motion on the first opening after brand new download from the stores?

I developed an app with React Native and distributed it with Expo. I published the final version into Google Play and Apple Store.
Some time later I discovered in Expo's docs on Publishing that expo publish allows you to create an OTA ("over the air") update that is built into Expo and updates the app automatically, according to this answer:
The standalone app knows to look for updates at your app's published url.
This I tested and worked very well.
However, now I see that people downloading the app from the stores (that is, either Google Play or Apple Store) apparently get the initial version of the app, not the updated one.
What is the exact workflow for the OTA updates? Do they go and "replace" the existing version in Google Play and Apple Store the first time they open it? Or do they need to open it over again to get the update?
And what exactly triggers the update of the app?
We've been having similar problems. I can see two things which might be causing this in your case:
Check in app.json if updates.fallbackToCacheTimeout is set. If it's set, that's how long expo will try to download the latest update before showing the last downloaded version (which will be the initial version after initial download).
If you have a large update, expo will try downloading the update for 30s before showing the last version of your app.
Check here for more info: https://docs.expo.io/versions/latest/guides/configuring-ota-updates/
OTA updates do not replace the version downloaded from the app store, they are stored first in the device's cache before being run on app start after download. Source https://docs.expo.io/versions/latest/sdk/updates/
Update downloads are automatically triggered on app start, then, depending on the settings it will either wait (as long as updates.fallbackToCacheTimeout allows) before showing the app, or show it immediately.
You can force the app to run the latest update (if you have one waiting) by just force quitting the app, then restarting.
Hope this helps!

OSX: NSUserNotification - Displays old app icons.

I am updating my build with a new UI and I changed the app icons. However when testing and running the new .dmg installs, the notifications keep displaying the old app icon.
Is there a way to clear the cache?
I think you can solve this by incrementing the Build number in the General section for the build Target. It worked for me :)
OS X apps typically contain multiple app icons which are used in different contexts (one for the App Store listing, one for Spotlight search, etc.)... have you done a search in the build directory to ensure that you don't have any only icons lingering in there?
I've had this issue before when I quickly removed the previous icons and added the updated ones but forgot to add all the sizes (thus it used the previous one for specific cases like notifications either because it was cached or still in the build folder);
What fixed this for me on 10.14 was to delete DerivedData:
rm -rf ~/Library/Developer/Xcode/DerivedData

How to Allow quick development in Appcelerator Studio?

How do I re-enable the below behavior?
I USED to have the below behavior...now I don't. I have to re-compile the whole project for every change which is killing productivity for me.
I cut and pasted the below text from another question as it explains it much better than I can....
For an iphone simulator build, the .js files are run directly by the simulator without going through the compile step needed for a distribution build. While this saves some time by itself, the real advantage is that the simulator will dynamically use whatever changes you make to a .js file when you navigate to a window using an external .js reference (i.e. the url property). So changes to app.js still need to relaunch the project. But for windows opened later, you can navigate to the window to see how it looks or test code, then just hit the back button in the navigation bar, tweak the .js, and navigate back to the desired window and immediately see the new layout or test the code changes.
This makes tweaking UI layout stuff incredibly fast compared to the android emulator, not to mention code/debug cycles for some *.js logic is as quick as backing up a screen, revising the code, and showing the screen again. Then when you get the logic worked out, switch to android and retest.
If you have Appcelerator Studio (not Titanium Studio) you can enable LiveView, which attaches a filesystem service to your project and pipes file changes at runtime, bypassing the build process. (aka hotloader, etc)
A) Turn on in Studio
B) Use the command line:
ti build -p ios —-liveview
Be sure you have the latest updates from Appcelerator to ensure parity with target compilers.
$ sudo npm install -g appcelerator
$ appc use latest
$ appc setup
If you don't have Appcelerator Studio, you could try third party solutions such as TiShadow:
$ sudo npm install -g tishadow
$ ti build -p ios --shadow
$ tishadow server
$ tishadow # run --shadow
The quickest development feature you can use is LiveView. In Appcelerator Studio, before you run the project you have a little eye icon in the toolbar to enable live view. Then Every change you save to your project will automatically refresh the emulator/device on which you are running.
You can also have a look at a project called TiShadow which basically does the same and is not related to the Studio.

How can I force my app into the Applications/ folder?

I am currently developing a desktop app in OS X which has a requirement for Autostart on Boot. I have implemented autostart and it works well when I install my app and put it in the Applications/ folder, but I can't expect users to move the file. I am distributing the app using HockeyApp.
So I've started building .pkg files with Packages. This works great and was really easy, but fails to update when used in HockeyApp. After downloading the update, I get a message saying An error occurred while trying to extract the archive. Please try again later. [Cancel Update]
Things I have tried:
Signing the update
Not signing the update
Downloading the most recent version instead of updating (works perfectly fine)
Zipping the .pkg (Fails to upload to HockeyApp)
How can I force my app into the user's Applications/ folder? Should I just ask my handful of (technologically challenged) beta testers to delete their app and download the new version? Can I make a change to my .pkg method to make it work? Should I add code into the app which moves itself (Sounds hacky and painful)?
You cannot force the user to install into /Applications, however if you get the app to arrange the auto-start itself (for example via the App Preferences) then it should use the current location of the app (probably obtained from [[NSBundle mainBundle] bundlePath]) and that will work fine.
You might want to periodically check if the app has moved after this has been turned-on.