Merge pull request #292 from jedhunsaker/master

PhantomJS and CasperJS
This commit is contained in:
Diullei Gomes
2013-02-16 11:59:53 -08:00
3 changed files with 534 additions and 4 deletions

View File

@@ -37,6 +37,7 @@ List of Definitions
* [bootstrap.datepicker](https://github.com/eternicode/bootstrap-datepicker) (by [Boris Yankov](https://github.com/borisyankov))
* [Box2DWeb](http://code.google.com/p/box2dweb/) (by [Josh Baldwin](https://github.com/jbaldwin/))
* [Breeze](http://www.breezejs.com/) (by [Boris Yankov](https://github.com/borisyankov))
* [CasperJS](http://casperjs.org) (by [Jed Hunsaker](https://github.com/jedhunsaker))
* [Cheerio](https://github.com/MatthewMueller/cheerio) (by [Bret Little](https://github.com/blittle))
* [Chosen](http://harvesthq.github.com/chosen/) (by [Boris Yankov](https://github.com/borisyankov))
* [Chrome](http://developer.chrome.com/extensions/) (by [Matthew Kimber](https://github.com/matthewkimber))
@@ -105,6 +106,7 @@ List of Definitions
* [node_redis](https://github.com/mranney/node_redis) (by [Boris Yankov](https://github.com/borisyankov))
* [node-sqlserver](https://github.com/WindowsAzure/node-sqlserver) (by [Boris Yankov](https://github.com/borisyankov))
* [Numeral.js](https://github.com/adamwdraper/Numeral-js) (by [Vincent Bortone](https://github.com/vbortone/))
* [PhantomJS](http://phantomjs.org) (by [Jed Hunsaker](https://github.com/jedhunsaker))
* [PhoneGap](http://phonegap.com) (by [Boris Yankov](https://github.com/borisyankov))
* [Platform](https://github.com/bestiejs/platform.js) (by [Jake Hickman](https://github.com/JakeH))
* [PouchDB](http://pouchdb.com) (by [Bill Sears](https://github.com/MrBigDog2U/))
@@ -138,17 +140,17 @@ List of Definitions
* [WebRTC](http://dev.w3.org/2011/webrtc/editor/webrtc.html) (by [Ken Smith](https://github.com/smithkl42))
* [YouTube](https://developers.google.com/youtube/) (by [Daz Wilkin](https://github.com/DazWilkin/))
* [Zynga Scroller](https://github.com/zynga/scroller) (by [Boris Yankov](https://github.com/borisyankov))
* [ZeroClipboard] (https://github.com/jonrohan/ZeroClipboard) (by [Eric J. Smith] (https://github.com/ejsmith))
* [ZeroClipboard](https://github.com/jonrohan/ZeroClipboard) (by [Eric J. Smith](https://github.com/ejsmith))
Requested Definitions
---------------------
* [Rickshaw](https://github.com/shutterstock/rickshaw)
* [Livestamp.js] (https://github.com/mattbradley/livestampjs)
* [jQuery ScrollTo] (https://github.com/balupton/jquery-scrollto)
* [Livestamp.js](https://github.com/mattbradley/livestampjs)
* [jQuery ScrollTo](https://github.com/balupton/jquery-scrollto)
* [Crossfilter](https://github.com/square/crossfilter)
* [dc.js](https://github.com/NickQiZhu/dc.js)
* [google.visualizations](https://developers.google.com/chart/)
* [Tags Manager](http://welldonethings.com/tags/manager)
* [Prelude.ls](http://gkz.github.com/prelude-ls/)
* [MooTools](http://mootools.net/)
* [Lo-Dash](http://lodash.com/)
* [Lo-Dash](http://lodash.com/)

269
casperjs/casperjs.d.ts vendored Normal file
View File

@@ -0,0 +1,269 @@
/************************************************
* *
* CasperJS v1.0.0 API *
* http://casperjs.org/api.html *
* *
************************************************/
/// <reference path="../phantomjs/phantomjs.d.ts" />
interface Casper {
constructor (options: CasperOptions);
// Properties
__utils__: ClientUtils;
// Methods
back();
base64encode(url: string, method?: string, data?: any);
click(selector: string);
clickLabel(label: string, tag?: string);
capture(targetFilePath: string, clipRect: ClipRect);
captureBase64(format: string);
captureBase64(format: string, area: string);
captureBase64(format: string, area: ClipRect);
captureBase64(format: string, area: any);
captureSelector(targetFile: string, selector: string);
clear();
debugHTML(selector?: string, outer?: bool);
debugPage();
die(message: string, status?: number);
download(url: string, target?: string, method?: string, data?: any);
each(array: Array, fn: (self, link) => void);
echo(message: string, style?: string);
evaluate(fn: Function, ...args: any[]);
evaluateOrDie(fn: Function, message?: string);
exit(status?: number);
exists(selector: string);
fetchText(selector: string);
forward();
log(message: string, level?: string, space?: string);
fill(selector: string, values: any, submit?: bool);
getCurrentUrl(): string;
getElementAttribute(selector: string, attribute: string): string;
getElementBounds(selector: string): ElementBounds;
getElementsBounds(selector: string): ElementBounds[];
getElementInfo(selector: string): ElementInfo;
getFormValues(selector: string): any;
getGlobal(name: string): any;
getHTML(selector?: string, outer?: bool): string;
getPageContent(): string;
getTitle(): string;
mouseEvent(type: string, selector: string);
open(location: string, settings: OpenSettings): Casper;
reload(then?: (response: HttpResponse) => void);
repeat(times: number, then: Function);
resourceExists(test: Function);
resourceExists(test: string);
run(onComplete: Function, time?: number);
sendKeys(selector: string, keys: string, options?: any);
setHttpAuth(username: string, password: string);
start(url?: string, then?: (response: HttpResponse) => void): Casper;
status(asString: bool): any;
then(fn: (self?: Casper) => void);
thenClick(selector: string);
thenEvaluate(fn: Function, ...args: any[]);
thenOpen(location: string, then?: (response: HttpResponse) => void);
thenOpen(location: string, options?: OpenSettings, then?: (response: HttpResponse) => void);
thenOpenAndEvaluate(location: string, then?: Function, ...args: any[]);
toString();
userAgent(agent: string);
viewport(width: number, height: number);
visible(selector: string);
wait(timeout: number, then?: Function);
waitFor(testFx: Function, then?: Function, onTimeout?: Function, timeout?: number);
waitForPopup(urlPattern: string, then?: Function, onTimeout?: Function, timeout?: number);
waitForPopup(urlPattern: RegExp, then?: Function, onTimeout?: Function, timeout?: number);
waitForSelector(selector: string, then?: Function, onTimeout?: Function, timeout?: number);
waitWhileSelector(selector: string, then?: Function, onTimeout?: Function, timeout?: number);
waitForResource(testFx: Function, then?: Function, onTimeout?: Function, timeout?: number);
waitForText(pattern: string, then?: Function, onTimeout?: Function, timeout?: number);
waitForText(pattern: RegExp, then?: Function, onTimeout?: Function, timeout?: number);
waitUntilVisible(selector: string, then?: Function, onTimeout?: Function, timeout?: number);
waitWhileVisible(selector: string, then?: Function, onTimeout?: Function, timeout?: number);
warn(message: string);
withFrame(frameInfo: string, then: Function);
withFrame(frameInfo: number, then: Function);
withPopup(popupInfo: string, step: Function);
withPopup(popupInfo: RegExp, step: Function);
zoom(factor: number);
}
interface HttpResponse {
contentType: string;
headers: any[];
id: number;
redirectURL: string;
stage: string;
status: number;
statusText: string;
time: string;
url: string;
}
interface OpenSettings {
method: string;
data: any;
headers: any;
}
interface ElementBounds {
top: number;
left: number;
width: number;
height: number;
}
interface ElementInfo {
nodeName: string;
attributes: any;
tag: string;
html: string;
text: string;
x: number;
y: number;
width: number;
height: number;
visible: bool;
}
interface CasperOptions {
clientScripts: Array;
exitOnError: bool;
httpStatusHandlers: any;
logLevel: string;
onAlert: Function;
onDie: Function;
onError: Function;
onLoadError: Function;
onPageInitialized: Function;
onResourceReceived: Function;
onResourceRequested: Function;
onStepComplete: Function;
onStepTimeout: Function;
onTimeout: Function;
onWaitTimeout: Function;
page: WebPage;
pageSettings: any;
remoteScripts: Array;
safeLogs: bool;
stepTimeout: number;
timeout: number;
verbose: bool;
viewportSize: any;
waitTimeout: number;
}
interface ClientUtils {
echo(message: string);
encode(contents: string);
exists(selector: string);
findAll(selector: string);
findOne(selector: string);
getBase64(url: string, method?: string, data?: any);
getBinary(url: string, method?: string, data?: any);
getDocumentHeight();
getElementBounds(selector: string);
getElementsBounds(selector: string);
getElementByXPath(expression: string, scope?: HTMLElement);
getElementsByXPath(expression: string, scope?: HTMLElement);
getFieldValue(inputName: string);
getFormValues(selector: string);
mouseEvent(type: string, selector: string);
removeElementsByXPath(expression: string);
sendAJAX(url: string, method?: string, data?: any, async?: bool);
visible(selector: string);
}
interface Colorizer {
colorize(text: string, styleName: string);
format(text: string, style: any);
}
interface Tester {
assert(condition: bool, message?: string);
assertDoesntExist(selector: string, message?: string);
assertEquals(testValue: any, expected: any, message?: string);
assertEval(fn: Function, message: string, arguments: any);
assertEvalEquals(fn: Function, expected: any, message?: string, arguments?: any);
assertExists(selector: string, message?: string);
assertFalsy(subject: any, message?: string);
assertField(inputName: string, expected: string, message?: string);
assertHttpStatus(status: number, message?: string);
assertMatch(subject: any, pattern: RegExp, message?: string);
assertNot(subject: any, message?: string);
assertNotEquals(testValue: any, expected: any, message?: string);
assertNotVisible(selector: string, message?: string);
assertRaises(fn: Function, args: Array, message?: string);
assertSelectorDoesntHaveText(selector: string, text: string, message?: string);
assertSelectorExists(selector: string, message?: string);
assertSelectorHasText(selector: string, text: string, message?: string);
assertResourceExists(testFx: Function, message?: string);
assertTextExists(expected: string, message?: string);
assertTextDoesntExist(unexpected: string, message: string);
assertTitle(expected: string, message?: string);
assertTitleMatch(pattern: RegExp, message?: string);
assertTruthy(subject: any, message?: string);
assertType(input: any, type: string, message?: string);
assertUrlMatch(pattern: RegExp, message?: string);
assertVisible(selector: string, message?: string);
colorize(message: string, style: string);
comment(message: string);
done(expected?: number);
error(message: string);
fail(message: string);
formatMessage(message: string, style: string);
getFailures(): Cases;
getPasses(): Cases;
info(message: string);
pass(message: string);
renderResults(exit: bool, status: number, save: string);
}
interface Cases {
length: number;
cases: Case[];
}
interface Case {
success: bool;
type: string;
standard: string;
file: string;
values: CaseValues;
}
interface CaseValues {
subject: bool;
expected: bool;
}
interface Utils {
betterTypeOf(input: any);
dump(value: any);
fileExt(file: string);
fillBlanks(text: string, pad: number);
format(f: string, ...args: any[]);
getPropertyPath(obj: any, path: string);
inherits(ctor: any, superCtor: any);
isArray(value: any);
isCasperObject(value: any);
isClipRect(value: any);
isFalsy(subject: any);
isFunction(value: any);
isJsFile(file: string);
isNull(value: any);
isNumber(value: any);
isObject(value: any);
isRegExp(value: any);
isString(value: any);
isTruthy(subject: any);
isType(what: any, type: string);
isUndefined(value: any);
isWebPage(what: any);
mergeObjects(origin: any, add: any);
node(name: string, attributes: any);
serialize(value: any);
unique(array: Array);
}

259
phantomjs/phantomjs.d.ts vendored Normal file
View File

@@ -0,0 +1,259 @@
/**********************************************************
* *
* PlantomJS v1.8.0 API *
* https://github.com/ariya/phantomjs/wiki/API-Reference *
* *
**********************************************************/
interface Phantom {
// Properties
args: string[]; // DEPRECATED
cookies: Cookie[];
cookiesEnabled: bool;
libraryPath: string;
scriptName: string; // DEPRECATED
version: any;
// Functions
addCookie(cookie: Cookie): bool;
clearCookies();
deleteCookie(cookieName: string): bool;
exit(returnValue: any): bool;
injectJs(filename: string): bool;
// Callbacks
onError: Function;
}
interface System {
pid: number;
platform: string;
os: OS;
env: any;
args: string[];
}
interface OS {
architecture: string;
name: string;
version: string;
}
interface WebPage {
// Properties
canGoBack: bool;
canGoForward: bool;
clipRect: ClipRect;
content: string;
cookies: Cookie[];
customHeaders: any;
event;
focusedFrameName: string;
frameContent: string;
frameName: string;
framePlainText: string;
frameTitle: string;
frameUrl: string;
framesCount: number;
framesName;
libraryPath: string;
navigationLocked: bool;
offlineStoragePath: string;
offlineStorageQuota: number;
ownsPages: bool;
pages;
pagesWindowName: string;
paperSize: PaperSize;
plainText: string;
scrollPosition: TopLeft;
settings: WebPageSettings;
title: string;
url: string;
viewportSize: Size;
windowName: string;
zoomFactor: number;
// Functions
addCookie(cookie: Cookie): bool;
childFramesCount(): number; // DEPRECATED
childFramesName(): string; // DEPRECATED
clearCookies();
close();
currentFrameName(): string; // DEPRECATED
deleteCookie(cookieName: string): bool;
evaluate(fn: Function, ...args: any[]): any;
evaluateAsync(fn: Function);
evaluateJavascript(str: string);
getPage(windowName: string);
go(index: number);
goBack();
goForward();
includeJs(url: string, callback: Function);
injectJs(filename: string): bool;
open(url: string, callback: (status: string) => void);
openUrl(url: string, httpConf: any, settings: any);
release(); // DEPRECATED
reload();
render(filename: string);
renderBase64(format: any): string;
sendEvent(mouseEventType: string, mouseX?: number, mouseY?: number, button?: string);
sendEvent(keyboardEventType: string, keyOrKeys, aNull?, bNull?, modifier?);
setContent(content: string, url: string);
stop();
switchToFocusedFrame();
switchToFrame(frameName: string);
switchToFrame(framePosition);
switchToChildFrame(frameName: string);
switchToChildFrame(framePosition);
switchToMainFrame(); // DEPRECATED
switchToParentFrame(); // DEPRECATED
uploadFile(selector: string, filename: string);
// Callbacks
onAlert: Function;
onCallback: Function; // EXPERIMENTAL
onClosing: Function;
onConfirm: Function;
onConsoleMessage: Function;
onError: Function;
onFilePicker: Function;
onInitialized: Function;
onLoadFinished: Function;
onLoadStarted: Function;
onNavigationRequested: Function;
onPageCreated: Function;
onPrompt: Function;
onResourceRequested: Function;
onResourceReceived: Function;
onUrlChanged: Function;
// Callback triggers
closing(page);
initialized();
javaScriptAlertSent(message: string);
javaScriptConsoleMessageSent(message: string);
loadFinished(status);
loadStarted();
navigationRequested(url: string, navigationType, navigationLocked, isMainFrame: bool);
rawPageCreated(page);
resourceReceived(request);
resourceRequested(resource);
urlChanged(url: string);
}
interface PaperSize {
width: string;
height: string;
border: string;
format: string;
orientation: string;
}
interface WebPageSettings {
javascriptEnabled: bool;
loadImages: bool;
localToRemoteUrlAccessEnabled: bool;
userAgent: string;
password: string;
XSSAuditingEnabled: bool;
webSecurityEnabled: bool;
}
interface FileSystem {
// Properties
separator: string;
workingDirectory: string;
// Functions
// Query Functions
list(path: string): string[];
absolute(path: string): string;
exists(path: string): bool;
isDirectory(path: string): bool;
isFile(path: string): bool;
isAbsolute(path: string): bool;
isExecutable(path: string): bool;
isReadable(path: string): bool;
isWritable(path: string): bool;
isLink(path: string): bool;
readLink(path: string): string;
// Directory Functions
changeWorkingDirectory(path: string);
makeDirectory(path: string);
makeTree(path: string);
removeDirectory(path: string);
removeTree(path: string);
copyTree(source: string, destination: string);
// File Functions
open(path: string, mode: string): Stream;
read(path: string): string;
write(path: string, content: string, mode: string);
size(path: string): number;
remove(path: string);
copy(source: string, destination: string);
move(source: string, destination: string);
touch(path: string);
}
interface Stream {
read(): string;
readLine(): string;
write(data: string);
writeLine(data: string);
flush();
close();
}
interface WebServer {
port: number;
listen(port: number, cb?:(request, response) => void): bool;
listen(ipAddressPort: string, cb?:(request, response) => void): bool;
close();
}
interface Request {
method: string;
url: string;
httpVersion: number;
headers: any;
post: string;
postRaw: string;
}
interface Response {
headers: any;
setHeader(name: string, value: string);
header(name: string): string;
statusCode: number;
setEncoding(encoding: string);
write(data: string);
writeHead(statusCode: number, headers?: any);
close();
closeGracefully();
}
interface TopLeft {
top: number;
left: number;
}
interface Size {
width: number;
height: number;
}
interface ClipRect extends TopLeft, Size {
width: number;
height: number;
}
interface Cookie {
name: string;
value: string;
}