"testing"
        "time"
 
+       "github.com/gohugoio/hugo/htesting"
+
        qt "github.com/frankban/quicktest"
 )
 
                t.Skipf("skip para test, CPU count is %d", runtime.NumCPU())
        }
 
+       if !htesting.IsCI() {
+               t.Skip("skip para test when not running on CI")
+       }
+
        c := qt.New(t)
 
        c.Run("Order", func(c *qt.C) {
 
 
 import (
        "math/rand"
+       "os"
        "runtime"
        "strings"
        "time"
 func DiffStrings(s1, s2 string) []string {
        return DiffStringSlices(strings.Fields(s1), strings.Fields(s2))
 }
+
+func IsCI() bool {
+       return (os.Getenv("CI") != "" || os.Getenv("CI_LOCAL") != "") && os.Getenv("CIRCLE_BRANCH") == ""
+}
 
 )
 
 func TestHugoModulesVariants(t *testing.T) {
-       if !isCI() {
+       if !htesting.IsCI() {
                t.Skip("skip (relative) long running modules test when running locally")
        }
 
 
 // TODO(bep) this fails when testmodBuilder is also building ...
 func TestHugoModulesMatrix(t *testing.T) {
-       if !isCI() {
+       if !htesting.IsCI() {
                t.Skip("skip (relative) long running modules test when running locally")
        }
        t.Parallel()
 
-       if !isCI() || hugo.GoMinorVersion() < 12 {
+       if !htesting.IsCI() || hugo.GoMinorVersion() < 12 {
                // https://github.com/golang/go/issues/26794
                // There were some concurrent issues with Go modules in < Go 12.
                t.Skip("skip this on local host and for Go <= 1.11 due to a bug in Go's stdlib")
 
        "time"
 
        "github.com/fortytw2/leaktest"
+       "github.com/gohugoio/hugo/htesting"
 
        qt "github.com/frankban/quicktest"
        "github.com/gohugoio/hugo/common/herrors"
 
 // https://github.com/gohugoio/hugo/issues/5375
 func TestSiteBuildTimeout(t *testing.T) {
-       if !isCI() {
+       if !htesting.IsCI() {
                defer leaktest.CheckTimeout(t, 10*time.Second)()
        }
 
 
 func TestMultiSitesRebuild(t *testing.T) {
        // t.Parallel() not supported, see https://github.com/fortytw2/leaktest/issues/4
        // This leaktest seems to be a little bit shaky on Travis.
-       if !isCI() {
+       if !htesting.IsCI() {
                defer leaktest.CheckTimeout(t, 10*time.Second)()
        }
 
 
 )
 
 func TestJSBuildWithNPM(t *testing.T) {
-       if !isCI() {
+       if !htesting.IsCI() {
                t.Skip("skip (relative) long running modules test when running locally")
        }
 
 }
 
 func TestJSBuild(t *testing.T) {
-       if !isCI() {
+       if !htesting.IsCI() {
                t.Skip("skip (relative) long running modules test when running locally")
        }
 
 
 )
 
 func TestResourceChainBabel(t *testing.T) {
-       if !isCI() {
+       if !htesting.IsCI() {
                t.Skip("skip (relative) long running modules test when running locally")
        }
 
 
 }
 
 func TestResourceChainPostCSS(t *testing.T) {
-       if !isCI() {
+       if !htesting.IsCI() {
                t.Skip("skip (relative) long running modules test when running locally")
        }
 
 
        }
 }
 
-func isCI() bool {
-       return (os.Getenv("CI") != "" || os.Getenv("CI_LOCAL") != "") && os.Getenv("CIRCLE_BRANCH") == ""
-}
-
 // See https://github.com/golang/go/issues/19280
 // Not in use.
 var parallelEnabled = true