<?xml version="1.0" encoding="utf-8" ?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You under the Apache License, Version 2.0
  ~ (the "License"); you may not use this file except in compliance with
  ~ the License.  You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="dolphinscheduler_e2e" verbose="1">
    <test name="dolphinscheduler_test" preserve-order="true">
        <!-- <groups>
            <run>
                <include name="functionTests"/>
            </run>
        </groups>
        <classes>
            <class name="org.apache.dolphinscheduler.testcase.TestLogin"></class>
            <class name="org.apache.dolphinscheduler.testcase.testSecurity.TestTenantManage"></class>

            <class name="org.apache.dolphinscheduler.testcase.testSecurity.TestAlertManage"></class>
            <class name="org.apache.dolphinscheduler.testcase.testSecurity.TestQueueManage"></class>
            <class name="org.apache.dolphinscheduler.testcase.testSecurity.TestTokenManage"></class>

            <class name="org.apache.dolphinscheduler.testcase.testSecurity.TestUserManage">
                <methods>
                    <include name="testCreateUser" />
                    <include name="testEditUser" />
                </methods>
            </class>

            <class name="org.apache.dolphinscheduler.testcase.testProject.TestProject">
                <methods>
                    <include name="createProject" />
                </methods>
            </class>

            <class name="org.apache.dolphinscheduler.testcase.testProject.TestWorkflowDefine">
                <methods>
                    <include name="testCreateWorkflow" />
                    <include name="testOnlineWorkflow" />
                </methods>
            </class>

            <class name="org.apache.dolphinscheduler.testcase.testProject.TestRunWorkflow"></class> -->

            <!--<class name="org.apache.dolphinscheduler.testcase.testProject.TestTiming">-->
                <!--<methods>-->
                    <!--<include name="testCreateTiming" />-->
                    <!--<include name="testEditTiming" />-->
                    <!--<include name="testOnlineTiming" />-->
                    <!--<include name="testOfflineTiming" />-->
                    <!--<include name="testDeleteTiming" />-->
                <!--</methods>-->
            <!--</class>-->
            <!--<class name="org.apache.dolphinscheduler.testcase.testProject.TestProcessInstance">-->
                <!--<methods>-->
                    <!--<include name="testRerun" />-->
                <!--</methods>-->
            <!--</class>-->

            <!-- <class name="org.apache.dolphinscheduler.testcase.testDeleteData.TestDeleteWorkflow">
                <methods>
                    <include name="testOfflineWorkflow" />
                    <include name="testDeleteWorkflow" />
                </methods>
            </class>

            <class name="org.apache.dolphinscheduler.testcase.testDeleteData.TestDeleteProject"></class>
            <class name="org.apache.dolphinscheduler.testcase.testDeleteData.TestDeleteAlert"></class>
            <class name="org.apache.dolphinscheduler.testcase.testDeleteData.TestDeleteToken"></class>
            <class name="org.apache.dolphinscheduler.testcase.testDeleteData.TestDeleteUser"></class>
            <class name="org.apache.dolphinscheduler.testcase.testDeleteData.TestDeleteTenant"></class>
        </classes> -->
    </test>

    <listeners>
        <listener class-name="org.uncommons.reportng.HTMLReporter" />
        <listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
    </listeners>
</suite>
