<?xml version="1.0"?>
<!--
    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.
-->
<testcase>
    <open value="/example/control/setSessionLocale?newLocale=en" />
    <open value="/example/control/logout" />
    <waitForPageToLoad value="10000" />
    <type name="USERNAME" value="admin" />
    <type name="PASSWORD" value="ofbiz" />
    <click locator="//input[@value='Login']" />
    <waitForPageToLoad value="10000" />
    <getBodyText out="bodyText"/>
    <getHtmlSource out="htmlSource"/>
    <!--assertContains src="${htmlSource}" test="Welcome" /-->
</testcase>

