import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject

import com.kms.katalon.core.checkpoint.Checkpoint as Checkpoint
import com.kms.katalon.core.checkpoint.CheckpointFactory as CheckpointFactory
import com.kms.katalon.core.model.FailureHandling as FailureHandling
import com.kms.katalon.core.testcase.TestCase as TestCase
import com.kms.katalon.core.testcase.TestCaseFactory as TestCaseFactory
import com.kms.katalon.core.testdata.TestData as TestData
import com.kms.katalon.core.testdata.TestDataFactory as TestDataFactory
import com.kms.katalon.core.testobject.ObjectRepository as ObjectRepository
import com.kms.katalon.core.testobject.TestObject as TestObject

import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile

import internal.GlobalVariable as GlobalVariable

import com.kms.katalon.core.annotation.SetUp
import com.kms.katalon.core.annotation.SetupTestCase
import com.kms.katalon.core.annotation.TearDown
import com.kms.katalon.core.annotation.TearDownTestCase

/**
 * Dynamic Smoke Tests Suite - Automatically discovers and runs test cases with P1 and SMOKE tags
 * This suite uses Katalon's built-in dynamic filtering to automatically find and execute test cases
 */

@SetUp(skipped = false)
def setUp() {
    println "Setting up Dynamic Smoke Test Suite"
    // Initialize test environment
    WebUI.openBrowser('')
    WebUI.maximizeWindow()
    
    // Initialize test counters
    GlobalVariable.smokeTestPassCount = 0
    GlobalVariable.smokeTestFailCount = 0
    GlobalVariable.smokeTestSkipCount = 0
}

@TearDown(skipped = false)
def tearDown() {
    println "Tearing down Dynamic Smoke Test Suite"
    
    // Generate test summary
    generateSmokeTestSummary()
    
    WebUI.closeBrowser()
}

@SetupTestCase(skipped = false)
def setupTestCase() {
    println "Setting up test case"
    
    // Navigate to base URL for each test
    WebUI.navigateToUrl(GlobalVariable.url)
}

@TearDownTestCase(skipped = false)
def tearDownTestCase() {
    println "Tearing down test case"
    
    // Clean up test data if needed
    cleanupTestData()
}

def cleanupTestData() {
    // Add cleanup logic here
    println "Cleaning up test data"
}

def generateSmokeTestSummary() {
    println "=== DYNAMIC SMOKE TEST SUMMARY ==="
    println "Total Tests Passed: ${GlobalVariable.smokeTestPassCount}"
    println "Total Tests Failed: ${GlobalVariable.smokeTestFailCount}"
    println "Total Tests Skipped: ${GlobalVariable.smokeTestSkipCount}"
    println "==================================="
}
