void apply()

in integration/geb-gradle/src/main/groovy/geb/gradle/browserstack/BrowserStackPlugin.groovy [38:73]


    void apply(Project project) {
        def allBrowserStackTests = project.tasks.register("allBrowserStackTests")

        def closeTunnel = project.tasks.register(CLOSE_TUNNEL_TASK_NAME, StopExternalTunnel)

        def openBrowserStackTunnelInBackground = project.tasks.register(
            OPEN_TUNNEL_IN_BACKGROUND_TASK_NAME, StartExternalTunnel
        ) {
            inBackground = true
            finalizedBy closeTunnel
        }

        def openBrowserStackTunnel = project.tasks.register('openBrowserStackTunnel', StartExternalTunnel)

        def browserStackExtension = project.extensions.create(
            'browserStack', BrowserStackExtension, allBrowserStackTests, openBrowserStackTunnelInBackground,
            closeTunnel, "BrowserStack Test"
        )

        [openBrowserStackTunnel, openBrowserStackTunnelInBackground, closeTunnel]*.configure {
            tunnel = browserStackExtension.local
        }

        def downloadBrowserStackTunnel = project.tasks.register(
            'downloadBrowserStackTunnel', DownloadBrowserStackTunnel
        )

        def unzipBrowserStackTunnel = project.tasks.register(UNZIP_TUNNEL_TASK_NAME, SingleFileCopy) {
            source.from(project.zipTree(downloadBrowserStackTunnel.flatMap { it.tunnelZip }))

            def fileExtension = Os.isFamily(FAMILY_WINDOWS) ? ".exe" : ""
            outputFile.set(project.layout.buildDirectory.file("browserstack/BrowserStackTunnel${fileExtension}"))
        }

        browserStackExtension.local.executable.set(unzipBrowserStackTunnel.flatMap { it.outputFile })
    }