Hi,

adding special handling in JS for areas where HtmlUnit's simulation is incomplete is surely a workaround... but fixing it is better ;-)

Rather that sleep, you can try <config easyajax="true".../>. It works well with a lot of JS libraries... but not all :-(

Cheers,
Marc.
--
Blog: http://mguillem.wordpress.com

Anze wrote:
Since we couldn't wait, I have found a workaround. I am posting it here in case it helps someone when using an unsupported JS function.

In flotr.js I just made a small modification:
---
this.ctx = c.getContext('2d');
this.octx = oc.getContext('2d');

// add these lines:
if (!(this.ctx.scale)) {
  this.ctx.scale=function(x,y) {};
  this.octx.scale=function(x,y) {};
  this.ctx.translate=function(x,y) {};
  this.octx.translate=function(x,y) {};
}

// then all is well:
if(!Prototype.Browser.IE){
  this.ctx.scale(o.resolution, o.resolution);
  this.octx.scale(o.resolution, o.resolution);
}
---

So the trick was to add the missing function through JS if they were not available.
I am still curious about AJAX and <sleep> though?

Kind regards,

Anze


On Friday 12 February 2010, Anze wrote:
Hi Ahmed!

Thanks for the fast response, I really appreciate it!

It looks like the library needs functions scale(x,y) and translate(x,y) (I
have added them dynamically, through JS, and the tests started working).

So i guess this should be added to
 host/canvas/CanvasRenderingContext2D.java: -----
/**
* Scale the user coordinate system of the canvas
* @param x the x
* @param y the y
*/
public void jsxFunction_scale(final double x, final double y) {
    //empty
}

/**
* Translate the user coordinate system of the canvas
* @param x the x
* @param y the y
*/
public void jsxFunction_translate(final double x, final double y) {
    //empty
}
-----

Any chance someone could add this to trunk?

Also, how about adding full CanvasRenderingContext2D support? I can make
 the stubs if it helps... The list is here: (for instance)
http://developer.apple.com/safari/library/documentation/AppleApplications/R
eference/WebKitDOMRef/CanvasRenderingContext2D_idl/Classes/CanvasRenderingC
ontext2D/index.html

Thanks!

Anze

On Friday 12 February 2010, Ahmed Ashour wrote:
Hi Anze,

Regarding "Cannot find function scale in object [object
 CanvasRenderingContext2D]", this can be easily fixed in HtmlUnit be
empty implementation.

Please have a look in the current implementation [1] and list all
functions you need to skip.

[1]

http://htmlunit.svn.sf.net/viewvc/htmlunit/trunk/htmlunit/src/main/java/c
o
m/gargoylesoftware/htmlunit/javascript/host/canvas/CanvasRenderingContext
2D .java?view=markup#l_22

Yours,
Ahmed
----
Blog: http://asashour.blogspot.com

________________________________
From: Anze <[email protected]>
To: [email protected]
Sent: Fri, February 12, 2010 1:14:31 PM
Subject: [Webtest] Prototype AJAX

Hi all!

We are starting out with WebTest and would appreciate some help... :)

1) we are making AJAX calls and found that you had to use <sleep> to wait
 for the call to finish. Now, this is awkward - why would someone ever
want to do something in a test before AJAX finished? Is there any wait to
say "wait for all AJAX to finish"?

2) we are using Flotr library for drawing graphs. However, it doesn't
play nicely with WebTest:
TypeError: Cannot find function scale in object [object
CanvasRenderingContext2D].
Since we do not intend to test Flotr charts at this point, we would like
WebTest to skip Flotr.draw() JS function. The only way I can think of is
to set a cookie in test files and then check for cookie before calling
Flotr.draw. Is there a nicer way to do it?
Of course, tips on how to fix JS support for Flotr would be even
better...

 :)

Thanks,

Anze

_______________________________________________
WebTest mailing list
[email protected]
http://lists.canoo.com/mailman/listinfo/webtest

Reply via email to