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
boolean eval = Boolean.parseBoolean(cell.getAttribute(INodeHolder.ATTRIBUTE_EVALUATION, "true"));
f.setEval(eval);
Should be true only if not specified before.
And a way to not use it.
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
Load schema from database, e and merge its information with sgdb.cfg.xml loaded file.
Add converters for:
Add a 'presenter' to resultset, and a feature for that, in order to reduce memory usage on generalized errors.
Instead of delegator use proxy interface strategy.
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.
Reading file '/jetty.xml' and reuse as default.
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
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"
Current report is based only in test overall result, scenarios coul be added to report.
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.
Add converters for strings to:
Check if normalized strings are also available.
i.e. a script to add 'shutdown' to hsqldb instances in order to clear memory usage.
On procedures like:
the calling method is called twice.
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;
}
Print in/out, status and time for each scenario.
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.
Nome | teste | |||
---|---|---|---|---|
Nome 1 | teste | |||
Nome 2 |
|
Example:
`
Due Date | Name |
---|---|
12/03/2015 | Thiago |
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.
create a ComparatorBlob to compare byte arrays.
Cannot add 'content' using CSS in order to avoid table unbalanced.
Suggestion: append 'content' to 'title' class.
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.
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>
Include all attributes except 'field' to td cells of object plugins in order to getValue(...) behave exactly as another terminals.
Allow minimize for JFrame events.
Check and add support for special values in object manipulation plugins.
For example, when object plugins target at a String attribute why not target it on expression evaluation.
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)
Not all objects requires a key. Allow objins plugins like not specify reference field.
Check if blobs are already supported and create readers of this kind wherever it makes sense.
All other attributes are protected except this. GOLDEN RULE: 'private' is not welcome!
For example, errors on database comparison stack traces are useless, only database differences mathers.
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.
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>
.
Upgrade JDK and all referenced libraries.
Provide support for collections attributes in ObjectPlugin.
For example, a User could have a list of contacts.
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));
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.
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.
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.
create this method and its implementation and call it in DatabaseDefault line 1099.
release(pstmt);
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.