github.com/redhat-appstudio/e2e-tests@v0.0.0-20230619105049-9a422b2094d7/cmd/e2e_test.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"strconv"
     7  	"testing"
     8  
     9  	"github.com/redhat-appstudio/e2e-tests/pkg/framework"
    10  
    11  	"github.com/onsi/ginkgo/v2"
    12  	"github.com/onsi/ginkgo/v2/types"
    13  	"github.com/onsi/gomega"
    14  
    15  	_ "github.com/redhat-appstudio/e2e-tests/tests/build"
    16  	_ "github.com/redhat-appstudio/e2e-tests/tests/byoc"
    17  	_ "github.com/redhat-appstudio/e2e-tests/tests/cluster-registration"
    18  	_ "github.com/redhat-appstudio/e2e-tests/tests/e2e-demos"
    19  	_ "github.com/redhat-appstudio/e2e-tests/tests/enterprise-contract"
    20  	_ "github.com/redhat-appstudio/e2e-tests/tests/integration-service"
    21  	_ "github.com/redhat-appstudio/e2e-tests/tests/mvp-demo"
    22  	_ "github.com/redhat-appstudio/e2e-tests/tests/o11y"
    23  	_ "github.com/redhat-appstudio/e2e-tests/tests/release"
    24  	_ "github.com/redhat-appstudio/e2e-tests/tests/spi"
    25  
    26  	"flag"
    27  
    28  	"github.com/spf13/viper"
    29  
    30  	"k8s.io/klog/v2"
    31  )
    32  
    33  var _ = ginkgo.SynchronizedBeforeSuite(func() []byte {
    34  	return nil
    35  }, func(data []byte) {})
    36  
    37  var webhookConfigPath string
    38  var demoSuitesPath string
    39  var generateRPPreprocReport bool
    40  var rpPreprocDir string
    41  var polarionOutputFile string
    42  var polarionProjectID string
    43  var generateTestCases bool
    44  
    45  func init() {
    46  	rootDir, _ := os.Getwd()
    47  	flag.StringVar(&webhookConfigPath, "webhookConfigPath", "", "path to webhook config file")
    48  	flag.StringVar(&demoSuitesPath, "config-suites", fmt.Sprintf(rootDir+"/tests/e2e-demos/config/default.yaml"), "path to e2e demo suites definition")
    49  	flag.BoolVar(&generateRPPreprocReport, "generate-rppreproc-report", false, "Generate report and folders for RP Preproc")
    50  	flag.StringVar(&rpPreprocDir, "rp-preproc-dir", ".", "Folder for RP Preproc")
    51  	flag.StringVar(&polarionOutputFile, "polarion-output-file", "polarion.xml", "Generated polarion test cases")
    52  	flag.StringVar(&polarionProjectID, "project-id", "AppStudio", "Set the Polarion project ID")
    53  	flag.BoolVar(&generateTestCases, "generate-test-cases", false, "Generate Test Cases for Polarion")
    54  
    55  	klog.SetLogger(ginkgo.GinkgoLogr)
    56  
    57  	verbosity := 1
    58  	if v, err := strconv.ParseUint(os.Getenv("KLOG_VERBOSITY"), 10, 8); err == nil {
    59  		verbosity = int(v)
    60  	}
    61  
    62  	flags := &flag.FlagSet{}
    63  	klog.InitFlags(flags)
    64  	if err := flags.Set("v", fmt.Sprintf("%d", verbosity)); err != nil {
    65  		panic(err)
    66  	}
    67  }
    68  
    69  func TestE2E(t *testing.T) {
    70  	klog.Info("Starting Red Hat App Studio e2e tests...")
    71  	// Setting viper configurations in cache
    72  	viper.Set("config-suites", demoSuitesPath)
    73  
    74  	gomega.RegisterFailHandler(ginkgo.Fail)
    75  	ginkgo.RunSpecs(t, "Red Hat App Studio E2E tests")
    76  }
    77  
    78  var _ = ginkgo.SynchronizedAfterSuite(func() {}, func() {
    79  	//Send webhook only it the parameter configPath is not empty
    80  	if len(webhookConfigPath) > 0 {
    81  		klog.Info("Send webhook")
    82  		framework.SendWebhook(webhookConfigPath)
    83  	}
    84  })
    85  
    86  var _ = ginkgo.ReportAfterSuite("RP Preproc reporter", func(report types.Report) {
    87  	if generateRPPreprocReport {
    88  		//Generate Logs in dirs
    89  		framework.GenerateRPPreprocReport(report, rpPreprocDir)
    90  		//Generate modified JUnit xml file
    91  		resultsPath := rpPreprocDir + "/rp_preproc/results/"
    92  		if err := os.MkdirAll(resultsPath, os.ModePerm); err != nil {
    93  			klog.Error(err)
    94  		}
    95  		err := framework.GenerateCustomJUnitReport(report, resultsPath+"xunit.xml")
    96  		if err != nil {
    97  			klog.Error(err)
    98  		}
    99  	}
   100  })
   101  
   102  var _ = ginkgo.ReportAfterSuite("Polarion reporter", func(report types.Report) {
   103  	if generateTestCases {
   104  		framework.GeneratePolarionReport(report, polarionOutputFile, polarionProjectID)
   105  	}
   106  })