<NME> index.js
<BEF> const { serenity } = require('@serenity-js/core');
const { Path } = require('@serenity-js/core/lib/io');
const {
    ProtractorFrameworkAdapter,
    TestRunnerDetector,
    TestRunnerLoader
} = require('@serenity-js/protractor/lib/adapter');

/**
 * Execute the Runner's test cases through Cucumber.
 *
 * @param {Runner} runner The current Protractor Runner.
 * @param {string[]} specs Array of Directory Path Strings.
 * @return {Promise<void>>} Promise resolved with the test results
 */
exports.run = function (runner, specs) {
    return new ProtractorFrameworkAdapter(
        serenity,
        runner,
        new TestRunnerDetector(new TestRunnerLoader(
            testModeOrDefaultCwd(runner.getConfig().configDir),
            process.pid
        ))
    ).run(specs);
}

function testModeOrDefaultCwd(defaulValue) {
    if (! process.env.MULTIDEP_CUCUMBER_CONF) {
        return Path.from(defaulValue);
    }

    // protractor-framework-adapter running in self-test mode
    const cucumberConf = JSON.parse(process.env.MULTIDEP_CUCUMBER_CONF);
    return Path.from(
        __dirname,
        `test/multidep_modules/${ cucumberConf.module }-${ cucumberConf.version }`
    );
}

  function makeFormatPathsUnique(values) {
    return toArray(values).map(function(format) {
      let formatPathMatch = format.match(/(.+):(.+)/);
      if (!formatPathMatch) return format;

      let pathParts = formatPathMatch[2].split('.');

<MSG> do not add pid in format windows paths

<DFF> @@ -132,7 +132,7 @@ exports.run = function(runner, specs) {
 
   function makeFormatPathsUnique(values) {
     return toArray(values).map(function(format) {
-      let formatPathMatch = format.match(/(.+):(.+)/);
+      let formatPathMatch = format.match(/(..+):(.+)/);
       if (!formatPathMatch) return format;
 
       let pathParts = formatPathMatch[2].split('.');

do not add pid in format windows paths