void apply()

in integration/geb-gradle/src/main/groovy/geb/gradle/saucelabs/SaucePlugin.groovy [33:66]


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

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

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

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

        def sauceLabsExtension = project.extensions.create(
            'sauceLabs', SauceLabsExtension, allSauceLabsTests, openSauceTunnelInBackground, closeTunnel, "Sauce Test"
        )

        [openSauceTunnel, openSauceTunnelInBackground, closeTunnel]*.configure {
            tunnel = sauceLabsExtension.connect
        }

        def sauceConnectConfiguration = project.configurations.create('sauceConnect').defaultDependencies {
            def message = "sauceConnect configuration is empty, please add a " +
                "dependency on 'ci-sauce' artifact from 'com.saucelabs' group to it"
            throw new IllegalStateException(message)
        }

        def unpackSauceConnect = project.tasks.register(UNPACK_CONNECT_TASK_NAME, UnpackSauceConnect) {
            sauceConnect.from(sauceConnectConfiguration)
        }

        sauceLabsExtension.connect.executable.set(unpackSauceConnect.flatMap { it.outputFile })
    }