saucectl icon indicating copy to clipboard operation
saucectl copied to clipboard

[XCUI] --env doesn't work for iOS xcuitest suites

Open renaud-vmg opened this issue 3 years ago • 3 comments

Current behavior

The current behaviour of --env SOME=THING appears to not set environment variables "in" the device when launching a test (as is supported by xcodebuild-run tests). I can see USER, XPC_FLAGS, XPC_SERVICE_NAME and others, but additional --env-provided values seems to be broken.

Desired behavior

The expected behaviour is that using saucectl's --env SOME=THING cli option would set environment variables on the target as is being done by xcodebuild-driven testsé

Config to reproduce

Run any iOS xcuiapplication-based tests that print out the whole environment. Example code to do that in a setup method:

    for (NSString* key in [[NSProcessInfo processInfo] environment].allKeys) {
        NSLog(@"Full map reveal - key: %@", key);
        NSLog(@"Full map reveal - element: %@", [[NSProcessInfo processInfo] environment][key]);
        NSLog(@"==================================================");
    }

Versions

0.59.x

renaud-vmg avatar Aug 10 '21 22:08 renaud-vmg

Sorry, we need to better document this, but the ability to set env variables is not available for espresso/xcuitests. 🙏

alexplischke avatar Aug 12 '21 00:08 alexplischke

@alexplischke based on the above foreach loop, I still think there could be a backend change that would allow at least iOS env settings to be passed (as xcodebuild allows that locally). For the immediate term, I unfortunately might go with your suggestion, but on the long run this should be fixed in some way.

renaud-vmg avatar Aug 12 '21 19:08 renaud-vmg

@renaud-vmg

Is this for Real or Virtual devices? We are working on supporting this for virtual as we speak. Real devices is harder due to the technology we use

wswebcreation avatar Aug 31 '23 09:08 wswebcreation