General Questions
Execution or Registration of Custom Tags Questions
Data-driving Questions
Jameleon was derived from the word Chameleon. However, this lizard was written in Java. Thus, the term Jameleon. One of the basic concepts behind Jameleon is that just as Chameleons can adapt to their environment, tests written with Jameleon can be run against applications that exist in different environments. Chameleons are also masters at catching bugs.
A co-worker named Matt Grandon. He also did some of the icons and other graphics on the site.
Jameleon itself is simply a testing harness that is application interface agnostic. Currently, there is support for web applications and database testing.
Depending on the plug-in, different types of testing are supported. One of the plug-ins allows for complete control of Internet Explorer while the other web plug-ins simply emulate a browser's behavior and therefore prove more difficult to test web applications that use Java Applets, JavaScript or similar technologies.
See the Plug-ins section on the left for a list of current plug-ins.
If you are asking this question, then you should probably download jameleon-test-suite-x.x.x.zip. The x's mean version numbers. This file is a pre-configured version of Jameleon, set up to be used as a test suite. This file has every plug-in and the most common features enabled.
Since Jameleon 3.0.2, Jameleon fails on unrecognized tags, describing which tag is invalid. This only works for tags tag begin with the namespace defined. In other words, <j:foo-bar/> will fail, but <foo-bar/> won't get recognized and will get skipped. The answer below is for previous versions.
By setting trace="true" in jameleon.conf or in the test case being debugged. This basically prints something out to the console for every tag being executed. For custom tags, the required attribute, functionId, is printed out.
Basically, if the functionId of the tag in question is printed out to the console, then it is being executed.
There are a few possible reasons why your tag isn't getting executed in your test script. Please see the possible reasons below:
<testcase xmlns="jelly:jameleon"> <test-case-summary>Notice how custom-tag doesn't start with </test-case-summary> <test-case-author>Christian Hargraves</test-case-author> <test-case-level>ACCEPTANCE</test-case-level> <functional-point-tested>properties</functional-point-tested> <junit-session application="appName" organization="sf"> <custom-tag functionId="compare two variables" var1="${var3}" var2="${var4}"/> </junit-session> </testcase>
<testcase xmlns="jelly:jameleon"> <test-case-summary>Now custom-tag starts with </test-case-summary> <test-case-author>Christian Hargraves</test-case-author> <test-case-level>ACCEPTANCE</test-case-level> <functional-point-tested>properties</functional-point-tested> <junit-session application="appName" organization="sf"> <custom-tag functionId="compare two variables" var1="${var3}" var2="${var4}"/> </junit-session> </testcase>
<testcase xmlns="jelly:jameleon"> <test-case-summary>Now custom-tag starts with </test-case-summary> <test-case-author>Christian Hargraves</test-case-author> <test-case-level>ACCEPTANCE</test-case-level> <functional-point-tested>properties</functional-point-tested> <junit-session application="appName" organization="sf"> <custom-tag functionId="compare two variables" var1="${var3}" var2="${var4}"/> </junit-session> </testcase>
There are a few possible reasons why your tag isn't getting registered. Please see the possible reasons below:
If you set countRow to true, then not only will Jameleon count each row as a test case, but it will also continue to execute even if the previous row fails. This is attribute is common across all Jameleon-provided data-drivable tags. Please see the documents on tag of interest for more information.
This question is specific to why when the variable is set in a properties, it can't be used directly in a session tag. For example, why does the following not work:
<testcase xmlns="jelly:jameleon"> <hu-session application="appName" baseUrl="${someUrl}"> ... </hu-session> </testcase>
<testcase xmlns="jelly:jameleon"> <hu-session application="appName" baseUrl="${baseUrl}"> ... </hu-session> </testcase>
<testcase xmlns="jelly:jameleon"> <hu-session application="appName"> ... </hu-session> </testcase>
Most plug-ins have gotten around this, by supporting both context variables and direct settings for the baseUrl attribute. In other words they support setting the baseUrl to a hard value like: baseUrl="http://some.domain.com" or they support reading them in directly via the properties file, but they don't support setting the value in the script via the context variable.
If you still don't understand the answer, just refer to the above examples. Set the baseUrl variable in your properties file, but don't set it in the script. Setting the application="appName" magically does this for you.