08:54:47 RRSAgent has joined #webdriver 08:54:47 logging to http://www.w3.org/2016/09/20-webdriver-irc 08:54:52 RRSAgent: please listen 08:54:58 Meeting: WebDriver F2F TPAC 20 September 2016 08:55:03 Chair: AutomatedTester 08:55:06 Agenda: https://www.w3.org/wiki/WebDriver/2016-TPAC-F2F 08:55:10 RRSAgent: please draft the minutes 08:55:10 I have made the request to generate http://www.w3.org/2016/09/20-webdriver-minutes.html ato 08:56:04 mikepie_ has joined #webdriver 08:56:06 Scribe: ato 08:56:13 Scribe: Andreas Tolfsen 08:56:15 ScribeNick: ato 08:56:36 Topic: W3C process and moving towards Rec 08:56:48 plh: There have been changes to the process. 08:56:55 plh: There is a lot of leeway. 08:57:21 plh: Please don’t ask me what the process is, but ask me what you want to do. 08:57:38 plh: Tell me what you want to do, and I will try to make the process getting there as pain-less as possible. 08:58:09 AutomatedTester: We’re quite confident that the spec will be done by March. 08:58:16 AutomatedTester: We’re more unsure where implementations will be. 08:58:29 AutomatedTester: As we implement things, we will find bugs. There will be bugs everywhere. 08:58:34 AutomatedTester: What would happen in that situatioN? 08:58:49 AutomatedTester: Obviously we can apply for an extension, which hopefully wouldn’t be that much of an issue. 08:58:57 plh: Depends how many times you’ve applied for an extension. 08:59:02 simonstewart: Many. 08:59:08 plh: That may be a problem. 08:59:18 AutomatedTester: The specification seems to go into an immutable state. 08:59:23 AutomatedTester: What is the process for an errata? 08:59:38 plh: Don’t move to Rec before you have a good answer to how you are going to maintain it. 08:59:57 plh: Figure out how you will do that first, please. 09:00:19 plh: You should already publish your draft for your next version before you mvoe to Rec. 09:00:31 plh: We want to avoid that specs are unmaintained. 09:00:43 plh: We want you to have a draft for the next version already, before you move to Rec. 09:00:51 plh: Version links, completely broken. 09:01:44 AutomatedTester: It’s easy iterating over what we have in Github. 09:01:49 plh: That’s what I expect. For you to continue iterating. 09:02:09 plh: Should you continue as an incubator? [???] 09:04:32 plh: Please continue maintaining your GitHub repo. 09:04:42 present+ AutomatedTester 09:05:27 plh: Depending on whether your changes are substantive or not, you can push to rec every month. 09:05:32 plh: People will think you are crazy, but you can. 09:06:14 plh: What kind of guarantees do you want to provide the world about your API? Also for implementors. 09:07:50 ato: I don’t think anyone is suggesting we will push API changes to a new version of the Rec. 09:08:12 plh: No, but if you find a security issue in your spec, we will need to update the spec. 09:08:24 simonstewart has joined #webdriver 09:08:56 AutomatedTester: Say we got to the point where we feel our specification is ready, but we are waiting for implementors to implement it. 09:09:00 AutomatedTester: And our charter expires. 09:09:02 AutomatedTester: What happens? 09:09:32 plh: Implementors want guarantees about stability of API. 09:09:41 plh: The director doesn’t expect things to be perfect. 09:10:00 plh: He expect it to be good enough. 09:10:11 09:10:49 plh: Most WG develop test suites. 09:10:53 plh: To give reassurance. 09:11:16 plh: How many tests to write? I don’t know. 09:12:34 AutomatedTester: Not all vendors are running WPT. 09:13:27 AutomatedTester: Even within Mozilla we don’t run the WebDriver spec tests. 09:14:08 plh: I thought the goal of WebDriver was to get past that. 09:14:31 AutomatedTester: We have a test suite that is divergent from the spec. 09:14:32 plh_ has joined #webdriver 09:14:33 ato: That is not the case… 09:15:01 AutomatedTester: Potentially we get to a point where our test suite is ready, we have this divergent test suite, and we’re fixing a more spec-based test suite. 09:15:36 plh: Meaning that you’re confident you have to conforming implementations? 09:15:50 AutomatedTester: Well that’s what I mean. How do we know? 09:16:29 AutomatedTester: We can use the Selenium project’s test suite. 09:17:03 jgraham: I think from this point of view the Selenium test suite is irrelevant. 09:17:25 jgraham: I understand that there are issues running the tests in CI 09:17:57 jgraham: But if you think pushing the specification to Rec is important, you need to push internally in your company to run those tests. 09:18:11 plh: You don’t need to run it in CI. 09:18:15 AutomatedTester: No but if you want to prove it… 09:18:57 plh: Do you know what you’re missing? 09:19:05 jgraham: We’re missing _the_ test suite. 09:19:15 plh: I thought you had some test. 09:19:33 jgraham: We did, but they were imported from Selenium and were incorrect and have been removed. 09:19:47 jgraham: There’s now no infrastructure blocker for someone going in an writing tests for this. 09:19:52 jgraham: The question is just people doing it. 09:20:30 jgraham: There are people in this room that want to keep the March deadline, and I hope they are stepping up to the task of writing tests before that time. 09:20:47 JohnJansen: Yes, I like having a deadline. That forces us to be active. 09:22:10 AutomatedTester: I don’t think we need any W3C resources. 09:22:21 plh_: W3C wants to help. WebDriver is important. 09:23:00 jgraham: For Mozilla, there are a series of technical steps we need to take to make it possible to run these tests in our CI. 09:23:42 judg3dr3ddb34r1234 09:23:42 jgraham: It will then, as we do implementation, we will then fill out the test suite. 09:23:49 doh 09:24:08 plh_: But you can’t expect this to happen organically. 09:25:21 AutomatedTester: I can start splitting out the specification in parts that need support. 09:25:36 plh_: You need to find out where the gaps are in your specification. 09:26:11 Action: AutomatedTester to create a project plan for tests 09:26:52 plh_: We can provide you with a generic testing plan. 09:27:01 sam_u has joined #webdriver 09:27:02 plh_: It’s not written anywhere either. 09:27:07 AutomatedTester: I don’t think we need that. 09:27:28 AutomatedTester: We need people not to step on each others’ toes. 09:27:46 AutomatedTester: It’s always possible hire contractors. 09:28:04 mikepie has joined #webdriver 09:28:49 JohnJansen has joined #webdriver 09:28:55 present+ JohnJansen 09:29:13 RRSAgent: please draft minutes 09:29:13 I have made the request to generate http://www.w3.org/2016/09/20-webdriver-minutes.html ato 09:29:15 present+ simonstewart 09:30:26 JohnJansen: You want to make sure that everyone is looking at the proper version. 09:30:41 plh_: Yes, and the “proper” version is different to different people. 09:30:49 plh_: There is no single answer. 09:32:31 plh_: Are you in CR? 09:32:34 JohnJansen: No. 09:32:43 AutomatedTester: We have two major things that are being landed at the moment. 09:33:07 AutomatedTester: Actions and changes to New Session, and there might be one or two things that have come out of the last few days. 09:33:12 plh_: Give me a time estimate. 09:33:27 jgraham: MikeSmith said you try to stay in CR for as little time as possible. 09:33:50 plh_ has joined #webdriver 09:34:09 sam_u has joined #webdriver 09:34:18 plh_: We need _reasonable_ amount of time to review the document. 09:34:25 AutomatedTester: I’ll pull a date out of my head. January. 09:35:08 plh_: Who is it relevant to? Who do we ask? 09:35:14 plh_: Who needs to read this in CR? 09:35:18 AutomatedTester: I don’t know. 09:35:35 JohnJansen has joined #webdriver 09:35:37 AutomatedTester: We’re not changing JS APIs. 09:35:39 simonstewart has joined #webdriver 09:37:08 plh_: We want the review to discover serious issues with your spec. Like if certain groups or people can’t use it. 09:37:58 AutomatedTester: In the charter it says [reads from charter]. 09:38:14 plh_: I think probably security review is going to be one of the most important. 09:38:33 AutomatedTester: Vendor security teams have reviewed things underway. 09:38:40 AutomatedTester: Does that make any difference? 09:38:48 plh_: We have missed problemsin the past. 09:38:58 plh_: It’s not going to be enough. 09:39:18 RRSAgent: please make the log world-visible 09:39:18 I'm logging. I don't understand 'please make the log world-visible', ato. Try /msg RRSAgent help 09:39:30 RRSAgent: please make it world-visible 09:39:30 I'm logging. I don't understand 'please make it world-visible', ato. Try /msg RRSAgent help 09:39:55 RRSAgent: please make these logs world-visible 09:40:02 RRSAgent: please draft the minutes 09:40:02 I have made the request to generate http://www.w3.org/2016/09/20-webdriver-minutes.html ato 09:40:24 present+ ato 09:40:36 AutomatedTester: More questions? 09:40:43 plh_: I have one for you. 09:41:00 plh_: When MikeSmith was saying keep the CR as late as possible… 09:41:19 plh_: Don’t go into CR until you know how to get out of it. 09:41:24 plh_: There is a price to be paid to be in CR. 09:41:35 plh_: It is more painful to change the specification once it’s in CR. 09:41:44 plh_: Because you have patent commitment &c. 09:42:12 AutomatedTester: Thank you. 09:42:15 plh_: Thank you. 09:42:25 AutomatedTester: Break now 09:46:26 Ms2ger has joined #webdriver 10:01:35 juangj has joined #webdriver 10:08:25 simonstewart has joined #webdriver 10:12:16 present+ AutomatedTester 10:12:17 present+ bburg 10:12:17 present+ sam_u 10:12:23 present+ mikepie 10:12:33 present+ brrian 10:12:53 present+ wilhelm_ 10:13:40 juangj_ has joined #webdriver 10:14:16 juangj_ has joined #webdriver 10:14:28 present+ juangj 10:14:39 Scribe: juangj_ 10:15:13 rniwa_ has joined #webdriver 10:15:20 Topic: Handshake strictness and Postel’s Law 10:16:15 simonstewart: reminder that as a general principle, you should ignore requests that contain extra stuff 10:16:25 jgraham: yes that’s how the spec has always been written 10:16:41 simonstewart: don’t expect this is contentious, just mentioned it because there have been bugs 10:16:47 Topic: /status endpoint 10:17:27 simonstewart: particularly for large server processes, you start the server and it goes and does a bunch of stuff while you have some coffee 10:17:51 simonstewart: it’s possible that the httpd is accepting connections while this stuff is happening, even though it’s not really ready to serve 10:18:03 simonstewart: nice to have an endpoint that says ‘200 ok’ when ready 10:18:25 ato: any reason not to just not respond to the request and block until ready? 10:18:39 Scribe: juangj 10:18:50 simonstewart: hard in practice 10:20:36 simonstewart: other use cases are for grid, for nodes to come up but indicate whether theyre really healthy 10:20:54 juangj: argument against /status in sapporo was that it’s an implementation detail of server management 10:21:09 juangj: however, intermediary nodes are arguably in the business of server management, so it would be convenient 10:21:17 ato: still don’t quite get the use case here 10:22:14 simonstewart: useful for things like grid to detect end node health; generally not useful for endpoitn nodes themselves 10:22:29 ato: is there some more rest-ful way we can do this, with a HEAD request perhaps 10:23:07 jgraham: if we did this, there should be agreement on what the response should look like and how it behaves in different situations 10:23:21 ato: not sure what an endpoint gives us that a HEAD request doesn't 10:23:24 simonstewart: HEAD request to where 10:24:09 ato: HEAD to /session? or to / 10:24:51 sam_u: seems like we’re just discussing the name of the endpoint now, not whether it’s valuable 10:25:18 ato: i see the use case for distributed systems, but… 10:26:53 ato: much of this depends on what it means to be “OK" 10:27:53 ato: not convinced an http status can convey the several states 10:28:31 jgraham: in principle this is useful. there should be an applicable http status somewhere, there are a lot of them 10:28:59 jgraham: if there was an http status that was unambiguously what we want for alive-but-not-healthy cases, that would be more theoretically pure 10:29:35 jimevans has joined #webdriver 10:29:43 simonstewart: in cases where you’re ok and ready to start new sessions, 200 is fine, and in all other cases 503 is probably fine 10:30:51 simonstewart: states are, e.g., “able to create new sessions”, “running, but unable to create sessions”, perhaps “shutting down” (e.g., draining a cluster of nodes) — might want to distinguish between reasons for being unable to create 10:32:04 jgraham: hm, actually, http status really applies to the current request. returning 503 is strange when we were clearly able to handle the /status request, even though it theoretically would not be able to handle a request to a different endpoint 10:32:23 sam_u: no reason you couldn’t say whatever you want to say in the body of the 200 response 10:33:03 ato: if there are going to be 4-ish states, then yes we should just put info in strings in the body 10:34:25 sam_u: do we still want, e.g., architecture, os name, in the /status response? (it’s in there in the json wire protocol) 10:34:38 ato: doesn’t really make sense for an intermediary node, which has multiple sessions 10:35:13 simonstewart: what’s actually important is just to know whether the node can create new sessions so local ends can poll for it 10:35:30 ato: [looking for relevant status codes] 10:35:50 jgraham: i thought we agreed to just use 200, with a json blob and status field 10:37:06 jgraham: could we just have a json blob, either {“ready”: true} or {“ready”: false}? and return ‘ready’ if a request to ‘new session’ would currently succeed 10:37:34 ato: wonder if we could supplement with additional, implementation-defined message 10:39:38 ato: of course we can’t stop intermediaries from adding more fields, but “ready” and “message” at least seem sufficient 10:39:54 sam_u: for the “ready” boolean, how sure do we need to be that we’re actually ready? 10:40:09 sam_u: e.g., chrome doesnt start up well when windows isn’t logged in 10:40:26 jimevans has joined #webdriver 10:40:34 ato: thought we decided this was only useful for intermediary nodes? 10:41:01 jgraham: don’t think we decided that 10:41:49 ato: not sure there’s a use case for this in an end node then. you could just attempt to create a session and get a ‘not created’ error 10:42:19 sam_u: don’t want to actually have to create a new session just to find out if you *could* create it 10:42:49 jgraham: don’t think we should define endpoints that only apply to intermediaries. intermediary and endpoint nodes should serve the same endpoints 10:43:23 simonstewart: simple use case for endpoint node would be to return ready=false when you’ve reached the maximum session count 10:43:47 sam_u: perhaps ready=false says it will definitely fail, ready=true means give it a shot, but doesn’t promise it will definitely succeed 10:44:06 jgraham: necessarily must be purely informational; there is always a race here 10:44:49 ato: 2 conditions: would “POST /session” succeed, and has max session count been reached 10:45:47 juangj: is it required to fail when your’e at the limit, or are you permitted to kill an old session and make a new one? 10:45:50 jgraham: it should be a fail 10:46:53 proposed resolution: add /status endpoint. response is {“ready”: boolean, “message”: implementation-defined explanatory string} 10:47:03 juangj: is “message” actually optional or is it required, but possibly empty? 10:47:08 jimevans has joined #webdriver 10:47:18 ato: i guess we don’t have any optional keys 10:47:56 RESOLUTION: add /status endpoint. response has two keys: {“ready”: boolean, “message”: implementation-defined explanatory string}. ready = true if the node believes that a ‘POST /session’ will succeed in creating a new session 10:47:56 juangj: r+ 10:49:12 ato: do we want to do something similar with ‘GET /sessions’? 10:49:25 ato: it’s convenient but there is no clear use case right now 10:49:49 jgraham: in the absence of clear use case, i’m opposed from a security standpoint, because it could make hijacking sessions easier 10:50:45 simonstewart: we do do this in Selenium server already, at /wd/hub; shows a list of active sessions so you can quit them more easily 10:51:12 AutomatedTester: definitely useful for intermediary nodes so you can clean up sessions that you thought should be dead. not clear this is useful for endpoint nodes 10:51:53 ato: you could specify this, and then perhaps in endpoint nodes you could return 403 Forbidden 10:52:28 AutomatedTester: concern that if endpoints return garbage here, then it breaks transparency 10:53:52 AutomatedTester: there’s also no reason to put something in the spec that people aren’t willing to implement 10:54:04 simonstewart: people could talk to their infosec teams 10:54:31 jgraham: wary of adding new features and more work at this point 10:54:43 brrian: i did used to have this endpoint and apple infosec did not like it 10:54:54 jgraham: oh well then that settles that, doesn’t it? 10:55:50 RESOLUTION: we will not add a /sessions endpoint for a list of active sessions, because of security concerns about divulging active sessions 10:56:04 sam_u: are session IDs supposed to be secret in general? 10:56:41 brrian: can’t keep them perfectly secret because people can sniff local traffic, of course. but having a /sessions endpoint means a webpage could grab it more easily 10:57:04 ACTION: simonstewart to mention sensible use of TLS in the Security appendix 10:57:23 Topic: Plans for a test suite 10:57:53 AutomatedTester: we need to work out what we currently have in the test suite, which i appreciate is not much 10:58:05 AutomatedTester: should create something to track who is working on what, and share what still needs to be done 10:58:27 AutomatedTester: figure out who has what tests, where, and how to migrate them to a common place 10:59:08 AutomatedTester: assuming for chrome’s tests, like mozilla’s, it’s non-trivial to migrate them? 10:59:10 sam_u: [agrees] 11:00:29 ato: skeptical of just mass-migrating tests from the selenium test suite 11:01:00 ato: should certainly run the selenium tests as a reference, but really important is that we ensure normative language is covered appropriately 11:01:37 simonstewart: vast majority of our users are selenium users, so selenium tests are an indication we can migrate people without blowing up every test in the world 11:02:04 ato: but also important to have tests to ensure conformance of implementations 11:02:14 simonstewart: both things important 11:02:36 JohnJansen: in your experience, is there value in starting with the old tests? 11:03:23 ato: no, don’t think so. better to examine spec text/structure, consider each step of each algorithm and consider ways to break them 11:04:09 AutomatedTester: example: marionette was returning floats for element coordinates, selenium was expecting ints 11:05:05 AutomatedTester: main takeaway is that we need to have a project plan so that we don’t step on each other toes. obviously won’t work to just say “work on whatever you want to work on" 11:05:40 ato: want to avoid situation where we import a mass number of tests into WPT that haven’t been reviewed carefully, and where we don’t know which parts of the spec each test is intended to cover 11:06:16 jgraham: less concerned about that. for our particular case, much more so than with the general web platform, we could get pretty far just with code coverage 11:08:54 JohnJansen: how would we implement this plan? just like a wiki table of spec sections? 11:09:12 [general discussion of the plan for the plan] 11:11:06 ato: the old tests are still in the WPT repo. you can still go look at them for reference if you want. we can delete once we have spec coverage of those areas 11:11:33 brrian: can you talk about the organization of the tests? right now there are 2 big files — are you envisioning more, smaller files? 11:11:42 ato: was thinking one file per chapter 11:12:00 simonstewart: how about directory per chapter? some complex things like Actions will be gargantuan 11:12:20 ato: let’s not worry about that at the moment. we can modify that when it becomes a problem 11:12:53 brrian: doesn’t seem like it would scale. one file = one person working at a time? 11:13:13 jgraham: not really worried about the merge for people just contributing new tests 11:13:54 [questions about actually checking out the repository] 11:14:04 [disbelief about some ridiculous git nonsense] 11:16:34 [debate about merits of embedding data: URIs in tests vs. putting HTML in separate files] 11:27:03 RRSAgent: please draft the minutes 11:27:03 I have made the request to generate http://www.w3.org/2016/09/20-webdriver-minutes.html ato 11:27:40 Topic: Promises in executeScript 11:28:09 simonstewart: i’m not sure how i’d do this in a local end that isn’t JS 11:28:41 some confusion about what the proposal actually is 11:28:53 AutomatedTester: (reading the bug out loud) 11:29:11 https://www.w3.org/Bugs/Public/show_bug.cgi?id=28060 11:29:39 jgraham: we clearly are not going to remove executeAsyncScript 11:29:40 jimevans has joined #webdriver 11:30:03 jgraham: if we want to finish anything, this is not the time to be writing a new algorithm to deal with this 11:30:16 ato: FTR i do think it’s an interesting idea 11:30:47 jgraham: this seems nice but should be traiged to level 2 11:31:28 jgraham: to clarify, proposal is that the promises should be settled entirely on the remote end 11:31:39 gitbot has joined #webdriver 11:31:39 [13webdriver] 15jgraham opened pull request #332: Implement a GET endpoint for the timeouts (06master...06get_timeouts) 02https://github.com/w3c/webdriver/pull/332 11:31:39 gitbot has left #webdriver 11:31:50 gitbot has joined #webdriver 11:31:50 [13webdriver] 15jgraham opened pull request #333: Add a status endpoint. (06master...06status) 02https://github.com/w3c/webdriver/pull/333 11:31:50 gitbot has left #webdriver 11:32:43 juangj: currently possible to deal with promises using executeAsync; just .then(callback) 11:32:52 but not necessary to add special functionality for it now 11:33:16 RESOLUTION: defer bug 28060 to level 2 11:35:40 scribe: JohnJansen 11:35:48 Topic: GetText() 11:36:26 current situation is that there has not been any review of the HTML spec 11:36:44 rniwa_: it is currently not interoperable 11:37:10 jgraham: it has landed 11:37:11 jimevans has joined #webdriver 11:37:19 juangj: there are still interop concerns 11:37:21 ... white space 11:37:33 ... probabably solvable when comparing text to known constant 11:37:46 ... work we'd like to not have to ask 11:37:58 ... ran some tests on google codebase that will fail 11:38:09 AutomatedTester: multiple browsers? 11:38:15 juangj: firefox and chrome 11:38:31 ato: concern is also innerText 11:38:47 ... even though it might not be interop amongst browsers 11:39:06 ... don't want to spec the javascript result for visible text 11:39:12 ... it is an approximation 11:39:52 AutomatedTester: as CSS progresses hopefully a platform API covers those 11:40:00 ... difficult for us to play "catch up" 11:40:24 ... groups driving things forward 11:40:37 ... what we consider visible now, might change 11:41:01 AutomatedTester: so we should normatively reference those specs 11:41:10 juangj: do we expect browser to converge? 11:41:21 AutomatedTester: guessing so, that's why it was added to HTML 11:41:37 AutomatedTester: but no idea right now 11:41:55 rniwa_: vendors are likely working towards interop 11:43:20 ato: if we spec something ourselves, it might not be the right thing for the future 11:43:28 ... remove it entirely or norm ref the html spec 11:43:49 juangj: as Jim says, there is concern with futureproofing 11:44:49 AutomatedTester: with getText() we have a path for interop, with isDisplayed, we don't 11:45:04 simonstewart: this is not a trivial thing to fix 11:45:18 ... real world backcompat concerns that will hinder adoption 11:45:31 wilhelm_: this is a case where quirks mode approach might help 11:46:12 simonstewart: the javascript representation works right now, and would allow vendors to move slowly toward interop 11:46:25 ato: we would be using somethign not standards compliant 11:46:35 s/somethign/something 11:46:55 jgraham: there is nothing saying you have to use the C++ algorithm of getText 11:47:06 ... you could use script injection that is equivalent 11:47:35 jgraham: in the end node you can do whatever you like 11:47:50 ... that is indistinquishable from the algorithm 11:48:13 simonstewart: output of innertext is not the same as the algorithm 11:48:50 simonstewart: are there other specs that depend on this? 11:49:00 jgraham: no, but if it breaks website, they get priority 11:49:10 rniwa_: innertext is very important to us 11:49:24 ... we could not change it would break user expectations 11:49:36 ato: better then to have a migration path 11:50:13 rniwa_: likely we would argue very hard not to change out implementation 11:51:06 ... lot of uses on the web [lists...] 11:51:55 AutomatedTester: selenium's version does not consider a lot of specs currently 11:52:06 simonstewart: that's why we are where we are 11:52:22 AutomatedTester: lots of cases where you "copy" and selenium gets it wrong 11:52:29 simonstewart: no, it's correct for Selenium 11:53:22 simonstewart: lots of test examples with single word, new line, new lines 11:53:32 ... built up a lot of code for this 11:53:49 ... but we have not defined behavior for some stuff (css text) 11:54:21 jgraham: is this the argument: 11:54:40 ... this is not implementable 11:55:23 ... we will not implement because it will break too much stuff, then we cannot have this in the spec 11:55:38 ... if you want to know what the text is actually like, then use script 11:55:46 simonstewart: it's not either/or 11:55:50 ... we can have a solution 11:56:31 simonstewart: we need to specify this with consideration for the current users who have written tests for 10 years 11:56:42 ... it would be nice to have something interoperable 11:56:55 ... but at no point can we throw existing users under the bus 11:57:12 ... therefore 'quirks mode' seems good 11:57:21 jgraham: that's two endpoints, then 11:57:35 ... essentially we are being told we have to have the selenium text 11:57:43 ato: maybe use capabilities? 11:57:59 ... if you are conformant with innertext, then use innertext 11:58:19 ... at some point in the future Selenium 4 11:58:38 simonstewart: we've made an effort to keep our changes from breaking users 11:58:56 ato: we need to have some migration path 11:58:59 simonstewart: agree 11:59:18 ato: at some point we need to move to the standard 11:59:50 simonstewart: I think we can define it simply by including the javascript as an appendix 12:00:17 ... we can recommend to users 12:00:35 jgraham: dislike "capability" and sort of dislike "javascript" in the appendix 12:01:08 ... we should be able to find evidence of people using innerText 12:01:18 ato: people won't be using it because it's not conformant 12:02:22 jgraham: seems like we can only ship the selenium solution because people don't want the un-interopable solution 12:02:41 JohnJansen: people want innertext to be interoperable, they do want to use this, but cannot 12:03:13 simonstewart: we need the old as well as a way to move forward 12:03:34 wilhelm_: if we don't have it, we will patch it forever 12:03:46 jgraham: seems like that could wait 6 months 12:03:54 jimevans_ has joined #webdriver 12:04:01 ... why are we talking about this in v1 12:04:21 rniwa_: it will not be interoperable in the next 3 years 12:04:48 ato: we are trying to be standard for the future and backward compat 12:04:57 jgraham: right, so let's wait 12:05:17 ... let's not add work TODAY for work that will not be useful for YEARS 12:06:09 rniwa_: it's also likely if we do this today, people will write ua sniffing and will break in the future 12:06:47 jgraham: we would never change what Selenium does today 12:07:22 ... when in years' time we have users asking for this 12:07:31 ... then we add innertext at that point 12:08:18 simonstewart: there are places where we say "browser can do what it wants..." 12:08:26 jgraham: very few 12:09:13 simonstewart: this applies to link text and partial link text 12:09:22 ... as well 12:09:45 jgraham: if we add this then the endpoint changes 12:10:10 ... maybe at that point you look at a global session setting 12:10:26 jimevans: nope 12:10:44 The current proposal is to put the Selenium JS for “get text” into an appendix 12:10:49 and then use that for now 12:11:34 simonstewart: writing this as prose is not going to work, should just have the code sample 12:12:20 wilhelm_: how sane is the current algorithm? 12:12:40 rniwa_: not very 12:12:47 ... just found two bugs today in it 12:13:42 RESOLUTION: Include the current Selenium solution in the spec and revisit innerText for V2 12:15:26 ato: we will likely end up with the same situation with even more tests in the future 12:15:40 jgraham: true, but the innertext solution is not currently a solution 12:17:14 simonstewart: should we submit our tests to the HTML working group? 12:17:26 JohnJansen: yes. if we have good tests that will help them, we hsould 12:17:58 wilhelm_: our selenium algorithm may actually INFORM the html spec and help 12:18:20 simonstewart: we don't WANT the selenium solution, but need it. 12:19:52 ACTION: figure out if our algorithm and tests help with innertext interop 12:20:25 Done 12:20:29 break for lunch 12:20:33 until 2 12:22:58 Zakim has left #webdriver 12:23:45 jimevans has joined #webdriver 12:29:25 juangj_ has joined #webdriver 12:51:45 RRSAgent, make minutes 12:51:45 I have made the request to generate http://www.w3.org/2016/09/20-webdriver-minutes.html JohnJansen 13:02:26 sam_u has joined #webdriver 13:04:35 kochi has joined #webdriver 13:05:20 chongz has joined #webdriver 13:08:48 simonstewart has joined #webdriver 13:08:58 scribe: simonstewart 13:09:10 topic: extensions 13:09:21 [AutomatedTester looks around] 13:10:05 mikepie introduces himself. Works as MS with JohnJansen. He and kmag2 are part of the browser extension WG 13:10:16 hwlee has joined #webdriver 13:10:18 mikepie: thinks there are some use case where webdriver is good for extensions 13:10:28 mikepie: where people want to test extensions on sites 13:10:37 mikepie: where extensions need to be tested cross-browser 13:10:46 mikepie: testing combinations of extensions 13:10:57 mikepie: offer coimpliance tests for extension support 13:11:07 mikepie demoes extensions 13:11:56 mikepie: additions include other ways that users need to interact with elements (such as click or send keys) 13:12:18 mikepie: for example, translate text via a right click menu 13:12:31 mikepie: also interact with browser chrome via a “page action” 13:12:47 mikepie: also similar browser actions that initiate some kind of action 13:13:10 mikepie: last piece is essentially a new window. Extension creates a new popup that it can present and user interact with 13:13:28 mikepie demonstrates suggestions by JohnJansen for extensions in WebDriver spec 13:13:41 boazsender has joined #webdriver 13:14:04 AutomatedTester: can’t see anything too contentious now 13:14:15 sam_u: agrees with what’s been said 13:14:32 sam_u: chromedriver has some support for chrome extensions. Used by google for testing some extensions already 13:14:56 mikepie: skips to section 5 of the spec (capabilities) 13:15:23 mikepie: talks about “enabledExtensions” capability, whihc contains a list of extensions 13:15:55 simonstewart: points out that relative paths might not work on a distributed system 13:16:20 mikepie: known issue: if you specify a folder, this should be the folder that contains the manifest json file 13:16:42 https://mikepie1.github.io/browserext-1/webdriver.html#capabilities 13:17:09 sam_u: chrome extensions have an ID that’s based on the key in the manifest. Is that part of the extensions work? 13:17:19 mikepie: will be discussed on Thursday about how to generate those IDs 13:18:01 sam_u: chrome unpacks a crx and takes the manifest and pulls out the ID 13:18:11 The id is stable for an extension 13:18:19 sam_u: will that work well with your extensions api? 13:18:27 mikepie: good question. We can discuss that on Thursday 13:19:17 mikepie: in section 6 (sessions), no modification that’s needed for extensions here, but the top-level browsing context may need to be expanded to handle extension pop-ups 13:19:44 mikepie: section 8 (window handles) would need to return the handle for an extension pop-up too 13:19:56 mikepie: same goes for 8.3 (switch to window) 13:20:08 mikepie: also 8.4 (get window handles) 13:20:31 sam_u: in chrome, extensions have another tab that they can use (“webview”) 13:20:53 sam_u: runs it as a separate render process, designed for embedding HTML into a page. 13:21:03 sam_u: in chromedriver that appears as a window 13:21:33 rniwa_: safari does something similar 13:21:47 rniwa_: you want to be able to interact with the page in the popup 13:21:57 mikepie: the page within the webview would appear as the window 13:22:12 sam_u: does this exist in other browsers? And do we want to add this to windows or frames? 13:22:28 sam_u: feels like it’s something that’s better as windows 13:22:47 kmag2: asks for clarification on windows in webdriver 13:22:58 https://developer.chrome.com/apps/tags/webview 13:23:05 AutomatedTester: discusses how marionette works 13:23:56 sam_u: the popup looks like an iframe to a user, but to everything else it looks like a window. It won’t inherit the permissions of the extension (eg. may not be allowed to use a camera) 13:24:06 kmag2: so it’s like an iframe in a web page but sandboxed? 13:24:31 ato: from the webdriver point of view, it’s just another top-level window. It’s just another top-level browsing context 13:24:50 rniwa_: in some browsers, a pop-up may appear, but you can still switch tabs 13:25:05 rniwa_: is a popup associated with a particular tab in chrome? 13:25:14 sam_u: only in the sense that it’s inside a tab 13:25:26 sam_u: we used “window” because it’s easier to implement 13:26:01 kmag2: from a user point of view, it may look like an iframe. Could be considered a different window 13:26:22 kmag2: not defined 13:26:47 JohnJansen: it “feels” like a separate window 13:27:05 kmag2: user expects popups to close when window owning the extenion closes 13:27:23 mikepie: section 17 (“extensions”) — new section 13:28:00 mikepie: this is about invoking separarte actions. First is “getExtensionActions”, which lets you know that there’s an action that can be used. Returns the text of the action (currently the title property) 13:28:37 mikepie: it also returns badge text as a separate string 13:28:53 mikepie: takeExtensionAction will activate the action 13:29:30 mikepie: another open issue is what’s returned from “getExtensionActions”. Currently returns a json object of “id”, “text”/“title”, “icon” and “badge” 13:29:50 mikepie: you may want extra information to handle similarly named extensions 13:30:07 kmag2: leaning towards generating an ID for each extension at runtime for the lifetime of the session 13:30:13 mikepie: useful for translated strings too 13:31:02 kmag2: thinks some things are missing. Being able to link a popup to an action would be useful. Also getting the location of the action (between browser actions and element actions). In firefox there’s also a drop down menu 13:31:22 kmag2: also in firefox and old versions of chrome, extensions could be hidden and disabled 13:31:44 mikepie: getExtensionContextMenuItems, specific to an individual element 13:32:01 mikepie describes actions available through context menu 13:32:49 kmag2: thinks some changes could be made. Both chrome and firefox support checkbox items, so being able to read those would be useful 13:32:58 kmag2: items can be enabled and disabled in all browsers 13:33:11 kmag2: most browsers also support separators in context menus 13:33:28 kmag2: context menus for actions. There’s currently no way to open them 13:34:07 AutomatedTester describes the “Actions” section and right clicking 13:35:10 AutomatedTester: “this is where it gets tricky”. The webdriver spec only handles content 13:35:24 AutomatedTester: at mozilla, we have support for going into the browser chrome 13:35:38 AutomatedTester: All we need to do is switch the context 13:35:53 AutomatedTester: talks about extension methods 13:37:12 ato: handling chrome in firefox only works because firefox’s UI is XUL 13:37:24 ato: thinks proposal sounds reasonable 13:38:02 mikepie: describes how to active an extension context menu 13:38:58 mikepie: other than one change to rename section to “Browser extensions" 13:39:17 AutomatedTester: I dont think this needs to be in the webdriver spec. Would be better in the extensions spec 13:39:29 AutomatedTester: allows the spec and how to test it to be combined in the same place 13:39:42 AutomatedTester: and the browser tools and testing wg should be part of the review process 13:40:07 AutomatedTester: the webdriver spec gives you primitives to get you 80% of the way there. WG’s can then extend the spec as necessary 13:40:37 AutomatedTester: that’s because theyre the subject matter experts. We know the WebDriver community, and we can help provide help as necessary 13:40:53 jgraham: additional point: if you need to patch any current text, that should be in the webdriver spec 13:41:17 ato: this is a discussion we’ve not yet had 13:41:38 ato: there are other WG’s that want to do something similar. Permissions and bluetooth are examples 13:42:03 ato: also for our spec. Aiming for REC by March. Open question for us, how the process of adding new things to the spec will look for us 13:42:12 wilhelm_: this is a good opportunity to talk about that 13:42:32 kmag2: the additional browsing contexts should be in the webdriver specs 13:42:43 AutomatedTester: we do have context menus “kind of” supported. 13:43:14 jgraham: right click is supported, but we don’t say what that should do 13:43:31 ato: in marionette, we do synthetic input. Executing a right click shouldn’t open a native menu 13:44:01 ato: we could support that in marionette, but if you want interaction with the context menu, we should allow providing access to certtain items for security reasons 13:44:27 ato: that’s why I think it makes sense to have a separate end point for selecting an item in the context menu 13:45:13 ato: you’re the first WG to come to us with a ready made proposal 13:45:28 mikepie: thank you. We’ll separate out the bits that need to be separated 13:45:35 AutomatedTester: feel free to email our mailing list 13:45:59 kmag2: do have an issue with how extensions are enabled, disabled and installed. Also opening special parts of the UI 13:46:21 AutomatedTester: briefly touched on that with “new session”. Provides a common mechanism for passing in preferences and extensions 13:46:31 kmag2: thought extensions could be installed at run time 13:47:00 sam_u: also stuff to do with handling permissions at run time 13:47:08 ato: marionette also has a need for that 13:47:16 ato: standardising that API sounds reasonable 13:47:37 kmag2: since you mentioned permissions, is theere anything for dealing with user permission prompts? 13:47:42 AutomatedTester: no 13:48:06 AutomatedTester: hard for us to describe how we’ll handle coat hangers until we know how they’re going to be implemented 13:48:12 ato: but permissions would be good to support 13:48:34 AutomatedTester bemoans lack of common behaviour between browser implementations for accepting permissions 13:49:22 Discssion on existing browser support for extensions 13:50:44 AutomatedTester: webdriver spec has a section on privacy. WebDriver should not impact users of the machine. Ideally installed extensions need to be removed 13:50:48 JohnJansen: we should call that out 13:50:59 ato: is there a temporary extension? 13:51:08 ato: avaliable for the life time of a browser 13:51:18 JohnJansen: that’s how we handle extensions now 13:51:56 Discussion about security and privacy 13:52:30 mikepie and kmag2 thank everyone 13:54:54 topic: discuss send keys and determine best course of action for unicode entries 13:54:59 AutomatedTester: but first, let’s have a break 13:55:37 sam_u: we have visitors from Google to talk about send keys. In addition, we could talk about testing keyboard input events. 14:09:57 RRSAgent: please draft the minutes 14:09:57 I have made the request to generate http://www.w3.org/2016/09/20-webdriver-minutes.html ato 14:11:38 sam_u has joined #webdriver 14:14:49 chongz has joined #webdriver 14:15:31 brrian: describes how the high level sendKeys command works by iterating over all characters 14:15:52 brrian: doesn’t work for unicode. IME spec is not doing much. 14:16:07 brrian: has suggested using “graphine clusters” instead 14:16:33 brrian: what we want to figure out is what the right thing to do is 14:17:32 Gary Karcmarcik (garyk): mentions unicode 14:17:52 jgraham: describes the high level “send keys” method 14:18:02 ato: and it has specialisation for certain form elements 14:18:23 garyk: talks about keyboard layout differences between US and other keyboard layouts 14:18:45 jgraham: the way webdriver works at the moment is that we assume that the keyboard is a 104 US keyboard 14:19:13 jgraham: there is some possibility that later webdriver will support different keyboard layouts 14:19:31 jgraham: main thrust of the question: what’s the correct way to break up a string into keystrokes? 14:19:58 garyk: if you approach it that way, you’re stuck with US English. Because outside of that you need knowledge of all keyboard layouts 14:20:06 rniwa_: mentions complex scripts 14:20:35 jgraham: if you send something that’s not represented on a US keyboard, we’ll send a keyboard event with the key code set to 0 14:20:58 rniwa_: this will make webdriver useless for testing anything outside of the US 14:23:11 rniwa_: talks about testing sites outside of the US 14:23:46 rniwa_: the only way to make this feature useful in Chinese or similar languages, you need IME methods 14:24:10 garyk: name is a little misleading, but it sounds useful. 14:24:43 garyk: keys come as individual events. 14:25:03 garyk is the coeditor of the UI events spec. Added support for code and key to events 14:25:24 garyk: the common keys are compatible, but other things aren’t 14:25:46 garyk: key value (what user sees), and code (scan code) 14:26:18 garyk: we’re aiming to avoid bizarre edge cases. Had a situation where hardware changes broke things in interesting ways 14:27:18 garyk: right now there’s no possible way to do this. Currently doing manual testing. Want to be able to test US International keyboard with dead keys. 14:27:45 garyk: suggests injecting keys at the system level, then we can validate the physical keys being sent 14:28:15 rniwa_: on some platforms, it’s impossible to send simulated system level keyboard events 14:28:25 garyk: if that’s the case, we can’t test on those platforms. 14:29:00 rniwa_: another way to do this is an emulated mark text and selection in the browser. 14:29:50 rniwa_: you send the keys to the browser as webdriver does already, but you need a slightly higher level API, offering key events and expected text, with ordered events 14:30:12 garyk: discusses how text input processing is done by the browser 14:31:02 jgraham: the existing situation with the lowest level API, the key events handwaves a little about how events are fired. 14:31:23 jgraham: you’re injecting something into the browser event loop that filters through the system that would generate the same web key events 14:33:27 simonstewart: describes local end implementations and how keyboard input is done 14:34:40 simonstewart: thought there was an API on Windows to figure out the keycode and scancode from a keyboard is 14:34:44 rniwa_: nope :) 14:35:01 rniwa_: describes difficulty of figuring out keyboard layouts 14:35:25 garyk: but if an OS can’t guess the keyboard, no-one can 14:35:45 garyk: Windows has an API to fill out the rest of the events given the scan code 14:36:05 rniwa_: thinks there’s an API to do that too. 14:36:50 rniwa_: this handles the keyboard problem, but not the way that things like how an OS does accents 14:36:59 rniwa_: iOS, OS X and Windows are all different 14:38:09 https://seleniumhq.github.io/selenium/docs/api/java/index.html?org/openqa/selenium/package-summary.html 14:38:16 https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/server/handler/ImeActivateEngine.html 14:38:25 simonstewart links to Selenium WebDriver APIs 14:38:44 boazsender has joined #webdriver 14:38:45 Scribe: ato 14:38:57 simonstewart: It was added to allow us to do proper localisation testing. 14:39:07 simonstewart: At a lower level than sendkeys. 14:39:21 simonstewart: Call low level actions API, and that would use the IME. 14:39:34 simonstewart: But that again assumed a partiucular keyboardlayout. 14:39:54 wilhelm_: Predefined keyboard layouts? Can we feed it with that? 14:40:01 wilhelm_: If you catch 50, it’s inifinitely better than what we hav enow. 14:40:15 garyk: There are six physical keyboard layouts. 14:40:22 rniwa_: Europeans are all 102. 14:40:28 garyk: There are locale differences. 14:40:36 garyk: [explains about keyboard layouts] 14:41:00 garyk: Then locales on top of these. 14:41:02 garyk: Literally dozens. 14:41:21 garyk: Pressing physical key, look it up in the locale, generate the key 14:41:23 Final API from Selenium WebDriver: https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebDriver.ImeHandler.html 14:41:32 garyk: Browser compat testing like I do is not the common use case here. 14:41:46 wilhelm_: I want to test the simple use case. 14:41:58 wilhelm_: Virtual IMEs are fine for the common use case. 14:42:06 garyk: That wouldn’t work for my use case. 14:42:37 garyk: There are different ways of getting access to characters. 14:42:48 garyk: E with accent: type dead key and that other key over there. 14:42:54 garyk: That is what I want to write a test case for. 14:43:04 rniwa_: I don't think it's necessary to define particular IME behaviour. 14:43:12 rniwa_: Each behaviour tested spearately does make sense to test. 14:43:24 rniwa_: Type the character, then insert another code point for accent. 14:43:40 rniwa_: Three or four different types of accents. 14:43:50 rniwa_: People probably want to these four different cases. 14:44:08 rniwa_: But they probably don't want to go through the native layer and look these up. It's fine to predefine. 14:44:25 rniwa_: Single IME that you can feed with some configuration should probably be fine. 14:44:35 rniwa_: Something that _behaves_ like a Korean IME. 14:44:51 rniwa_: Chinese IME is _very_ different from Taiwanese IME. 14:45:31 brrian: Most developers have no idea what a key code is. 14:46:05 rniwa_: Portuguese accent testing, Japanese kana input mode, Thai: Every testing machine would need to be natively set up to run that test. 14:46:19 garyk: You’re right. You would need physical keyboard and a lot of locales. 14:46:34 garyk: But WebDriver needs to be able to press physical key and set the locale. 14:46:49 garyk: It’s the concern of the test and the tester to make the right assertions. 14:46:53 brrian: That sounds limiting. 14:47:02 brrian: What level do we aim at here? 14:47:36 garyk: What would be the convenience method for Japanese users be? 14:47:45 garyk: We have a convenience method for US users. 14:48:06 rniwa_: I don’t think sending text is good enough… 14:48:29 [discussion about what users want] 14:49:10 garyk: We have a simple API and an andvanced API. It would be good if the advanced one actually was sufficiently advanced to support my use case. 14:50:25 rniwa_: If you implement autocompletion you need to generate out the right characters so you get the right composition. 14:50:52 garyk: Typing the simple characters, even in Japanese, is rather straight forward. 14:50:57 rniwa_: If you know the locale. 14:50:59 garyk: Yes. 14:51:21 garyk: Suggestions are in the heuristic space, so you can never rely on that. 14:51:28 s/garyk/rniwa_/ 14:52:42 wilhelm_: [explains about his idea about idealised IME] 14:53:20 rniwa_: User wants these characters, then replace the first with this. If you can specify that, you can generate a lot of the actions a user wants to make on a keyboard. 14:53:27 wilhelm_: When you write the test, you know what you expect. 14:53:34 garyk: Could have a dummy IME for Japanese 14:53:44 garyk: Simple default conversion that never tries to be adaptive. 14:54:01 rniwa_: Sometimes you want to test specific sequence of events. 14:54:23 rniwa_: When cursor moves to the left, it changes something, and then breaks that model. 14:54:32 rniwa_: Arbitrary conversion sequence needs to be able to be coded, I think. 14:54:50 brrian: Virtual IME, basically. 14:54:54 brrian: This doesn’t sonud high level any more. 14:54:59 garyk: Or just a really simple one! 14:55:29 rniwa_: The key is how to specify the sequenece of keyup and keydown, along with current composable text. 14:56:09 garyk: Order of key composition events, order of keyup keydown events, swapping, composition update events that are firing [plus a few more things] 14:56:23 rniwa_: Extending current keysend command and adda current composition state 14:56:33 garyk: ? 14:56:38 rniwa_: sendKey("k") 14:57:00 rniwa_: Also, here’s the current composiing character 14:57:15 rniwa_: Then user types 8, here’s the current composing character [x]. 14:57:53 jgraham: It sounds like the way that this could potentially 14:57:56 jgraham: We have this low level API 14:58:05 jgraham: I want to keydown A keyup A on this virtual keyboard. 14:58:37 jgraham: Each keyboad should have a way to define that the next event on this keyboard should be go into IME mode. 14:58:46 jgraham: Then press "k", "a" key in this IME. 14:58:55 jgraham: You’ve put JS in the page that listens for these events. 14:59:05 garyk: Also you can enter and exit the IME via the keyboard. 14:59:10 garyk: You don’t need a special API. 14:59:15 jgraham: The reason I want it to be specific. 14:59:40 jgraham: Is then obviously not browser/platform independent. 14:59:48 garyk: That seems reasonable. 15:00:38 garyk: What does the Selenium IME API do? 15:01:17 simonstewart: Once you activate the IME, you’re on your own. 15:02:02 rniwa_: On a Mac there’s no such thing as an IME. 15:02:12 rniwa_: If you disable key combinations, you select something from a menu. 15:02:36 garyk: I’m not uncomfortable with the idea that there’s a specific machine dedicated to do this. 15:02:41 garyk: Assumption I’m willing to make. 15:02:48 rniwa_: I think that will work for European languages, for usre. 15:03:11 rniwa_: This is the same problem with testing spell checking. 15:03:18 rniwa_: It learns, and you need to reset the state. 15:03:27 garyk: There are probably hacky ways to do this too. Overwrite some file. 15:03:31 garyk: Without reinstalling the OS. 15:05:58 ACTION: Add note to remind web browsers to disable their spell checking and autocorrection. 15:08:14 ato: [explains how synthesised events work in Firefox] 15:08:18 brrian: Safari uses nsEvents. 15:08:28 brrian: As if they were processed by the OS. 15:08:43 brrian: Slightly different than what Gecko does. Slightly lower level. 15:09:09 sam_u: In Chrome we do it in EventSource::SendEventToProcessor. 15:09:14 sam_u: This is before it gets to Blink. 15:09:51 garyk: Sounds cross platform. 15:09:54 sam_u: Maybe minus Android. 15:11:39 AutomatedTester: Do we want to be splitting grapheme clusters or [unicode code points]? 15:12:08 garyk: That’s not going to be good enough for Japanese or deep testing. But if it works it works. 15:12:12 garyk: You can split on unicode code point. 15:12:59 garyk: How do you specify thing sin the low level API? 15:13:25 jgraham: For keys, you say you want key down then a value that is like a character, and if that is a character that it can match on a US keyboard, then use that. 15:13:31 jgraham: That's the only thing at the moment. 15:13:38 jgraham: Not something that will change in the next six months. 15:13:41 jgraham: But may change in the future. 15:14:25 garyk: It would also be nice to not try to look up and just do the thing requested. 15:14:35 brrian: You send a key code _not_ a scan code. 15:14:41 jgraham: You send a key character, actually. 15:14:45 simonstewart: We can change that at some point. 15:14:56 jgraham: I think that API is extensible enough that we can change all the data in it. 15:15:32 simonstewart: You have services like Sauce that run their machiens in US data centres. 15:15:40 simonstewart: With users in Germany with German layout. 15:15:59 simonstewart: Their test will fail either locally or remotely. 15:16:12 jgraham: Scan code wont work. 15:16:13 simonstewart: Yes. 15:16:17 wilhelm_: You can assume US 15:16:36 garyk: Only the scan code, and expect the system to figure out the rest, then that would be different. 15:16:37 jgraham: Yes. 15:16:47 jgraham: This scan code sounds useful but that it is not something we want to add today. 15:16:53 jgraham: Something we may want to add int he future. 15:17:08 jgraham: Probably don't need to figure out all the details by this point. 15:17:33 garyk: By the time you do that it will not be useful for the work we are doing. 15:17:56 garyk: I’m going to continue with manual testing. 15:26:19 present+ jgraham 15:26:27 present+ simonstewart 15:26:27 present+ garyk 15:26:36 present+ kochi 15:26:41 RRSAgent: stop listnening 15:26:41 I'm logging. I don't understand 'stop listnening', ato. Try /msg RRSAgent help 15:27:04 RRSAgent: off