thiagolvlsantos / specrunner Goto Github PK
View Code? Open in Web Editor NEWAcceptance test driven development tool.
Home Page: https://thiagolvlsantos.github.io/specrunner
Acceptance test driven development tool.
Home Page: https://thiagolvlsantos.github.io/specrunner
Example:
<table>
<tr><td class="type" by="id:startDate" refvalue="//*[@id='common']">fill</td></tr>
<tr><td id="common" converter="date" arg0='MM/dd/yyyy'>actual date</td></tr>
</table>
The action 'type' must fill the target field 'startDate' using 'refvalue' which
final content is interpreted as the current date in format 'MM/dd/yyyy'.
Original issue reported on code.google.com by [email protected]
on 10 Oct 2013 at 2:47
Provide support for collections attributes in ObjectPlugin.
For example, a User could have a list of contacts.
Cannot add 'content' using CSS in order to avoid table unbalanced.
Suggestion: append 'content' to 'title' class.
When test designers write '0001' this should be implictly handled as a String and not a number.
Today the value is converted to '1' and the programmer must set 'eval="false"' in order to get expected result.
boolean eval = Boolean.parseBoolean(cell.getAttribute(INodeHolder.ATTRIBUTE_EVALUATION, "true"));
f.setEval(eval);
Should be true only if not specified before.
It may help developer undestand that the final is the responsibible for assertion and not the database blueprint.
This can be obtained by an overloaded getSuccessStatus() method in parent PluginDbms.
Check if blobs are already supported and create readers of this kind wherever it makes sense.
Add converters for strings to:
Check if normalized strings are also available.
Add a 'presenter' to resultset, and a feature for that, in order to reduce memory usage on generalized errors.
Example:
enum Status {
NOT_IMPLEMENTED("Not implemented"), PENDING("Pending");
private String text;
public String getText(){
return text;
}
}
XML:
example with extra lines:
<span converter="enumValueNorm">not<br/> implemented</span>
example case insensive:
<span converter="enumValueNorm">pending</span>
.
Print in/out, status and time for each scenario.
On procedures like:
the calling method is called twice.
create this method and its implementation and call it in DatabaseDefault line 1099.
release(pstmt);
Error on format:
+------ STATISTICS (main) ------+
NUMBER OF TESTS: 105
TOTAL TIME: 4615445 ms [ 01:76:4615.445 (HH:mm:ss.SSS) ]
AVERAGE TIME: 43956,62 ms
STATUS: [failure=14, success=91]
TYPES: [assertion=1092, action=31408, undef=170]
+-------------------------------+
Check 'BaseLocal' to create a supertype for local dates.
Reading file '/jetty.xml' and reuse as default.
Include all attributes except 'field' to td cells of object plugins in order to getValue(...) behave exactly as another terminals.
Add converters for:
Not all objects requires a key. Allow objins plugins like not specify reference field.
Add webdriver factory for PhantomJS:
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, new String[] {
"--web-security=false", "--ssl-protocol=any", "--ignore-ssl-errors=true",
"--webdriver-loglevel=INFO"});
desiredCapabilities.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
"D:/ThiagoSantos/programas/phantomjs-2.0.0-windows/bin/phantomjs.exe");
fm.add(PluginBrowser.FEATURE_WEBDRIVER_INSTANCE, new PhantomJSDriver(desiredCapabilities));
i.e a converter from user login to user name, both fields are String but I can recover name from login before entering a method.
example:
public void prepareName(@converter(type=ConverterLoginToName.class) String name) {
// expected to receive 'John Smith'
}
HTML:
prepare name "deinf.smith"
Load schema from database, e and merge its information with sgdb.cfg.xml loaded file.
Upgrade JDK and all referenced libraries.
create a reader which resolves a 'a@href' tag inside a value.
it will be used, for example, on clob or blob converters to find resource fully qualified reference. On time, the resource cache can be used if resource is recurrent.
For example, when object plugins target at a String attribute why not target it on expression evaluation.
Which convertes from string to byte array.
Usage: converte a file to bytes in a blob column. If reader do not convert straigth to bytes.
This featured added aa bug when the number of tests is high. The assumption that 'document' object returned by cache is always filled is wrong.
Remove the 'copy' parameter of document sources. This behavior led to this error.
Current report is based only in test overall result, scenarios coul be added to report.
For example, errors on database comparison stack traces are useless, only database differences mathers.
java.text.ParseException: Unparseable date: ""
at java.text.DateFormat.parse(DateFormat.java:357)
at org.specrunner.converters.core.ConverterDatePatternArgs.convert(ConverterDatePatternArgs.java:67)
at org.specrunner.util.xom.node.core.NodeHolderDefault.getLocal(NodeHolderDefault.java:447)
at org.specrunner.util.xom.node.core.NodeHolderDefault.getObject(NodeHolderDefault.java:414)
at org.specrunner.util.xom.node.core.NodeHolderDefault.getObject(NodeHolderDefault.java:409)
Replace:
@OverRide
public <K, T> ICache<K, T> newCache(String name) {
return create(name, new ICacheCleaner() {
@OverRide
public void destroy(T obj) {
// do nothing.
}
});
}
by
@OverRide
public <K, T> ICache<K, T> newCache(String name) {
return newCache(name, new ICacheCleaner() {
@OverRide
public void destroy(T obj) {
// do nothing.
}
});
}
in order to get cache settings on cache creation.
Example:
1)maps a value by virtual/reference pair;
2)update the reference value(s) using prepare/verify;
3)verify final database state.
The register updated appears as null, but the old value is in ids mapping.
Check and add support for special values in object manipulation plugins.
All other attributes are protected except this. GOLDEN RULE: 'private' is not welcome!
Nome | teste | |||
---|---|---|---|---|
Nome 1 | teste | |||
Nome 2 |
|
And a way to not use it.
create a ComparatorBlob to compare byte arrays.
Allow minimize for JFrame events.
Janino evaluation errors should be externalized if errors occurs inside expression evaluations.
i.e. call a businness method which throw a exception (X call(...) { throw error; }) on 'execute' expressions.
On referenced table name errors throw an exception to make it clear to the user the reference is wrong
i.e.
<table>
<caption>Users</caption>
.....
</table>
sgbd.cfg.xml
<table alias="Account">
<column alias="User" table="Users" virtual="true"/>
</table>
Example of possible replacement:
protected Object recoverValue(Object obj, Object methodName, Class<? extends Enum<?>> enumType) throws Exception {
Object result = null;
String name = String.valueOf(methodName);
Method method = enumType.getMethod(name);
String current = String.valueOf(obj);
Enum<?>[] values = enumType.getEnumConstants();
for (Enum<?> e : values) {
Object base = method.invoke(e);
if (current.equalsIgnoreCase(String.valueOf(base))) {
result = e;
break;
}
}
return result;
}
i.e. a script to add 'shutdown' to hsqldb instances in order to clear memory usage.
Add HTML resume output every execution of tests.
Create two strategies:
1) Infinite log;
2) Circular queue of 20 elements.
Original issue reported on code.google.com by [email protected]
on 9 Oct 2013 at 5:20
Instead of delegator use proxy interface strategy.
Example:
`
Due Date | Name |
---|---|
12/03/2015 | Thiago |
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.