{"issue":{"state":"closed","pull_request":{"diff_url":null,"html_url":null,"patch_url":null},"user":{"avatar_url":"https://secure.gravatar.com/avatar/e56defed26930de2b50b68a5dd48c4f2?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"e56defed26930de2b50b68a5dd48c4f2","url":"https://api.github.com/users/dkozynko","login":"dkozynko","id":1155016},"milestone":{"state":"open","open_issues":7,"url":"https://api.github.com/repos/robfletcher/betamax/milestones/3","due_on":null,"number":3,"title":"1.1","creator":{"avatar_url":"https://secure.gravatar.com/avatar/1b4562cf0d2cfad0f98871827068e515?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"1b4562cf0d2cfad0f98871827068e515","url":"https://api.github.com/users/robfletcher","login":"robfletcher","id":95210},"description":null,"closed_issues":4,"created_at":"2011-09-19T05:50:40Z"},"updated_at":"2011-10-28T07:11:30Z","labels":[{"name":"defect","color":"e10c02","url":"https://api.github.com/repos/robfletcher/betamax/labels/defect"}],"assignee":{"avatar_url":"https://secure.gravatar.com/avatar/1b4562cf0d2cfad0f98871827068e515?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"1b4562cf0d2cfad0f98871827068e515","url":"https://api.github.com/users/robfletcher","login":"robfletcher","id":95210},"comments":2,"closed_at":"2011-10-28T07:11:30Z","url":"https://api.github.com/repos/robfletcher/betamax/issues/44","body":"Example of code:\r\n<pre><code>\r\n        def webClient = new WebClient()\r\n\r\n        webClient.throwExceptionOnScriptError = false\r\n        webClient.cssErrorHandler = new SilentCssErrorHandler()\r\n        webClient.refreshHandler = new IgnoringImmediateRefreshHandler()\r\n        webClient.alertHandler = new CollectingAlertHandler()\r\n        webClient.setUseInsecureSSL(true)\r\n        webClient.setCssEnabled(false)\r\n\r\n        def credentialsProvider = new DefaultCredentialsProvider()\r\n        webClient.proxyConfig = new ProxyConfig(\"localhost\", 5555)\r\n        webClient.credentialsProvider = credentialsProvider\r\n\r\n        def page = webClient.getPage(\"http://www.wikipedia.org/\")\r\n\r\n        def form = page.getElementById(\"searchform\")\r\n        form.getElementById(\"searchInput\").setText(\"blackbird\")\r\n        def resultPage = form.getInputByName(\"go\").click()\r\n</code></pre>\r\n\r\nThe tape was recorded. But playback fails:\r\n\r\n<pre><code>Invalid tape\r\nbetamax.tape.TapeLoadException: Invalid tape\r\n\tat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)\r\n\tat sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)\r\n\tat sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)\r\n\tat java.lang.reflect.Constructor.newInstance(Constructor.java:513)\r\n\tat org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)\r\n\tat org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:52)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:202)\r\n\tat betamax.tape.yaml.YamlTape.readFrom(YamlTape.groovy:34)\r\n\tat betamax.tape.yaml.YamlTape$readFrom.call(Unknown Source)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)\r\n\tat betamax.tape.yaml.YamlTapeLoader$_loadTape_closure1.doCall(YamlTapeLoader.groovy:37)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\r\n\tat java.lang.reflect.Method.invoke(Method.java:597)\r\n\tat org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:88)\r\n\tat groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)\r\n\tat groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)\r\n\tat groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1070)\r\n\tat groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)\r\n\tat groovy.lang.Closure.call(Closure.java:276)\r\n\tat groovy.lang.Closure.call(Closure.java:289)\r\n\tat org.codehaus.groovy.runtime.DefaultGroovyMethods.withReader(DefaultGroovyMethods.java:12951)\r\n\tat org.codehaus.groovy.runtime.DefaultGroovyMethods.withReader(DefaultGroovyMethods.java:12564)\r\n\tat org.codehaus.groovy.runtime.dgm$729.invoke(Unknown Source)\r\n\tat org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:270)\r\n\tat org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)\r\n\tat betamax.tape.yaml.YamlTapeLoader.loadTape(YamlTapeLoader.groovy:36)\r\n\tat betamax.tape.yaml.YamlTapeLoader.loadTape(YamlTapeLoader.groovy)\r\n\tat betamax.TapeLoader$loadTape.call(Unknown Source)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)\r\n\tat betamax.Recorder.insertTape(Recorder.groovy:104)\r\n\tat betamax.Recorder$insertTape.callCurrent(Unknown Source)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:153)\r\n\tat betamax.Recorder.startProxy(Recorder.groovy:180)\r\n\tat betamax.Recorder.this$2$startProxy(Recorder.groovy)\r\n\tat betamax.Recorder$this$2$startProxy.callCurrent(Unknown Source)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:153)\r\n\tat betamax.Recorder.withTape(Recorder.groovy:151)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\r\n\tat java.lang.reflect.Method.invoke(Method.java:597)\r\n\tat org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:88)\r\n\tat groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)\r\n\tat groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)\r\n\tat groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1070)\r\n\tat org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN(ScriptBytecodeAdapter.java:77)\r\n\tat betamax.Recorder.this$dist$invoke$2(Recorder.groovy)\r\n\tat betamax.Recorder$1.methodMissing(Recorder.groovy)\r\n\r\nCaused by: unacceptable character '?' (0xD800) special characters are not allowed\r\nin \"<reader>\", position 41307\r\n\tat org.yaml.snakeyaml.reader.StreamReader.checkPrintable(StreamReader.java:98)\r\n\tat org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:191)\r\n\tat org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:145)\r\n\tat org.yaml.snakeyaml.scanner.ScannerImpl.scanFlowScalarNonSpaces(ScannerImpl.java:1477)\r\n\tat org.yaml.snakeyaml.scanner.ScannerImpl.scanFlowScalar(ScannerImpl.java:1465)\r\n\tat org.yaml.snakeyaml.scanner.ScannerImpl.fetchFlowScalar(ScannerImpl.java:834)\r\n\tat org.yaml.snakeyaml.scanner.ScannerImpl.fetchDouble(ScannerImpl.java:823)\r\n\tat org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:341)\r\n\tat org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:179)\r\n\tat org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingValue.produce(ParserImpl.java:591)\r\n\tat org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)\r\n\tat org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)\r\n\tat org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:133)\r\n\tat org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237)\r\n\tat org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)\r\n\tat org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237)\r\n\tat org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)\r\n\tat org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:204)\r\n\tat org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:158)\r\n\tat org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237)\r\n\tat org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)\r\n\tat org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:123)\r\n\tat org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:106)\r\n\tat org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:121)\r\n\tat org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480)\r\n\tat org.yaml.snakeyaml.Yaml.loadAs(Yaml.java:440)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\r\n\tat java.lang.reflect.Method.invoke(Method.java:597)\r\n\tat org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229)\r\n\tat org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)\r\n\tat org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)\r\n\tat org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)\r\n\tat betamax.tape.yaml.YamlTape.readFrom(YamlTape.groovy:32)\r\n\t... 488 more\r\n</code></pre>","html_url":"https://github.com/robfletcher/betamax/issues/44","number":44,"title":"Invalid tape with HtmlUnit","id":2068710,"created_at":"2011-10-27T14:53:53Z"},"action":"closed"}