@config-plugins/detox
Version:
Config plugin to auto configure detox on prebuild
55 lines (54 loc) • 2.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setGradleAndroidTestImplementation = setGradleAndroidTestImplementation;
exports.pushGradleDependency = pushGradleDependency;
exports.addDetoxDefaultConfigBlock = addDetoxDefaultConfigBlock;
const config_plugins_1 = require("expo/config-plugins");
/**
* [Step 3](https://github.com/wix/Detox/blob/master/docs/Introduction.Android.md#3-add-the-native-detox-dependency). Add the Native Detox dependency.
*
* 1. Add `androidTestImplementation` to the app/build.gradle
* 2. Add `testInstrumentationRunner` to the app/build.gradle
* @param config
*/
const withDetoxTestAppGradle = (config) => {
return (0, config_plugins_1.withAppBuildGradle)(config, (config) => {
if (config.modResults.language === "groovy") {
config.modResults.contents = setGradleAndroidTestImplementation(config.modResults.contents);
config.modResults.contents = addDetoxDefaultConfigBlock(config.modResults.contents);
}
else {
throw new Error("Cannot add Detox maven gradle because the project build.gradle is not groovy");
}
return config;
});
};
function setGradleAndroidTestImplementation(buildGradle) {
buildGradle = pushGradleDependency(buildGradle,
// SDK 50 https://github.com/wix/Detox/blob/700b750e8a09b2eff2d26c0dbf3c50b70130fc9b/examples/demo-react-native/android/app/build.gradle#L61
"implementation 'androidx.appcompat:appcompat:1.6.1'");
buildGradle = pushGradleDependency(buildGradle, "androidTestImplementation('com.wix:detox:+')");
return buildGradle;
}
function escapeStringRegexp(str) {
return str.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&");
}
function pushGradleDependency(buildGradle, dependency) {
const pattern = new RegExp(escapeStringRegexp(dependency), "g");
if (buildGradle.match(pattern)) {
return buildGradle;
}
return buildGradle.replace(/dependencies\s?{/, `dependencies {
${dependency}`);
}
function addDetoxDefaultConfigBlock(buildGradle) {
const pattern = /detox-plugin-default-config/g;
if (buildGradle.match(pattern)) {
return buildGradle;
}
return buildGradle.replace(/defaultConfig\s?{/, `defaultConfig {
// detox-plugin-default-config
testBuildType System.getProperty('testBuildType', 'debug')
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'`);
}
exports.default = withDetoxTestAppGradle;