-
mmerrell
testing
-
» cb hey Tim š
-
-
RRSAgent
-
jgraham
RRSAgent, this meeting spans midnight
-
RRSAgent
ok, jgraham; I will not start a new log at midnight
-
jgraham
RRSAgent make logs public
-
jgraham
RRSAgent make minutes
-
jgraham
RRSAgent create the minutes v2
-
jgraham
RRSAgent, make logs public
-
RRSAgent
I have made the request, jgraham
-
jgraham
RRSAgent, create the minutes v2
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html jgraham
-
plh
-
plh
Meeting number:
-
plh
644 219 299
-
plh
Password:
-
plh
w3c
-
plh
-
simonstewart
G'day, one and all
-
ato
Meeting: Browser Tools- and Testing WG, Day 1, TPAC 2019, Fukuoka
-
ato
Present+
-
» ato RRSAgent: make minutes
-
» ato RRSAgent, make minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html ato
-
plh
-
simonstewart
Present+
-
cb
present+
-
jgraham
present+
-
Boaz
present+
-
Boaz
-
AutomatedTester
present+ David Burns, Mozilla
-
JohnJansen
present+
-
JohnJansen
present?
-
CalebRouleau
present+
-
bwalderman
present+
-
JohnJansen
rrsagent, make minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html JohnJansen
-
ato
-
mmerrell
present+
-
twisniewski
present+
-
titusfortner
present+
-
CalebRouleau
present+
-
zghadyali
present+
-
JohnJansen
present+
-
lukebjerring
present+
-
-
zcorpan
present+
-
miketaylr
present+
-
MikeSmith
present+
-
JohnChen
present+
-
drousso
present+
-
diemol
present+
-
ato
-
JohnJansen
rrsagent, make minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html JohnJansen
-
AutomatedTester
-
plh
-
JohnJansen
-
ato
Topic: Continuous Standards Development
-
ato
-
brrian
present+
-
» ato RRSAgent, make minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html ato
-
AutomatedTester
present+ David Burns
-
ato
Topic: Agenda
-
ato
ScribeNick: ato
-
ato
Topic: Agenda
-
» ato RRSAgent, please make the minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html ato
-
ato
Chair: AutomatedTester
-
ato
s/David//
-
ato
s/Burns//
-
ato
-
ato
RRS, make minutes
-
JohnJansen
RRSAgent, make minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html JohnJansen
-
» ato I think the bot may be stuck again
-
» ato no, there we are. itās updated.
-
ato
s/David_Burns//
-
ato
s/Mozilla//
-
-
Boaz
present+
-
JohnJansen
present+
-
ato
ScribeNick: mmerrell
-
ato
-
diemol
present+ Diego Molina, Sauce Labs
-
simonstewart
present+
-
JohnJansen
you cannot use a comma in your "present"
-
mmerrell
Topic: Bi-directional communication
-
JohnJansen
it looks like Sauce Labs is here :-)
-
simonstewart
In a sense, they are
-
mmerrell
jgraham: we need timeslots for the discussions
-
» ato please use /me to avoid things turning up in the minutes
-
mmerrell
AutomatedTester: discuss until 12:30, at which point we'll break for lunch
-
JohnJansen
RRSAgent, make minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html JohnJansen
-
ato
s/Sauce_Labs//
-
ato
s/Diego_Molina//
-
Boaz
-
mmerrell
Boaz: there's another agenda topic: articulating a workflow or set of guidelines for how to use the interfaces to create test materials
-
mmerrell
Boaz: specifically for browser vendors
-
mmerrell
Boaz: propose discussing that for Friday afternoon
-
mmerrell
AutomatedTester: lunch 12:30-1:30, break 3:30 - 4, at which point we do the Aria Driver demo
-
mmerrell
jgraham: "bi-di" is short for "bi-directional WebDriver"
-
mmerrell
jgraham: 16:30 should start Shadow DOM discussion
-
mmerrell
jgraham: first thing Friday will be long-running session
-
mmerrell
simonstewart: Custom Selectors will be a 30 minute discussion
-
AutomatedTester
-
mmerrell
Boaz: there is interest in creating bi-directional communication functionality added to the spec
-
mmerrell
AutomatedTester: 3 elements: use cases, transports, APIs
-
mmerrell
AutomatedTester: this is not standardizing on CDP, this is faciilitating test automation
-
mmerrell
AutomatedTester: frame use cases around that principle, we wont' get bogged down in historical implementations
-
mmerrell
AutomatedTester: focus on what this group needs for a bi-di tool
-
mmerrell
AutomatedTester: starting with use cases, we have input from Sauce Labs and others
-
JohnJansen
-
simonstewart
q+
-
» Zakim sees simonstewart on the speaker queue
-
simonstewart
q?
-
» Zakim sees simonstewart on the speaker queue
-
mmerrell
jgraham: [explains how to use the queue for speakers]
-
JohnChen
q+
-
» Zakim sees simonstewart, JohnChen on the speaker queue
-
cb
q+
-
» Zakim sees simonstewart, JohnChen, cb on the speaker queue
-
AutomatedTester
q?
-
» Zakim sees simonstewart, JohnChen, cb on the speaker queue
-
jgraham
ack simonstewart
-
» Zakim sees JohnChen, cb on the speaker queue
-
mmerrell
q?
-
» Zakim sees JohnChen, cb on the speaker queue
-
mmerrell
simonstewart: use cases: people use Cypress and Puppeteer in certain ways that should inform this feature
-
mmerrell
simonstewart: the ability to wait for an event in the DOM
-
mmerrell
simonstewart: being notified of those events allows stable tests
-
mmerrell
simonstewart: logging what's going on in the browser, including console and JS errors
-
mmerrell
simonstewart: people really like to fail tests on ANY JS error, which they do by loading a page and executing a script, but which can cause race conditions
-
mmerrell
simonstewart: also, stubbing out back-ends
-
mmerrell
simonstewart: people are trying to record traffic, then simulate the back-end operations. Supporting that woul dhelp
-
mmerrell
simonstewart: CDP gives you a full-page screenshot option
-
jgraham
ack JohnChen
-
» Zakim sees cb on the speaker queue
-
mmerrell
simonstewart: [4 use cases total]
-
mmerrell
JohnChen: people like the features of Puppeteer, and want those features in WebDriver
-
mmerrell
JohnChen: e.g. intercepting HTTP requests, and modifying them dynamically
-
mmerrell
CalebRouleau: is that the same as Simon's point about stubbing back-end requests
-
mmerrell
jgraham: it's the same thing
-
simonstewart
It's a better formulation of what I said
-
mmerrell
JohnChen: users need to be able to get notified without having to poll the page
-
AutomatedTester
q?
-
» Zakim sees cb on the speaker queue
-
jgraham
ack cb
-
» Zakim sees no one on the speaker queue
-
mmerrell
cb: at Sauce Labs, we have the ability to bypass the crhomedriver, which allows us to allow custom commands (throttling CPU, simulating performance issues, etc)
-
jgraham
q+
-
» Zakim sees jgraham on the speaker queue
-
mmerrell
cb: SL performance product also requires these internal accesses, and incorporating that ability into the protocol would help greatly
-
AutomatedTester
ack jgraham
-
» Zakim sees no one on the speaker queue
-
mmerrell
cb: meaningful error messages, access to internal devtool protocols, all would be helpful for customers to be able to write better tests
-
mmerrell
jgraham: is it important to SL that you can get the same profiling data out of all browsers, or can these things be more browser-specific?
-
mmerrell
jgraham: FF has different data from Chrome, which greatly complicates the possibility to do this
-
mmerrell
cb: we just need to get the same kind of information, understanding that it will be different
-
AutomatedTester
q?
-
» Zakim sees no one on the speaker queue
-
mmerrell
cb: we need to get as much information about the AUT as possible, no matter how we can get it (page load timings, logs, etc)
-
mmerrell
jgraham: for these introspection APIs, these use cases *are* satisfied even though there isn't uniformity among the browsers
-
ato
q+
-
» Zakim sees ato on the speaker queue
-
AutomatedTester
ack ato
-
» Zakim sees no one on the speaker queue
-
jgraham
ack ato
-
» Zakim sees no one on the speaker queue
-
mmerrell
ato: one more use case: from WPT, a question came up
-
mmerrell
ato: in order to be able to write good tests for the browsers, functionality could be exposed in this manner that would help browser developers as well as end users
-
AutomatedTester
rrsagent, this meeting spans midnight
-
RRSAgent
ok, AutomatedTester; I will not start a new log at midnight
-
mmerrell
jgraham: do you mean event-based user interactions?
-
mmerrell
ato: there's an interest from spec authors who want to expose bi-di APIs, which is currently made difficult by WebDriver
-
mmerrell
jgraham: there are other contraints here: some of these "mocking" features are very difficult to implement in terms of a command-response protocol
-
ato
q?
-
» Zakim sees no one on the speaker queue
-
mmerrell
Boaz: I've invited Reilly [from the Chrome team] to discuss this particular thing Friday afternoon
-
mmerrell
Boaz: this will allow us to state these use cases to one of the most important stakeholders
-
cb
q+
-
» Zakim sees cb on the speaker queue
-
mmerrell
jgraham: to ato: is this for developer ergonomics for the browser developers, or are they being prevented from developing these things?
-
mmerrell
ato: one example is the Gutenberg project, which is a test suite--this should be used as a target for the kinds of features being asked for
-
jgraham
-
mmerrell
ato: the test suite isn't doing anything particularly challenging, but it would be a different programming model. There's a desire from modern web developers to have an API that allows async comms
-
simonstewart
q+
-
» Zakim sees cb, simonstewart on the speaker queue
-
mmerrell
ato: the one thing the test suite does, where WD would be helpful, is in the cases of complicated keyboard interactions
-
mmerrell
ato: these cases woul dbe better expressed in WebDriver
-
AutomatedTester
q?
-
» Zakim sees cb, simonstewart on the speaker queue
-
mmerrell
ato: it exposes and surfaces browser-specific interactions
-
jgraham
ack cb
-
» Zakim sees simonstewart on the speaker queue
-
mmerrell
cb: for SL customers, bi-di mechanism would allow for much better state management of tests
-
AutomatedTester
q?
-
» Zakim sees simonstewart on the speaker queue
-
mmerrell
simonstewart: that's risky, because so many things can go wrong
-
mmerrell
cb: agreed, but those things that can go wrong are commonly network-based
-
mmerrell
ato: another use case: people writing clients for automation could benefit from other features, e.g. dynamic changes to iFrame or documents
-
mmerrell
ato: these events are important when writing clients
-
mmerrell
ato: another use is performance logs: people need to know about the performance logs for internal timings
-
mmerrell
ato: these things are inherently browser-specific, and they already exist
-
mmerrell
AutomatedTester: moving on, to simonstewart
-
jgraham
ack simonstewart
-
» Zakim sees no one on the speaker queue
-
mmerrell
simonstewart: summary of use cases: log (performance, console, javascript errors), network interception, and stubbing out req/res, mutation/observation in waiting for events or new contexts
-
ato
q+
-
» Zakim sees ato on the speaker queue
-
mmerrell
jgraham: we should not assume this is the complete set of use cases, and we should get more data from other tooling
-
mmerrell
Boaz: we should also consider web-USB and others
-
mmerrell
Boaz: as well as mutation/observation of non-browser features, e.g. Geolocation
-
mmerrell
ato: these things are not dependent on a bi-di comm interfact
-
AutomatedTester
q?
-
» Zakim sees ato on the speaker queue
-
mmerrell
CalebRouleau: there is probably overlap of these use cases
-
AutomatedTester
ack ato
-
» Zakim sees no one on the speaker queue
-
mmerrell
simonstewart: bi-di comms expose 2 common patterns: 1 request, I want 1 response, or "I'm registering a listener, so give me responses as they come up"
-
mmerrell
simonstewart: registering for a listener is "network interception"
-
mmerrell
simonstewart: e.g. "I want to click a button" or "I want to type something"
-
mmerrell
simonstewart: people usually set up a web socket as a long-running connection (usually on localhost only)
-
mmerrell
simonstewart: this normally sets up the web socket
-
mmerrell
simonstewart: when not on localhost, we introduce risks around corporate networks
-
jgraham
q+
-
» Zakim sees jgraham on the speaker queue
-
ato
q+
-
» Zakim sees jgraham, ato on the speaker queue
-
JohnJansen
ack jgraham
-
» Zakim sees ato on the speaker queue
-
mmerrell
simonstewart: need a mechanism for reconnecting and being notified of what was missed (in the case of complcated, corporate networks)
-
JohnJansen
rrsagent, make minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html JohnJansen
-
mmerrell
jgraham: feels like a lot of scope creep in the context of what exists
-
CalebRouleau
q+
-
» Zakim sees ato, CalebRouleau on the speaker queue
-
mmerrell
jgraham: buffering up these things won't work well. Listening to network requests adds risk
-
mmerrell
jgraham: timeouts are a risk
-
mmerrell
jgraham: need to hear that this is super-important from the most prolific users before we make the browser responsible for caching all these requests
-
mmerrell
cb: the VM will shut down if the request times out
-
brrian
q+
-
» Zakim sees ato, CalebRouleau, brrian on the speaker queue
-
mmerrell
jgraham: is network flakiness such a big problem that we need to later the protocol? do we need to abstract over that with an event buffer to keep the integrity of the comms in place to that extent?
-
mmerrell
cb: we can always build an abstraction around it that doesn't need to be part of the protocol
-
simonstewart
q+
-
» Zakim sees ato, CalebRouleau, brrian, simonstewart on the speaker queue
-
brrian
q-
-
» Zakim sees ato, CalebRouleau, simonstewart on the speaker queue
-
mmerrell
jgraham: not sure about the web socket issue, but would like to know whether this body considers that to be a risky or unstable thing to rely on
-
mmerrell
simonstewart: HTTP2 server is an alternative
-
simonstewart
Server push
-
simonstewart
q?
-
» Zakim sees ato, CalebRouleau, simonstewart on the speaker queue
-
jgraham
ack ato
-
» Zakim sees CalebRouleau, simonstewart on the speaker queue
-
mmerrell
MikeSmith: WebSockets are essentially deprecated at this point
-
AutomatedTester
s/HTTP2 server/HTTP2 server push/
-
AutomatedTester
q?
-
» Zakim sees CalebRouleau, simonstewart on the speaker queue
-
mmerrell
ato: we are jumping ahead of the discussion - many assumptions going on about how the protocols work
-
mmerrell
ato: we've agreed that having a bi-di mechanism is good, but we are constrained by the existing protocols that are out there
-
mmerrell
ato: designing a new one from scratch seems silly
-
» Hexcles WebTransport? :)
-
mmerrell
ato: I'd like to see a good x-browser automation protocol, designed from scratch, which covers all use cases, which fixes the problems in the existing protocols, but that's not possible at this point
-
mmerrell
ato: SL says they want to expose the existing internals (CDP/Puppeteer, etc), but not all these protocols would support the kind of embedding necessary for the "resumption of session" that simonstewart wanted
-
mmerrell
simonstewart: one of the problems we had developing the WD standard is the constant improvement/change we had during the process
-
cb
q+
-
» Zakim sees CalebRouleau, simonstewart, cb on the speaker queue
-
AutomatedTester
q?
-
mmerrell
jgraham: I believe SL didn't say they wanted those features--they're already doing them
-
» Zakim sees CalebRouleau, simonstewart, cb on the speaker queue
-
mmerrell
ato: this isn't about CDP specifically, even though that's what it sounds like when I listen to this body
-
mmerrell
ato: CDP does support session resuming, web socket connections, etc... by going in to that conversation, we're jumping ahead... we're adding constraints
-
jgraham
q+
-
» Zakim sees CalebRouleau, simonstewart, cb, jgraham on the speaker queue
-
Boaz
q?
-
» Zakim sees CalebRouleau, simonstewart, cb, jgraham on the speaker queue
-
mmerrell
ato: I would like to know the opinions of the browser vendors to know what the outcome should be
-
Boaz
q+
-
» Zakim sees CalebRouleau, simonstewart, cb, jgraham, Boaz on the speaker queue
-
simonstewart
q-
-
» Zakim sees CalebRouleau, cb, jgraham, Boaz on the speaker queue
-
jgraham
ack CalebRouleau
-
» Zakim sees cb, jgraham, Boaz on the speaker queue
-
mmerrell
ato: need more clarity as to what exactly would be *in* that web socket, if the web socket is exposed
-
mmerrell
CalebRouleau: we want to think about what's currently there with CDP
-
brrian
q+
-
» Zakim sees cb, jgraham, Boaz, brrian on the speaker queue
-
mmerrell
CalebRouleau: we don't want to implement something from scratch in the Chrome Team. We've worked for a long time on the CDP, and need the new feature set to be at least somewhat compatible with what we've done already
-
mmerrell
CalebRouleau: we don't want WD to be overly complicated
-
AutomatedTester
q?
-
» Zakim sees cb, jgraham, Boaz, brrian on the speaker queue
-
mmerrell
simonstewart: we should take the caching of things off the table for now
-
JohnJansen
+1 to simonstewart taking caching off the table
-
mmerrell
drousso: Apple's position is that we want to see how this will work before we sign off. Whether it's WebSocket or HTTP2, it's a rewrite for us
-
CalebRouleau
s/We've worked for a long time on the CDP/we have a lot of stuff that already depends on CDP and we don't want to support both/
-
mmerrell
drousso: so if we're going to do it, we need to know more before we can commit
-
mmerrell
jgraham: are you saying you're interested, but with no plans to implement?
-
mmerrell
brrian: we don't currently allow for either Web Sockets or HTTP2, and this would represent a significant spending of resources
-
AutomatedTester
q?
-
» Zakim sees cb, jgraham, Boaz, brrian on the speaker queue
-
mmerrell
CalebRouleau: how does the CDP work for Safari, in detail?
-
mmerrell
simonstewart: the Safari implementation of the debug protocol is currently locked down
-
AutomatedTester
q?
-
» Zakim sees cb, jgraham, Boaz, brrian on the speaker queue
-
mmerrell
CalebRouleau: I'm trying to ask what is publicly available, but it sounds like it's basically nothing
-
mmerrell
brrian: we need specific questions and specific feature requests in order to get this conversation going for Safari
-
Hexcles
RRSAgent, make minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html Hexcles
-
mmerrell
jgraham: at some point we need a clear decision about the debug protocol, some entry criteria... but as long as we can agree on the messaging itself, that will be sufficient
-
AutomatedTester
q?
-
» Zakim sees cb, jgraham, Boaz, brrian on the speaker queue
-
jgraham
ack cb
-
» Zakim sees jgraham, Boaz, brrian on the speaker queue
-
AutomatedTester
scribenick: AutomatedTester
-
AutomatedTester
cb: the SL major use case is being able to access the browser internals to surface that to people
-
AutomatedTester
CalebRouleau: you dont care the transport, you just want access
-
AutomatedTester
cb yes
-
JohnJansen
s/SL/SauceLabs
-
AutomatedTester
q?
-
» Zakim sees jgraham, Boaz, brrian on the speaker queue
-
AutomatedTester
ack jgraham
-
» Zakim sees Boaz, brrian on the speaker queue
-
AutomatedTester
jgraham: for Mozilla we think there is a cross browser automation protocol that facilitates automation. We need to be aware that there is a move to something like puppeteer is a threat tot he web since it only covers 1 browser
-
Hexcles
s/ SL / SauceLabs /g
-
AutomatedTester
s/tot he/to the/
-
bwalderman
q+
-
» Zakim sees Boaz, brrian, bwalderman on the speaker queue
-
CalebRouleau
q?
-
» Zakim sees Boaz, brrian, bwalderman on the speaker queue
-
ato
q+
-
» Zakim sees Boaz, brrian, bwalderman, ato on the speaker queue
-
CalebRouleau
q+
-
» Zakim sees Boaz, brrian, bwalderman, ato, CalebRouleau on the speaker queue
-
JohnChen
q+
-
» Zakim sees Boaz, brrian, bwalderman, ato, CalebRouleau, JohnChen on the speaker queue
-
simonstewart
q+
-
» Zakim sees Boaz, brrian, bwalderman, ato, CalebRouleau, JohnChen, simonstewart on the speaker queue
-
AutomatedTester
jgraham: There has been some discussion around CDP for reuse. One of the historic complaints is that CDP is unstble and only gives us certain things that are chrome specific. We would need to see what is stable and what we can solve those
-
AutomatedTester
simonstewart: and this is why we focused on use cases
-
simonstewart
q?
-
» Zakim sees Boaz, brrian, bwalderman, ato, CalebRouleau, JohnChen, simonstewart on the speaker queue
-
Boaz
ack boaz
-
» Zakim sees brrian, bwalderman, ato, CalebRouleau, JohnChen, simonstewart on the speaker queue
-
AutomatedTester
JohnChen: yes, my point is that there are implicit stability from the APIs that use CDP
-
AutomatedTester
s/JohnChen/jgraham
-
AutomatedTester
q?
-
» Zakim sees brrian, bwalderman, ato, CalebRouleau, JohnChen, simonstewart on the speaker queue
-
jgraham
ack brrian
-
» Zakim sees bwalderman, ato, CalebRouleau, JohnChen, simonstewart on the speaker queue
-
AutomatedTester
brrian: it would be great to expose the API and just add to it. That is a bad idea. We need to make sure that we versioning and even with that we break things all the time.
-
AutomatedTester
brrian: it is very difficult to test at the moment
-
AutomatedTester
brrian: whatever we do needs to make sure is testable and that we dont rely on browser internals
-
AutomatedTester
brrian: in webkit we have processes that come and go and our tools should not have to follow that
-
AutomatedTester
... we are going to need some compat layer to figure this out.
-
AutomatedTester
... [discusses examples of where webdriver and a tool might look different]
-
AutomatedTester
q?
-
» Zakim sees bwalderman, ato, CalebRouleau, JohnChen, simonstewart on the speaker queue
-
AutomatedTester
brrian: as for JSON RPC, we have used it for 11 years and it is solid so I dont think we need to change that
-
JohnJansen
q?
-
» Zakim sees bwalderman, ato, CalebRouleau, JohnChen, simonstewart on the speaker queue
-
AutomatedTester
jgraham: is this very different to what the chrome engineers have said ?
-
AutomatedTester
brrian: no, this is not going to be a lot of work, its just going to be well tested
-
AutomatedTester
drousso: one of the things that I would caution against. A lot of things have browser leakage and we need to make sure that browser impl info is not bled out
-
simonstewart
q?
-
» Zakim sees bwalderman, ato, CalebRouleau, JohnChen, simonstewart on the speaker queue
-
AutomatedTester
CalebRouleau: there are lot of issues, like site allocation, we need to make we are a level above that
-
AutomatedTester
ack bwalderman
-
» Zakim sees ato, CalebRouleau, JohnChen, simonstewart on the speaker queue
-
CalebRouleau
s/site allocation/site isolate/
-
AutomatedTester
bwalderman: we need to work top down from use cases like brrian suggested
-
AutomatedTester
... and it might be better to keep them separate from the debug protocols out there
-
CalebRouleau
q?
-
» Zakim sees ato, CalebRouleau, JohnChen, simonstewart on the speaker queue
-
brrian
q+
-
» Zakim sees ato, CalebRouleau, JohnChen, simonstewart, brrian on the speaker queue
-
AutomatedTester
AutomatedTester: are you suggesting 2 connections into the browser or that the shim would handle 2 and then do magic into the browser
-
AutomatedTester
bwalderman: it would be in the shim
-
AutomatedTester
AutomatedTester: good as there could be an attack vector into the browser if there are 2 and we need to be aware
-
AutomatedTester
jgraham: ok but we need to make sure that the connection can handle that
-
AutomatedTester
... and that the shaping of packets can handle it
-
AutomatedTester
... we have seen in gecko that there are cases where this doesnt work. We are constrained on what the low level remote protocols can handle.
-
AutomatedTester
bwalderman: I am not suggesting that we write from scratch
-
CalebRouleau
q?
-
» Zakim sees ato, CalebRouleau, JohnChen, simonstewart, brrian on the speaker queue
-
AutomatedTester
q?
-
» Zakim sees ato, CalebRouleau, JohnChen, simonstewart, brrian on the speaker queue
-
AutomatedTester
ack ato
-
» Zakim sees CalebRouleau, JohnChen, simonstewart, brrian on the speaker queue
-
AutomatedTester
ato: is it reasonable to have something that maps down to other protocol?
-
karl
-
karl
-
AutomatedTester
... we have seen multiple versions and there has been times to standardise
-
AutomatedTester
... we need to make sure we agree on what protocol actually means and transport layer actual means
-
AutomatedTester
q?
-
» Zakim sees CalebRouleau, JohnChen, simonstewart, brrian on the speaker queue
-
jgraham
ack CalebRouleau
-
» Zakim sees JohnChen, simonstewart, brrian on the speaker queue
-
jgraham
ack JohnJansen
-
» Zakim sees JohnChen, simonstewart, brrian on the speaker queue
-
AutomatedTester
CalebRouleau: the new devtools team are interested in standards
-
jgraham
ack JohnChen
-
» Zakim sees simonstewart, brrian on the speaker queue
-
jgraham
Zakim: close the queue
-
AutomatedTester
JohnChen: we have been experimenting with webdriver and upgrade to a bidi connection via CDP
-
jgraham
close the queue
-
» jugglinmike Boaz AutomatedTester this might be relevant for later this afternoon
w3c/webdriver #1440
-
simonstewart
q?
-
» Zakim sees simonstewart, brrian on the speaker queue
-
simonstewart
q-
-
» Zakim sees brrian on the speaker queue
-
AutomatedTester
brrian: as far as 2 protocols... for security... we have already 2 and they enter the stack at 2 different points.
-
AutomatedTester
... we have mechanisms to protect the user now
-
AutomatedTester
... [explains how a bad actor could attack]
-
karl
-
AutomatedTester
... and there are people writing a lot of adaptors for VSCode and they dont think that it is a lot of work
-
Hexcles
RRSAgent, make minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html Hexcles
-
AutomatedTester
LUNCH
-
jgraham
reopen the queue
-
-
» cb Hexcles the google doc is not public
-
» Hexcles fixing
-
Hexcles
-
» Hexcles cc ato & CalebRouleau ^
-
mmerrell
jgraham: change in the agenda
-
mmerrell
scribenick: mmerrell
-
mmerrell
jgraham: move the continuing discussion about bi-di to Friday morning
-
JohnJansen
-
mmerrell
jgraham: homework needs to be done, where Google team proposes beginnings of an outline for the bi-di protocol
-
mmerrell
CalebRouleau: it's not clear that we should start with load event--we should start with something else in order to satisfy the 3 other use cases
-
mmerrell
simonstewart: one clear thing is that we're going to re-hash bi-di on top of WD, which won't satisfy all needs
-
mmerrell
... need to put building blocks in place to move forward
-
simonstewart
present+
-
simonstewart
present+
-
mmerrell
CalebRouleau: to JohnChen: could you write up a proposal
-
simonstewart
present+
-
mmerrell
JohnChen: today, you can't do these use cases with WD, but you can do some amount of "loading"
-
mmerrell
simonstewart: agree with jgraham: this will allow the network proposal to move forward
-
mmerrell
CalebRouleau: maybe simonstewart can come up with the network proposal while Google team works with jgraham to work on a proposal for Loading
-
mmerrell
jgraham: the loading proposal will look like CDP without the target stuff
-
mmerrell
jgraham: "how do I address a loading context?"
-
mmerrell
jgraham: not everyone has to participate in the side meeting, but it should be open
-
mmerrell
jgraham: if we're not making progress on loading, we can address later
-
mmerrell
AutomatedTester: moving bi-di discussion to Friday morning. Agenda has been updated
-
mmerrell
AutomatedTester: need to start with custom selector strategies, then shadow DOM, then break, then ARIA driver, then the laundry list of other items on the list
-
mmerrell
AutomatedTester: (the non-contentious ones)
-
mmerrell
[general assent ensued]
-
jgraham
topic: Custom selector strategies
-
mmerrell
AutomatedTester: from cb: custom selectors
-
mmerrell
cb: objective is to help user of WD protocol to automate tests for new frameworks like React/Vue
-
mmerrell
cb: friction is that new frameworks are built on browser features that aren't mapped well to WebDriver element locators
-
mmerrell
cb: automation engineers are having trouble getting to some of these new kinds of elements. Protocol needs to be extended to help locate these kinds of elements
-
jgraham
q?
-
» Zakim sees brrian on the speaker queue
-
jgraham
ack brrian
-
» Zakim sees no one on the speaker queue
-
jgraham
q+
-
» Zakim sees jgraham on the speaker queue
-
mmerrell
cb: 2 proposals: drivers can share libraries of atoms. WDio can fetch elements by property name or by component property, taking advantage of shared components in new frameworks. Risk is that this creates organizational overhead for application teams
-
titusfortner
q+
-
» Zakim sees jgraham, titusfortner on the speaker queue
-
simonstewart
q+
-
» Zakim sees jgraham, titusfortner, simonstewart on the speaker queue
-
mmerrell
cb: other option is "custom selector strategy", allowing vendors to be able to intercept selectors and be smarter about actually locating the element. Advantage here is that there's no new work for this body. Downside is that implementations could be so different that there's more overhead for browser vendors, and behavior won't be standardized
-
mmerrell
... alternative is that users could register scripts that would collate and cache selectors and selector scripts to avoid unnecessary wire calls
-
ato
q
-
ato
q+
-
» Zakim sees jgraham, titusfortner, simonstewart, ato on the speaker queue
-
mmerrell
titusfortner: this would allow the driver to operate much more quickly. TestCafe allows location by component, not just CSS. Don't know about implementation, but we need to know if all browsers work the same wrt WDio?
-
mmerrell
cb: yes it does--the abstraction goes through the virtual DOM
-
AutomatedTester
q?
-
» Zakim sees jgraham, titusfortner, simonstewart, ato on the speaker queue
-
jgraham
ack jgraham
-
» Zakim sees titusfortner, simonstewart, ato on the speaker queue
-
titusfortner
q-
-
» Zakim sees simonstewart, ato on the speaker queue
-
diervo
present+
-
JohnJansen
rrsagent, make minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html JohnJansen
-
AutomatedTester
q?
-
» Zakim sees simonstewart, ato on the speaker queue
-
mmerrell
jgraham: bad idea to try to standardize on large chunks of JS atoms. it's not something that will be future-proof: web frameworks come and go, and standardized javascript ends up being brittle
-
mmerrell
jgraham: we should either double-down on vendor-specific extensions to the protocol, or register JS scripts (caching) to improve performance
-
simonstewart
q?
-
» Zakim sees simonstewart, ato on the speaker queue
-
mmerrell
titusfortner: this wouldn't be limited to just locators--it could be any javascript
-
mmerrell
cb: yes, it could be
-
AutomatedTester
q?
-
» Zakim sees simonstewart, ato on the speaker queue
-
mmerrell
ato: question: can you explain why this is needed?
-
mmerrell
... do you mean to register particular methods?
-
mmerrell
cb: yes
-
mmerrell
ato: these frameworks manipulate the DOM in a way that makes it difficult to just use CSS selector?
-
mmerrell
cb: yes--React developers write these components using more dynamic logic, and the QA engineer has trouble defining the locator
-
jgraham
ack simonstewart
-
» Zakim sees ato on the speaker queue
-
mmerrell
titusfortner: but it's not the QA eng we're concerned with. This is for developers
-
titusfortner
q+
-
» Zakim sees ato, titusfortner on the speaker queue
-
mmerrell
simonstewart: there's something here, about registering javascript snippets, which would return a handle. Use cases: good points about React and Vue, compiled and inflated, produced by the client and uploaded. New "friendly" locators in Selenium as well as Watir's JS atoms, all upload these snippets, which becomes chatty and expensive really quickly
-
drousso
q?
-
» Zakim sees ato, titusfortner on the speaker queue
-
drousso
q+
-
» Zakim sees ato, titusfortner, drousso on the speaker queue
-
mmerrell
simonstewart: you don't want to inject these scripts on every page load--we want to do this per-session. This would amount to an overloaded version of the JavascriptExecutor
-
mmerrell
simonstewart: the user-facing API would make it look like a selector, but underneath it's using the same handler, parameterized
-
mmerrell
simonstewart: this will end up being a client concern--not a WD spec concern
-
mmerrell
simonstewart: this will be hard to spec out
-
mmerrell
jgraham: it won't be that hard
-
AutomatedTester
ack ato
-
» Zakim sees titusfortner, drousso on the speaker queue
-
diervo
q?
-
» Zakim sees titusfortner, drousso on the speaker queue
-
mmerrell
ato: the latter proposal isn't too invasive--it makes sense to register scripts and allow devs to inject a JS library and re-use it per-session, but these solutions are so different that they address different problems
-
mmerrell
ato: the selector API needs to be locked down very tightly
-
jgraham
q+
-
» Zakim sees titusfortner, drousso, jgraham on the speaker queue
-
mmerrell
ato: you'd want a capability to pre-register a selector and identify them by a string (the key in a hash), passed in the body of a function... it would be a wrapper accepting one argument, which would return the locator
-
diervo
q+
-
» Zakim sees titusfortner, drousso, jgraham, diervo on the speaker queue
-
AutomatedTester
ack titusfortner
-
» Zakim sees drousso, jgraham, diervo on the speaker queue
-
cb
q+
-
» Zakim sees drousso, jgraham, diervo, cb on the speaker queue
-
mmerrell
titusfortner: is there a distinction between using a custom selector and pre-registering the scripts? how generic is the current mechanism?
-
mmerrell
titusfortner: should we have a generic "driver registration", and then have a component-based registry, all as part of the spec?
-
bwalderman
q+
-
» Zakim sees drousso, jgraham, diervo, cb, bwalderman on the speaker queue
-
mmerrell
simonstewart: if you have this registry for any of the javascript, you could use it for any of these use cases
-
mmerrell
titusfortner: would it make sense to explicitly make it generic?
-
mmerrell
simonstewart: you want the remote end to be able to have non-Javascript locators
-
mmerrell
simonstewart: Jason Arbon demonstrated an ML-based element locator that wasn't Javascript
-
mmerrell
simonstewart: but in most cases it will be JS
-
mmerrell
jgraham: we should pin this down to stuff that can be implemented in JS
-
mmerrell
simonstewart: yes, agreed
-
ato
q+
-
» Zakim sees drousso, jgraham, diervo, cb, bwalderman, ato on the speaker queue
-
» ato We should return to the queue
-
mmerrell
jgraham: we shouldn't allow scope creep, with all that's going on, to include non-JavaScript features into the "pinning" (registering) piece we're talking about
-
AutomatedTester
ack drousso
-
» Zakim sees jgraham, diervo, cb, bwalderman, ato on the speaker queue
-
simonstewart
q+
-
» Zakim sees jgraham, diervo, cb, bwalderman, ato, simonstewart on the speaker queue
-
jgraham
q-
-
» Zakim sees diervo, cb, bwalderman, ato, simonstewart on the speaker queue
-
JohnChen
q+
-
» Zakim sees diervo, cb, bwalderman, ato, simonstewart, JohnChen on the speaker queue
-
mmerrell
drousso: fundamentally, this isn't about pinning or caching--it's minimizing the chattiness of the comms
-
mmerrell
... this isn't fundamentally a concern of the WebDriver spec. This is about implementation, and adding this to the spec would add more questions and opens the door for complications
-
AutomatedTester
q?
-
» Zakim sees diervo, cb, bwalderman, ato, simonstewart, JohnChen on the speaker queue
-
mmerrell
q?
-
» Zakim sees diervo, cb, bwalderman, ato, simonstewart, JohnChen on the speaker queue
-
gsnedders
RRSAgent, make minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html gsnedders
-
AutomatedTester
ack diervo
-
» Zakim sees cb, bwalderman, ato, simonstewart, JohnChen on the speaker queue
-
mmerrell
diervo: we have a huge group of web components. From our POV, we shouldn't worry about the spec for locators, we should be able to register anything before the session
-
mmerrell
... having this ability would foster custom elements, and would allow for advanced traversal, etc.
-
mmerrell
... we would like syntactic sugar for being able to select things with custom commands
-
AutomatedTester
q?
-
» Zakim sees cb, bwalderman, ato, simonstewart, JohnChen on the speaker queue
-
jgraham
ack cb
-
» Zakim sees bwalderman, ato, simonstewart, JohnChen on the speaker queue
-
AutomatedTester
ack cb
-
mmerrell
simonstewart: this is, at its heart, JavaScript, though, right?
-
» Zakim sees bwalderman, ato, simonstewart, JohnChen on the speaker queue
-
mmerrell
diervo: yes
-
JohnJansen
present+
-
mmerrell
cb: this proposal fosters the sharing of code, even when items are embedded in the code and in different places. This would allow shareable atoms
-
mmerrell
drousso: but you can already do that--you don't need to change the spec in order to make this happen. You can code it elsewhere
-
ato
q?
-
» Zakim sees bwalderman, ato, simonstewart, JohnChen on the speaker queue
-
brrian
q+
-
» Zakim sees bwalderman, ato, simonstewart, JohnChen, brrian on the speaker queue
-
mmerrell
simonstewart: there's a difference between what browser developers need and what execution vendors need
-
CalebRouleau_
q+
-
» Zakim sees bwalderman, ato, simonstewart, JohnChen, brrian, CalebRouleau_ on the speaker queue
-
AutomatedTester
ack bwalderman
-
» Zakim sees ato, simonstewart, JohnChen, brrian, CalebRouleau_ on the speaker queue
-
mmerrell
[fast discussion about caching, sandboxing, bootstrapping ensues, from which no point arose]
-
» brrian :-P
-
mmerrell
bwalderman: if we're going to add this ability, we should also allow messages to pass between the client and the script
-
jgraham
ack ato
-
» Zakim sees simonstewart, JohnChen, brrian, CalebRouleau_ on the speaker queue
-
mmerrell
... it would be interesting to register these events. It would help users, but is a little outside the scope of custom selectors
-
mmerrell
... it's more in the scope of the bi-di discussion
-
cb
q+
-
» Zakim sees simonstewart, JohnChen, brrian, CalebRouleau_, cb on the speaker queue
-
mmerrell
ato: there's an alternative to consider--JS frameworks are sensitive to DOM modification [gives examples]
-
» jgraham notes that the new agenda has shadow dom starting in 4 minutes
-
mmerrell
... there's risk in registering these snippets to the global window. It could result in race conditions (?) and other issues with dynamic changing of page contents when multiple regions of the page are affected
-
titusfortner
q+
-
» Zakim sees simonstewart, JohnChen, brrian, CalebRouleau_, cb, titusfortner on the speaker queue
-
titusfortner
q-
-
» Zakim sees simonstewart, JohnChen, brrian, CalebRouleau_, cb on the speaker queue
-
mmerrell
jgraham: qq: the proposal was to dump text into a map, which you can then later pull it out... the proposal was not to have live JS scripts executing at will within the browser. This would present a large interaction/security risk. The intent is to optimize performance, not to enhance feature function or to execute scripts different than is currently done
-
titusfortner
q+
-
» Zakim sees simonstewart, JohnChen, brrian, CalebRouleau_, cb, titusfortner on the speaker queue
-
mmerrell
ato: not quite--the concern was about maintainability of these functions. The client should be able to pre-register a function, but the concern is that there will be a maintenance burden
-
mmerrell
ato: maybe the browser could be pre-loaded with a webdriver running?
-
AutomatedTester
q?
-
» Zakim sees simonstewart, JohnChen, brrian, CalebRouleau_, cb, titusfortner on the speaker queue
-
mmerrell
cb: if we could pin these JS snippets to the session, we could provide these features easily. SL customers would benefit from these features, both for performance purposes as well as test stability
-
mmerrell
ato: wouldn't it be better if the React devs owned the selector?
-
mmerrell
cb: that's not important--we just need to be able to support the feature?
-
mmerrell
ato: it's not future-proof--old versions of React won't work the same way as current ones, and that will be a continuing risk to any project implementing this
-
mmerrell
simonstewart: agreed
-
mmerrell
jgraham: we shouldn't be discussing SL product strategy here
-
ato
q?
-
» Zakim sees simonstewart, JohnChen, brrian, CalebRouleau_, cb, titusfortner on the speaker queue
-
mmerrell
simonstewart: but pinning a script still makes sense
-
ato
ack simonstewart
-
» Zakim sees JohnChen, brrian, CalebRouleau_, cb, titusfortner on the speaker queue
-
cb
q-
-
» Zakim sees JohnChen, brrian, CalebRouleau_, titusfortner on the speaker queue
-
mmerrell
simonstewart: it's a useful feature, which could be implemented in many ways... as a bootstrap script, this would alter the AUT, but it could also be put into the driver process, and that would allow better performance
-
mmerrell
simonstewart: you need 2 endpoints: upload and call
-
mmerrell
jgraham: we already have call
-
AutomatedTester
q?
-
» Zakim sees JohnChen, brrian, CalebRouleau_, titusfortner on the speaker queue
-
mmerrell
jgraham: call could be used for this
-
mmerrell
titusfortner: what's the downside of having another endpoint?
-
AutomatedTester
ack JohnChen
-
» Zakim sees brrian, CalebRouleau_, titusfortner on the speaker queue
-
JohnJansen
isn't this the proposal?
-
JohnJansen
-
mmerrell
simonstewart: we shouldn't need another endpoint--but anyway, we're arguing over how much it will cost, not whether or not we need it, so it sounds like we've made our decision
-
cb
q+
-
» Zakim sees brrian, CalebRouleau_, titusfortner, cb on the speaker queue
-
simonstewart
That proposal needs clearing up to talk about script pinning
-
mmerrell
JohnChen: this script will still need to be send to the app, no matter what. There might not be a real way, at least in chrome, to pin these scripts in a way that will be markedly improved wrt performance
-
mmerrell
JohnChen: the selector pinning strategy as proposed will be exceedingly difficult to implement due to how the already-huge chunks of JS are stored in Chrome
-
mmerrell
JohnChen: we can store these snippets, but it will be difficult, and it won't help that much
-
mmerrell
jgraham: this would supplant the existing JS around "findElement"
-
AutomatedTester
q?
-
» Zakim sees brrian, CalebRouleau_, titusfortner, cb on the speaker queue
-
mmerrell
JohnChen: not in every case. It varies depending on how many elements you're looking for, and where they're located in relation to each other. There's a way to do this, but we shouldn't try to merge this with existing findElement--we should offer a mechanism for uploading JS that would replace it
-
mmerrell
titusfortner: this might not need to be part of the spec
-
Hexcles
s/send to the app/sent to Chrome/
-
jgraham
ack brrian
-
» Zakim sees CalebRouleau_, titusfortner, cb on the speaker queue
-
mmerrell
brrian: if these atoms are used in testing, and used in the app, can't the app include a snippet that would "assist" with locating the element?
-
AutomatedTester
q?
-
» Zakim sees CalebRouleau_, titusfortner, cb on the speaker queue
-
mmerrell
simonstewart: quite often people minify their JS, which mangles the ability for the app to display the same element that is stored in the app
-
diervo
q?
-
» Zakim sees CalebRouleau_, titusfortner, cb on the speaker queue
-
mmerrell
simonstewart: testers are usually separate from the developers and have no influence there
-
mmerrell
simonstewart: testers can't have the locators changed to something more friendly
-
mmerrell
mmerrell: the wall between devs and testers is the norm, not the exception
-
AutomatedTester
scribenick: AutomatedTester
-
AutomatedTester
brrian: this is not going to make things faster
-
CalebRouleau_
q?
-
» Zakim sees CalebRouleau_, titusfortner, cb on the speaker queue
-
AutomatedTester
titusfortner: yes but this is for larger connections we are sending lots of data all the time
-
brrian
... from safaridriver onward (to devices, other apps, etc)
-
AutomatedTester
brrian: why are we caring about people perf, they should
-
ato
q?
-
» Zakim sees CalebRouleau_, titusfortner, cb on the speaker queue
-
ato
q+
-
» Zakim sees CalebRouleau_, titusfortner, cb, ato on the speaker queue
-
AutomatedTester
titusfortner: well a lot of people are doing things that are silly like they are sending 20 commands for finding 1 element
-
titusfortner
q-
-
» Zakim sees CalebRouleau_, cb, ato on the speaker queue
-
cb
q-
-
» Zakim sees CalebRouleau_, ato on the speaker queue
-
jgraham
ack CalebRouleau_
-
» Zakim sees ato on the speaker queue
-
AutomatedTester
ACTION: Saucelabs to write a propsal and send to the group
-
» RRSAgent records action 1
-
AutomatedTester
q?
-
» Zakim sees ato on the speaker queue
-
ato
q-
-
» Zakim sees no one on the speaker queue
-
ato
CalebRouleau: ++
-
AutomatedTester
Topic: ShadowDOM Support
-
» jgraham I think this would be easy to implement in geckodriver, but also a low priority, so if anyone wants to try their hand at submitting a patch this is probably a good one to try
-
» jgraham (the pinning thing, not shadowdom ;)
-
jgraham
q+
-
» Zakim sees jgraham on the speaker queue
-
AutomatedTester
-
ato
ScribeNick: ato
-
ato
AutomatedTester: We have discussed this before, briefly.
-
brrian
š
-
ato
... I had a proposal in a PR from before.
-
ato
... We need to think of a process, and happy to throw away this PR and start from scratch.
-
ato
... Shadow DOM has interesting problems.
-
ato
... We need to be able to interact with it, and there are two types of nodes.
-
» cb jgraham looking forward to dick into the geckodriver code
-
ato
... Sometime you can see into these nodes, and sometimes they operate as black boxes.
-
ato
... Frameworks like React are looking into using Shadow DOM, and we need to support this use case otherwise it will be hard to automate.
-
AutomatedTester
q?
-
» Zakim sees jgraham on the speaker queue
-
simonstewart
cb: use "/msg" to send a private message :)
-
ato
jgraham: You have a shadow host element, which conceals a shadow DOM.
-
ato
... If you want to go into the shadow DOM.
-
ato
... Two shadow DOM host elements: open and closed.
-
ato
... Theoretically with open elements the inner elements are exposed to JS.
-
ato
... You can polyfill this today with JS.
-
ato
... You can Execute Script on the DOM property that gives you the shadow root, and from there you have access to the tree below that to manipulate them further.
-
ato
... My proposal is that we hoist that into a WebDriver endpoint.
-
ato
... Should should also work for closed shadow DOM trees.
-
ato
... If you want to pierce the encapslation field for testing, that is possible to do from content.
-
ato
... DevTools allows you to pierce it.
-
ato
... "element/shadow" could return a shadow host for that element.
-
mmerrell
s/encapslation/encapsulation/
-
ato
... The alternative is for Find Element to take an extra parameter: but instead of returning the element, it would return the shadow DOM root inside that element.
-
ato
lukebjerring: Can I see the original proposal?
-
ato
jgraham: The original proposal worked like frames, that youād have to switch into the shadow DOM.
-
ato
jgraham: There are however a few things that work for frames that may not work for shadow DOM, so I donāt think itās entirely workable.
-
lukebjerring
q+
-
» Zakim sees jgraham, lukebjerring on the speaker queue
-
ato
AutomatedTester: When you want to click on something, you need to make sure youāre in the right space.
-
ato
... For example, inside the <video> element youād want the play button [element].
-
ato
diervo: At Salesforce we will soon have developers working on web components.
-
ato
... In Chrome and Safari it will throw when you click.
-
ato
jgraham: Why would you click on the shadow root element?
-
ato
diervo: You call a selector to find this, and people are sometimes confused.
-
diervo
rniwa
-
jgraham
present+ rniwa
-
ato
rniwa: Shadow DOM is a weird parallel tree.
-
ato
rniwa: It replaces the appearance of the shadow root element.
-
ato
rniwa: A click will pierce down to the right element inside the shadow DOM.
-
ato
rniwa: What will not work is elementFromPoint.
-
ato
rniwa: If you focus or click through the browserās normal event queue things iwll work.
-
AutomatedTester
q?
-
» Zakim sees jgraham, lukebjerring on the speaker queue
-
AutomatedTester
ack jgraham
-
» Zakim sees lukebjerring on the speaker queue
-
jgraham
ack jgraham
-
» Zakim sees lukebjerring on the speaker queue
-
AutomatedTester
ack lukebjerring
-
» Zakim sees no one on the speaker queue
-
ato
rniwa: What will not work is the JS primitives available to you as testing.
-
ato
s/as testing/for the test tools/
-
ato
lukebjerring: :next() selector on the shadow root is prone to bugs.
-
ato
... Does this proposal include prose on piercing the shadow DOM through CSS selectors?
-
ato
[?]
-
ato
... I.e. a parameter could define whether you want to pierce it.
-
lukebjerring
ack lukebjerring
-
» Zakim sees no one on the speaker queue
-
AutomatedTester
-
ato
rniwa: Historically there has been a proposal to have generic shadow-piercing combinators.
-
ato
rniwa: Every use of that was bad, especially for performance.
-
jgraham
q+
-
» Zakim sees jgraham on the speaker queue
-
ato
rniwa: We donāt want to have this, was rejected by Google.
-
ato
rniwa: But _specifically_ for WebDriver you could consider having this.
-
AutomatedTester
ack jgraham
-
» Zakim sees no one on the speaker queue
-
ato
rniwa: A :descendants() selector could potentially be made to pierce the tree, specifically for WebDriver.
-
ato
jgraham: Find Element From Element, where the root is the shadow DOM root element would be the easier option.
-
ato
jgraham: Implementing a new CSS selector is more work.
-
pmdartus
q+
-
» Zakim sees pmdartus on the speaker queue
-
ato
... There is utility to have WebDriver-only CSS selectors for use in e.g. Execute Script and CSS selectors, but we should take baby steps and do the thing that is easy to do today.
-
AutomatedTester
ack pmdartus
-
» Zakim sees no one on the speaker queue
-
ato
pmdartus: We are facing huge, nasty shadow trees. Can go to the depth of eight levels.
-
diervo
-
ato
... We have worked around this by using page objects.
-
ato
... You create abstraction that deals with the shadow DOM traversal for you.
-
ato
... This is more resilient than using a selector to one element within the shadow tree.
-
ato
... We see some value in the piercing shadow tree selector, but it wouldnāt be immediately applicable to us.
-
diervo
Here is out utility for shadow dom:
-
ato
Present+ gsnedders
-
diervo
-
ato
lukebjerring: What I mean is that it could be solved from the clientās perspective much easier without WebDriver primitives.
-
diervo
q+
-
» Zakim sees diervo on the speaker queue
-
AutomatedTester
q?
-
» Zakim sees diervo on the speaker queue
-
AutomatedTester
q+
-
» Zakim sees diervo, AutomatedTester on the speaker queue
-
ato
... If you had shadow-piercing CSS selectors you could write compound selectors in your client code using helper functions.
-
AutomatedTester
ack diervo
-
» Zakim sees AutomatedTester on the speaker queue
-
ato
... Whereas other proposal here actually requires traversal.
-
ato
diervo: We trying to force our test authors to do the right thing rather than crafting very complicated XPath selectors.
-
ato
lukebjerring: Polymer translates basically to web components.
-
ato
diervo: Historically people have relied on a lot of relativty in their element queries.
-
ato
... This is fragile as the document structure changes and the component hierarchy changes.
-
ato
... We need to strike the right balance if we introduce a selector because it can be misused.
-
AutomatedTester
ack AutomatedTester
-
» Zakim sees no one on the speaker queue
-
ato
rniwa: The shadow-piercing proposal in CSS 4 Selectors you can have a look at, but it forces you to define the boundaries of the shadow DOM.
-
ato
jgraham: They have something similar in the thing diervo posted.
-
ato
... The list of selectors thing is a thing we could implement in clients.
-
ato
... The fundamental primitive lacking from WebDriver, is, I have an element and select the shadow root of this element if it has one.
-
ato
... If there are more convenience APIs we can add in the future, then that is a second thing to build maybe later.
-
ato
diervo: Will this work for closed mode?
-
ato
ato: Yes.
-
ato
rniwa: Does the script WebDriver injects run in the same RIL as the page does?
-
ato
jgraham: If you can pass back a reference to an element inside the shadow DOM, then you can interact with it.
-
ato
... Because it all lives in the same JS realm.
-
ato
rniwa: WebKit has the ability to expose closed shadow DOMs are open.
-
ato
... We have the ability to make the closure route open [under certain circumstances].
-
ato
jgraham: The most straight approach would be for Find Element to return the shadow DOM root element if the found element is a shadow host element.
-
ato
diervo: That sounds like what we have done.
-
ato
jgraham: Potentially we have agreed here.
-
ato
s/straight approach/straight forward approach/
-
» ato RRSAgent, draft minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html ato
-
jgraham
resolution: create a "Get Element Shadow" endpoint that takes the handle for an element and returns a handle for the associated shadow root, if any, or null if not
-
» ato RRSAgent, draft minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html ato
-
ato
We will figure out the details later, but the intention is for the above to work on closed roots.
-
jgraham
s/shadow root/content-defined shadow root/
-
» ato RRSAgent, please draft the minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html ato
-
AutomatedTester
-
spectranaut
present +
-
spectranaut
present+
-
JohnJansen
present+
-
spectranaut
-
zcorpan
present+
-
boaz
present+
-
ato
Topic: ARIA & WebDriver
-
ato
-
titusfortner
present+
-
ato
zcorpan: Hi, Iām Simon.
-
ato
zcorpan: Promoting accessibility with incentivisng web authors with tools.
-
ato
... The idea behind this comes from jugglinmike.
-
ato
... ARIA and WebDriver are similar because they both aim enable [?] machines.
-
ato
... With WebDriver you have a script that interacts with the webpage.
-
ato
... When you use WebDriver you typically work with HTML directly, you get an element by their class name or ID or name.
-
ato
... Whereas with a screen reader they work with an accessibility tree which is influenced by ARIA information from the DOM.
-
ato
... There is an opportunity to have the same code path for both assisted technology interaction as for WebDriver.
-
ato
... Thereās also an idea about assuming semantics that are required or recommended in the ARIA practices guidelines to simplify testing.
-
ato
... Specifically testing accessible applications.
-
ato
... ARIA Practices Guidelines is a document that non-normatively recommends how to use ARIA.
-
ato
... Design patterns and such.
-
ato
... "How to make a modal dialogue?"
-
ato
... "How to do a button?"
-
ato
... For example it recommends specific keyboard interactions.
-
ato
... Tab key should move focus, Escape should close the dialogue.
-
ato
... The developer has to implement this with JS to be follow these guidelines.
-
ato
spectranaut: Less test code, improved test stability, �
-
ato
... [role="radio"] is ARIA defined role.
-
ato
... accessibleName() does a difficult thing.
-
ato
... Instead of these complicated code patterns, weād like to see this built into WebDriver.
-
ato
... webdriver.setRadio("Thin crust")
-
ato
... Improved test stability: finding elementās that have ARIA popups could cause synchronisation issues with elements not being found.
-
ato
... Weād like to encapsulate these ARIA checks/patterns with a command.
-
ato
... For example webdriver.OpenPopup().
-
ato
... This would ensure for sure that the popups are there by running the checks internally.
-
ato
... Improved test resiliency: tests become brittle when they rely only on CSS selectors.
-
ato
... Page objects is one mitigation, but this is just another way ot mitigating brittle test writing by relying on the accessibility API.
-
ato
... Testing against the accessibility tree gives more stable tests over time.
-
ato
... Accessibility verified: we can add to these commands accessibility verification.
-
ato
... People donāt have to know ARIA to get the benefit of these.
-
ato
... For example, on a toggle button the text on the button shouldnāt change when it becomes depressed.
-
ato
... We could built this check into the WebDriver extension and have WebDriver return an error when the ARIA verification check fails.
-
ato
zcorpan: jugglinmike has done an implementation of this, with API documentation you can read.
-
ato
... I want to quickly step through the specification that jugglinmike wrote.
-
zcorpan
-
ato
... This is a new WebDriver command that gets the role of the element and computes it as is specified by the relevant specs.
-
ato
... Could be another extension to WebDriver to get the precomputed role from the browser, but this is not part of this specification.
-
ato
... If the role is not a button, it will fail. This is a type check.
-
ato
... It then gets the accessible name of the element and we return an error if the string is empty because all buttons in ARIA must have strings.
-
ato
s/have strings/non-empty strings/
-
ato
... If itās a toggle button, it verifies that the state changed after pressing it.
-
ato
... It then tries to āuseā the button.
-
ato
... This is a new term that depends on the interaction mode that the tester has.
-
ato
... Mouse, keyboard, touch mode.
-
ato
... Different code paths when you use the button.
-
ato
... It then compare the old state value with the new one.
-
ato
... The accessible name should not change as the result of using a button, and it returns an error if it has.
-
ato
... Then if everything went fine, weāre done.
-
ato
spectranaut: Some points of discussion we have are listed.
-
ato
... The stale element reference could happen inside the algorithm to use the button, and we donāt know how to solve this,.
-
ato
... We have some concerns about the ARIA recommendation spec stability.
-
ato
... Is this something that belongs in WebDriver?
-
AutomatedTester
q?
-
» Zakim sees no one on the speaker queue
-
» ato RRSAgent, make minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html ato
-
ato
simonstewart: Is there a normative spec?
-
ato
spectranaut: Not exactly
-
ato
... They are non-normative suggestions for how to make an accessible website.
-
ato
q?
-
» Zakim sees no one on the speaker queue
-
ato
AutomatedTester: This should not live in the WebDriver specification, because it is more about low-level tasks.
-
ato
... Here many things can happen along the way.
-
ato
zcorpan: I agree APG stuff should probably not be in the core WebDriver spec.
-
ato
q+
-
» Zakim sees ato on the speaker queue
-
ato
... The exposing of the accessible name and the exposure of the computed role is something could be in the core WebDriver spec.
-
AutomatedTester
q?
-
» Zakim sees ato on the speaker queue
-
ato
... Computation of the accessible name etc. is normatively specified.
-
titusfortner
q+
-
» Zakim sees ato, titusfortner on the speaker queue
-
ato
simonstewart: If there's a normative source for it, that would be the logical place to put the WebDriver extension for it.
-
jcraig
Q+
-
» Zakim sees ato, titusfortner, jcraig on the speaker queue
-
MikeSmith
q?
-
» Zakim sees ato, titusfortner, jcraig on the speaker queue
-
AutomatedTester
ack ato
-
» Zakim sees titusfortner, jcraig on the speaker queue
-
AutomatedTester
scribenick: automatedtester
-
AutomatedTester
ato: there is a similar impl. in Firefox webdriver. You can set a capability and then get a bunch of a11y checks using the a11y tree
-
» cb I really like these additional a11y checks and will make sure to implement it in Webdriver.io
-
AutomatedTester
q?
-
» Zakim sees titusfortner, jcraig on the speaker queue
-
jcraig
Q+ to mention label should not be tied to the accname spec. These are primitives that differ per implementation.
-
» Zakim sees titusfortner, jcraig on the speaker queue
-
ato
ScibreNick: ato
-
AutomatedTester
ack titusfortner
-
» Zakim sees jcraig on the speaker queue
-
ato
ScribeNick: ato
-
ato
ato: I think this is a good idea.
-
ato
titusfortner: What is ARIA? Where are the roles stored?
-
ato
... In Watir weāve done some work to make it possible to retrieve ARIA elements.
-
ato
... Or by ARIA selectors.
-
ato
zcorpan: Accessible Name and Description Computation 1.2 looks at some of the attributes, but also looks at some of the existing attributes of elements, for example <img alt="whatever">.
-
AutomatedTester
q?
-
» Zakim sees jcraig on the speaker queue
-
ato
ato: These are heuristics for assisted technology, right?
-
ato
zcorpan: Yes, except the ARIA roles are normatively defined.
-
ato
jcraig: ARIA practices guide is non-normative best practices.
-
ato
... The ARIA spec is normative and defines roles, maps to accessibility technologies on the platform.
-
ato
... Accessible names spec is normative and exposes the heuristics of finding the right elements according to roles.
-
AutomatedTester
ack jcraig
-
Zakim
jcraig, you wanted to mention label should not be tied to the accname spec. These are primitives that differ per implementation.
-
jcraig
Ack me
-
» Zakim sees no one on the speaker queue
-
» Zakim sees no one on the speaker queue
-
AutomatedTester
q+
-
» Zakim sees AutomatedTester on the speaker queue
-
ato
... The accessibility roles are implemented by the web browsers, and through adding this to WebDriver we could also check the browsers against themselves.
-
ato
ato: Is ARIA tested in WPT?
-
MikeSmith
-
ato
jcraig: Not currently to my knowledge, because it doesnāt have hooks for each browserās accessibility engine.
-
boaz
titusfortner: can you link to water?
-
titusfortner
-
ato
jcraig: [something about hooking into the system level accessibility API]
-
titusfortner
-
ato
simonstewart: If you set the preferred input device in WebDriver, it would be great if the high-level APIs in WebDriver would use that.
-
ato
... WebDriver Element Click signals an intent that, say, a button would prefer this input method.
-
simonstewart
present+
-
ato
AutomatedTester: It would need to be opt-in, through a flag or capability.
-
ato
... The default should be off.
-
ato
zcorpan: I understand the concern that we donāt want to break existing tests.
-
ato
q+
-
» Zakim sees AutomatedTester, ato on the speaker queue
-
ato
ack AutomatedTester
-
» Zakim sees ato on the speaker queue
-
simonstewart
q?
-
» Zakim sees ato on the speaker queue
-
AutomatedTester
ack ato
-
» Zakim sees no one on the speaker queue
-
cb
ato: in geckodriver the user has to opt in
-
ato
ato: It seems the question should be if the ARIA checks should be tied to Element Click/Element Send Keys, or if they should be separate ARIA-specific commands.
-
ato
ato: simonstewart wanted the formed, and this is how it currently works with the accessibility checks in geckodriver.
-
ato
ato: But Iām on the fence.
-
jcraig
s/[something about hooking into the system level accessibility API]/best ideas from the preso are the primitives: label & role #1439 and the āgetter by labelā #1441/
-
ato
[Technical discussion about how the extension should be done.]
-
ato
simonstewart: I would like this to live in ARIA, but Iām not sure if WebDriver should explicitly call that.
-
ato
AutomatedTester: What would be the performance hit of having the accessibility tree turned on?
-
ato
jcraig: Itās non-zero. Sometimes significant.
-
ato
zcorpan: Users pay if they use a screen reader.
-
ato
... It seems a reasonable cost if youāre testing accessibility.
-
JohnJansen
q?
-
» Zakim sees no one on the speaker queue
-
» ato boaz I didnāt get that
-
jcraig
Q+ to discuss the more complex issues with APG-based testing
-
» Zakim sees jcraig on the speaker queue
-
ato
AutomatedTester: We could use Firefox as an example here and document what it does.
-
JohnJansen
q+
-
» Zakim sees jcraig, JohnJansen on the speaker queue
-
jgraham
ack JohnJansen
-
» Zakim sees jcraig on the speaker queue
-
ato
JohnJansen: How is the Firefox implementation different from the PR that is presented?
-
ato
[Some discussion about how Firefox works.]
-
ato
ato: I donāt think we should base this off the Firefox implementation. I was just saying that there is presedence for building accessibility checks into WebDriver primitives.
-
jgraham
ack
-
jcraig
Ack me
-
Zakim
jcraig, you wanted to discuss the more complex issues with APG-based testing
-
zcorpan
q?
-
» Zakim sees no one on the speaker queue
-
» Zakim sees no one on the speaker queue
-
ato
jcraig: ARIA can affect what the label is, as can the label attribute in HTML, but itās not specifically tied to ARIA.
-
AutomatedTester
-
ato
... There may be some way to write a library that can have some assumption about what roles are activated.
-
ato
... But you quickly get in to complicated trees.
-
» ato sorry, I didnāt get most of that.
-
ato
jgraham: Some of the other stuff weāre discussing today is fundamental architecture work that is quite important to people.
-
ato
... In terms of resourcing Iām not sure if this is going to be our top priority.
-
boaz
-
boaz
-
ato
brrian: Iām curious about the performance penalty?
-
ato
jcraig: It should probably be opt-in as there is some initial cost to spinning up the accessibility tree.
-
ato
... I donāt think the implementation is much, but there will be performance cost at runtime. For this reason it should be opt-in.
-
ato
jgraham: Does anybody feel like theyāre writing the spec text for this?
-
ato
jcraig: I can commit to advising.
-
ato
AutomatedTester: I donāt think itās going to be that much.
-
ato
... So I can commit to working with jcraig.
-
ato
JohnJansen: Iām not against it at all.
-
ato
AutomatedTester: Iām happy to get a PR and tests up.
-
ato
jcraig: Are people optimistic about the second issue I filed?
-
ato
jcraig: Get element by its label?
-
ato
jgraham: I have a DOM tree, how do I tell what the accessible name is? Do I have to turn on the accessible tree?
-
ato
jcraig: I believe each implementation has a reverse implementation from accessibility node back to the element.
-
ato
jgraham: Is there a DOM API that is "get accessible name for node"?
-
ato
jcraig: For example, if a cell is not contained inside a row then we donāt expose it as a valid cell.
-
ato
zcorpan: On the question, is the information in the DOM enough?
-
ato
... The answer is no.
-
ato
... It includes CSS generated content and shadow DOM.
-
ato
... You want the flat tree + CSS generated content.
-
ato
... This makes out the accessibility tree.
-
ato
... The accessibility tree is the same as the render tree, but for spoken output.
-
ato
... The render tree is for the visual output.
-
» ato zcorpan: Good clarification!
-
ato
[Discussion about how ARIA works.]
-
ato
q?
-
» Zakim sees no one on the speaker queue
-
» ato RRSAgent, make minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html ato
-
ato
Topic: Get Element Text
-
ato
simonstewart: We use an atom because there was at the time no interoperable implementation of getInnerText().
-
ato
... We agreed in the past that we should move to use the platform API when all the browsers supported it.
-
ato
... And now they do.
-
ato
jgraham: There was agreement in the past that we should do this, but behind a capability.
-
ato
... Now is the time to do it.
-
ato
RESOLUTION: We should add capability to opt in to the platform getInnerText() for Get Element Text
-
ato
Topic: Maximum timeout to set over 1 minute
-
ato
Topic: Text input spec modification
-
JohnJansen
-
ato
JohnJansen: Itās a bug.
-
ato
JohnJansen: We missed the case that youāve already selected an element. The spec says you should always start at the end of the text.
-
ato
simonstewart: Send Keys always resets the caret to the end of the text field.
-
ato
JohnJansen: Firefox implements this the way I expect, but which is in violation of the spec.
-
ato
... I think everyone agreed this was an oversight.
-
» jgraham re: timeout the longet timeout you can pass to setTimeout is 2**31 - 1
-
» ato that sounds reasonable, because itās the JSON max allowed number?
-
ato
RESOLUTION: The caret in Element Send Keys should move on calling the command again
-
ato
Topic: Adding the step to handle user prompts for screenshots
-
simonstewart
Scribe: sstewart
-
simonstewart
scribe: simonstewart
-
ato
ScribeNick: simonstewart
-
AutomatedTester
scribenick: simonstewart
-
simonstewart
ato: do the js dialog prompts stop you from taking the screenshots?
-
simonstewart
ato: why do we want them to go away?
-
simonstewart
jgraham: implementations may not be able to take a screenshot if an alert is displayed
-
simonstewart
ACTION: AutomatedTester to approve PR
-
» RRSAgent records action 2
-
simonstewart
CalebRouleau: wonders if alerts should block js at all
-
simonstewart
nerdery about specs follows
-
simonstewart
Topic: Clarify handling of unrecognised extension capabilities
-
simonstewart
JohnChen: should we accept or reject unrecognised extension capabilities
-
simonstewart
jgraham: two cases. All capabilities have a prefix. geckodriver might understand "moz:" but there might be something that means "moz:foo" isn't recognised
-
simonstewart
ato: capabilities used to pass in config to end point nodes. Also to provide additional configuration to intermediary nodes
-
simonstewart
ato: should intermediary nodes prune capabilities?
-
simonstewart
simonstewart: I had a spec change ready to allow intermediary nodes to delete capabilities as needed
-
simonstewart
JohnChen: there's one WPT test that expects the unrecognised capability should be rejected
-
simonstewart
ato: looks up the test and all browsers fail it
-
ato
-
simonstewart
jgraham: explains how geckodriver works, and claims this is the desired spec behaviour
-
simonstewart
jgraham: browser ignores capabilities that start with a prefix that's not specific to the browser, it's ignored. If there's a capability with a (eg) "moz:" prefix that's not recognised, the session fails
-
simonstewart
jgraham: the spec is currently in a degenerate state
-
simonstewart
jgraham: if any capability with that prefix is accepted by the driver, but the capability is unknown to the driver, an error should be thrown. Otherwise the extension capability should be accepted
-
simonstewart
ato: does this mean we need to look at all capabilities
-
simonstewart
jgraham: yes. You can't just pull out "known things"
-
simonstewart
ato: normally we ignore additional data in payloads
-
simonstewart
jgraham: explicitly not with capabilities
-
simonstewart
jgraham: suggests what he's suggested before as a change to the spec
-
simonstewart
ato: is that needed?
-
simonstewart
jgraham: the reason for this proposed handling is that if someone passes in something with a typo, they fail fast.
-
simonstewart
lukebjerring: but they could typo the prefix
-
simonstewart
jgraham: but this makes it easier to handle capabilities uniformly
-
simonstewart
JohnChen: for chrome there are some extensions that use "goog:" but aren't actually chrome extensions --- they're ones from other parts of google
-
simonstewart
JohnChen: Maybe we should have used the "chrome" prefix
-
simonstewart
jgraham: if the point is that chromedriver is never throwing an error, then this change would be a breaking change for them
-
simonstewart
ato: I ran into a bug the other week
-
simonstewart
ato: to do with chromedriver extension capabilities. We stored the data in geckodriver, and it was waaay too large
-
simonstewart
ato: selenium clients send massive blobs all the time, since they do double locations (the protocol handshake with the old protocol)
-
simonstewart
lukebjerring: I'd argue there's not a clear benefit
-
simonstewart
jgraham: the other reason is to do with the matching. The spec spelled out what was allowed.
-
simonstewart
simonstewart: explains original behaviour and reasoning behind it
-
simonstewart
simonstewart: suggests end nodes abandon session creation on any unrecognised capability, and intermediary nodes to strip capabilities that are specific to the intermediary
-
simonstewart
jgraham: wonders aloud whether end nodes are getting capabilities that they don't recognise
-
simonstewart
JohnChen: we might get some resistance from the internal test team
-
simonstewart
CalebRouleau: "extension capabilities are a free for all, and we should accept that"
-
simonstewart
lukebjerring: is there a need to reject unrecognised extension capabilities
-
simonstewart
jgraham: yes. eg. different browser versions that support different capability names
-
simonstewart
ato: it seems like what we're agreeing to is to accept jgraham's proposal?
-
simonstewart
jgraham: no. If there's a colon in the name and you don't recognise the name, we accept that capability
-
simonstewart
jgraham: compares chrome's lax approach with gecko's stricter approach
-
simonstewart
CalebRouleau: attempts to use the word SHOULD
-
simonstewart
ato: it MUST NOT have the word SHOULD
-
simonstewart
lukebjerring: the existing test doesn't highlight the difference in behaviour between chrome and firefox
-
simonstewart
simonstewart: we could just grab the "example" extension capability for ourselves
-
simonstewart
simonstewart: so we're back to the original desired capabilities pattern?
-
simonstewart
jgraham: yes
-
jgraham
resolution: For extension capabilites that are unknown to the implementation the result of validating capabilities must always be to accept the capability i.e. unknown extension capabilities never cause matching to fail irrespective of whether the extension prefix is known to the implementation
-
jgraham
action: (someone) to update the tests to include moz:foo goog:foo etc. and ensure that matching doesn't fail
-
» RRSAgent records action 3
-
jgraham
RRSAgent: make minutes
-
RRSAgent
I have made the request to generate
w3.org/2019/09/19-webdriver-minutes.html jgraham
-
jgraham
RRSAgent: done
-
RRSAgent
I'm logging. I don't understand 'done', jgraham. Try /msg RRSAgent help
-
jgraham
RRSAgent: stop logging
-
RRSAgent
I'm logging. I don't understand 'stop logging', jgraham. Try /msg RRSAgent help
-
jgraham
RRSAgent: stop
-
» RRSAgent is not logging
-
jgraham
q?
-
» Zakim sees no one on the speaker queue
-
jgraham
Zakim: close the queue
-
» Zakim excuses himself; his presence no longer seems to be needed
-
» RRSAgent excuses himself; his presence no longer seems to be needed