 So, welcome to the Fishbowl Q&A. It's going to be super, super simple. You're going to ask us questions. We are going to repeat the question so that people watching on the camera can answer it, can know what it is. Yeah, if they answer it, that would be great. And then we're going to have a go at answering it. We may or may not give you answers that you like, but we are going to try. But before we do that, maybe it would be a good idea to introduce the people who are here on the stage. And I'll begin with myself. I am Simon Stewart. I'm the lead of the Selenium project and the creator of WebDriver. And I work as a software engineer at Facebook. And I am Jim Evans. I work at Salesforce.com, and I am the owner of the .NET Language Bindings and the Internet Explorer Driver. Yeah, my name is Andreas Tolfson, and I'm an S8TO on the RSC channel. I'm starting to accumulate quite a bit of history with this Selenium project. I started out in 2009, actually, when I wrote the original Opera Driver, whilst I was working with Opera. Since then, I've moved on, and I'm now working for Mozilla. So I'm kept working on Drivers. There seems to be a pattern here. And now I'm working on a tool called Marinette, which is something we may have heard of, which is supposed to become the replacement for Firefox Driver, which is also going to be working, which is also going to work on devices. So, yeah, that's part of what I'm doing at Mozilla. Hello, my name is Dima Kovalenko. I work at Groupon. I am the one who tends to ask the silliest questions in the RSC, and then whenever Simon gives me a sarcastic answer, I have to go and find the answer myself. That way I can give a more polite answer to whoever else has the same question as me. And I'm Julian Harty, and I've probably been on the project for the longest time and written the least code. I have the honor of having most of my code deprecated. We'll delete it soon. Oh, and deleted, yes. But yet I'm still here. So I think we're ready for the first question from the floor. There's a microphone there, so just raise your hand, if you have a microphone to you. There's a gentleman there in the front. Why don't you shout out and I'll just repeat your question. I know in India, if you look at the market specifically for WebDriver is growing rapidly than what we anticipated. So interestingly, we would hopefully have more participants to work with you to make the WebDriver 3 and 4 accelerated. That would be one of our vision, the goal. I also wanted to ask a very question because we are mostly customer driven market in India and the customers are driving us to use WebDriver more and more. But certainly we see the releases obviously in a kind of flows not in the way we want it to be. Is there an opportunity we make it? I understand it's a open source so I cannot ask more. But certainly is there an opportunity to make the releases a little more supportive so that we can deliver more to our customers? So can I just ask when you say supported do you mean like a regular release schedule? Regular release with the futures. I understand you promised in 3.0 last year, right? I went on to promise to our customers what's coming and we are anticipating more. So is there a kind of promise that we can work with to deliver? Okay, so it's an interesting question, right? Because as a user facing project, the APIs that Selenium has offered have been remarkably stable since 2011, right? As we move forward to 3.0, the only change we're going to see is the removal of the deprecated Selenium RC APIs, the WebDriver APIs are going to remain. And when we move forward to 4.0 those same APIs are going to remain in place as well. So customer facing really our release schedule doesn't matter too much because the APIs that people are using are fairly solid, fairly immovable and the changes we make tend to be additive in that we tend to add methods rather than remove them at this point. Having said that, it would be really nice if we had enough organization to be able to like go wow, something got really bright in there. It would be really nice if we were organized enough to go like oh yeah, we're definitely going to release on the 3rd of December version 3.0. It's not the 3rd of December. It will now be the 3rd of December, right? That's how these things work. After categorically saying it definitely won't happen, that is what will happen. So yeah, and the story to give to users and customers is one of stability and continuity. On the back end there's going to be a certain amount of hard work that we're going to invest in making sure that the migration from 2 to 3 is relatively smooth and from 3 to 4 is as smooth as possible as well, which is why we're going to have the last releases of 3 be backward and forward compatible so that you can do a slow stage migration rather than coming in one day doing an update and going like the entire world seems to have broken which is something we definitely don't want to happen, right? So in fact people make this huge investment and that having stability and reliability is super important. So that's the message I would give to the customers. Is there anything else that anyone else wanted to add? So I think I mean with also pushing the driver implementations over to the side of the browser vendors we're also going to I think see an increase in stability that way because currently for example in the current Selenium version I think many of you might know but Firefox is broken, right? With the release of Firefox 32 and that's been a continuous problem ever every time that Firefox is making a release the Selenium project with its volunteers need to sort of stand on standby to do a new release and you compile and shifting that responsibility over to us, to Mozilla as their responsibility of maintaining the driver part which sits underneath web driver I think it's also going to sort of help that stability. Things are suddenly going to start breaking if you do a sudo upgrade on your Linux box for example. Oh, yes. Introduce yourself, Sandy. Introduce myself. My name is Santiago Suarez-Arzones. I've been a committer to the project for a while now and by now I don't really know what my contribution is I'm definitely helping with the continuous integration. We are mainly from my source labs role I am in charge of maintaining the browser options that the Selenium project has available to their continuous integration so things like the latest Firefox being available for the Selenium project to test on is crucial and we are in charge of helping out with that so that's it. Hi. Here. I am small. My question is I am Mahesh. First I will introduce myself. My question is why web driver opens new tab link in new window? Why does it open a new window? Yes. The links which are open in new tab Instead of a new tab, why does it open a new window? Why it is in new window? Perfectly valid question. You have to remember that originally when the web driver project started new tabs within the same browser window top level frame pretty much didn't exist you would always get a new window and the other important thing to remember is that from the point of view of the application being automated there is no difference between a new tab and a new top level window. It's a new top level browsing context in the words of the worldwide web consortium spec language. It's a new top level browsing context. The only difference that it makes is aesthetically as you're watching the test run and I'm not sure that I would care that much about that as long as I'm testing the functionality really is what I would care about. The reason why it doesn't in Firefox driver is because I couldn't figure out how to switch to a different tab when they introduced tabs and so I made it open a new window. If someone wants to send me a patch to make it less lame I'd really really appreciate that. I might even give you a hug. Yeah, thank you. This is why I ask this question is you have the we have the option to open the context click from context click to open a new tab, right? So once I tried with a new tab but I was not able to switch to new tab so that's why I ask this question. Thank you. To add to that question though is it even possible in Firefox and Chrome to open up a new tab within the same process and have the new tab open up with a new profile or exactly. Part of the reason it would open up a new window is if you tried to run two tests at the same time the browser wouldn't have its own profile and you cannot do that in two tabs. Yeah. That's also because there are two different browser sessions in place but the reason we can't really talk about the concept of a tab in Selenium is because the web as such doesn't really have a concept of a tab and you also have the complexity of mobile browsers or Kiosk browsers which in some cases don't even have tabs or they might have tabs like tabs in a different form than we used to on the desktop. My question is as a representative of this community what are the most common questions people ask you and do you have any answers in the recent future for example one question that I've been asked a lot about the drawback of Selenium they say oh it's slow because every request is a different HTTP request and I can piggyback to bulk it together so do you have any things that in the last year a lot of requests from the community for something specific? Okay so I mean jocularly HTTP status codes not gonna happen is a huge long thread in the bug tracker and several blog entries by numerous committers more seriously the question I get fairly frequently and it happened earlier today I'm using implicit timeouts and I'm writing library code and I want to set the implicit timeout to some value and then I want to restore it when you leave my code and my answer to that is like well I'm not gonna give you a mechanism for getting hold of a timeout it's something in a particular way and they pass it to you it's a little bit rude to just tinker with it and not use it the way it's meant to be used and so like resetting those timeouts is something that I don't think is a great idea the other thing as well is that the project as a whole is like we added implicit timeouts because people aren't aware of like where page transitions are or where they're expecting JavaScript to be executing but testers who are more familiar with their application should be using explicit timeouts like implicit timeouts are there as a mechanism to get you over a hump and get you started they're not there as a crutch to lean upon as a future change we are doing a new actions API which tends to be the most verbose when it comes to the interactions with the browser and the actions API which was suggested by Mozilla actually batches together a series of interactions that need to be performed and then sends them over the wire in one lump it's quite hard to do that in a meaningful way with other commands because you need to be able to go like well this is the command it failed on and people read stack traces and the stack trace that comes like five lines too late is no use to anyone I'm sure the guys going down the line probably have their favorite questions and their favorite forthcoming feature seems like I get asked an awful lot about status codes is one and one that I routinely tear my hair out about you can see how much it's affected me over the years javascript errors being able to capture javascript errors on a page is a feature that I get asked about a lot that's one I think we would hope that we would want to encapsulate I think we punted on logging and error handling for the first cut of the spec but I think that level two we might take a crack at that speaking for the .NET bindings the .NET bindings don't implement any of the logging things that any of the logging APIs that say Java does and I get a fair number of requests for that and the reason that they don't have them and the reason that the IE driver doesn't implement any of the things that some of the other drivers do in terms of being able to get logs is because they haven't been defined by the spec yet and I don't want to code to a moving target so I mean personally I don't think that the HTTP that we have on top necessarily makes it that slow I don't think that's the bottleneck here the reason we wanted to like Simon said batch the new advanced interactions API is primarily because the new world is devices so you have to imagine that these devices are often running with quite slow CPUs and we have to and that's also by the reason for Firefox OS that we've chosen to call in the backend so actually it's not speaking HTTP directly to the phone and we're doing some similar tweaks for some of the other devices it seems to be that at least once a week somebody will jump into the IRC channel or send an email to the dev list asking for a way to loop through an ID pre-recorded test or do if statements and you ask that question tend to not like the answer of well maybe you should just rewrite it in Ruby or Java write it in the real language and so they then proceed to implement a hack to make a loop that is three times more complicated than Java or Ruby could have ever been so I think that's the top of the line for me and for me it's probably on the mobile side of it I work mainly in mobile so people trying to understand how they can do a lot of visibility into what happens when a problem comes up a very very common question is why did my page not load or why is this element not pressing when I wait it to be and all these timing issues can really get nailed down when you actually get the full network dump of the session and yes they will get you HTTP status codes as well so Selenium is going to support HTTP status codes yes the login API for performance, javascript for errors and networking to me is one of the biggest wins writing Selenium tasks is somewhat easy debugging them when they break is really really hard and this will give us a visibility that we need Anurag my question is around browser coverage so as an automation engineer if I am running my suit only on Firefox and say not on I all the flavors of I then am I missing any possible issue which a customer may ah that wasn't the question was it the question was how can I be confident that the application un-launching will work with my customers I think yes and running it running the suit on all the covering all the browsers and their different versions is also a problem so how can I optimize that yeah so I'm a huge fan of just looking at data so I've got a certain amount of time I've got a certain number of resources that I can spend on doing my automated testing I'd probably take a look at the distribution of browser usages there's probably like IE Chrome and Firefox near the top so running in the latest version of those three will give you good coverage at that point it's worth taking a look at the bugs that are coming in and seeing whether there's a particular browser where people are seeing more issues like maybe it's IE7 because it's an antiquated browser and it's well out of it's just ancient now with IE11 being out and so you take a look at the data and you go like well if I do these three and IE7 then that will give me sufficient coverage that I'm confident that the application is working now you could use a service such as source labs or something like that to run every single test on every single variant of every single browser but that would be a waste of your time it would be a waste of money it would be a waste of resources so you've just got to get yourself to that point where the data says you're covering the percentage of your users that you're comfortable with covering and the expectation being that the browsers you're not covering the ones are going to be sufficiently similar to the other browsers that you are using that everything's going to be okay does anyone have anything to add one more thing is to look at your own server logs because the real world might have 12% IE5 users or whatever it is IE7 users but your world may be different maybe you're working for the engine train company or the visa company who seem to like IE8 for instance I speak from experience so in your case look at your server logs and you'll start to build up patterns no one goes to the order complete using IE8 maybe that's something to look at where as you see that page is being hit by all the other browsers successfully hello my name is Hari Krishna so my question is does WebDriver implemented on Java code has any enmity with .NET applications because I'm sure many of them the common issue that we observe normally is whenever some click doesn't work say they just say okay use some JavaScript executor so is there any particular bug or something related to click where in actually clicking a button doesn't work and we have to go for a JavaScript executor in the code I'm sorry adding so yeah generally most of the cases many of times I observed that when I actually try to use some click operation on a button and it doesn't work so what I go is I use a JavaScript executor code in my code actually I use a JavaScript executor command I'm sure like I know many of us so let me make sure I kind of understood the question you're asking about when using WebElement.click right and it doesn't work correct and so a lot of people resort to using the JavaScript executor to call the JavaScript click method on the element or some other method for doing that and I guess the question is what's the general advice about that or yeah exactly is there any specific bug in the WebDriver which doesn't support this click operation and we have to go for the darknet solution of using JavaScript executor because when I start using the JavaScript executor and the IE just starts flickering I mean so the IE doesn't support so Internet Explorer is a little bit of a strange beast yeah obviously so at the risk of boring everyone in the room with technical details by default the Internet Explorer driver uses what are called native events now does everybody know what native events are okay for those of you that don't what that means is that we're actually using an OS level mechanism to simulate the click on in the browser as opposed to simulating it by using JavaScript now that causes a number, there are a number of potential gotchas with that with doing that in Internet Explorer specifically a lot of them are focus related I've got a couple of blog posts that talk about some of the problems that are endemic to using that there are a couple of solutions that you can try that may or may not work given the specific case I can say that clicking on an element that has some JavaScript hooked up to the on click event is not globally broken in the IE driver it's not broken for every website everywhere because we have 100 unit tests some of which actually do click on an element that runs JavaScript and those are passing completely in the web drivers continuous integration on our CI system and it runs on every version of Internet Explorer from 6 to 11 and it routinely passes with no problem it still runs on 6 it still runs on 6 it's not supported but we still run it on 6 so there may be something else interacting with the system whether it's something unique to the JavaScript widget library that you're using that it's doing something sort of non-standard or unique in the click event that may be Internet Explorer the driver is not working correctly with or it could be again a focus issue and I can explain at length as to why that is a problem again there are some solutions that you can try in that case and I would encourage you to check out some of the blog posts that are out there that do have them you could turn off native events you could try the require window focus capability which uses a different native events mechanism one that's more supported and more correct by Microsoft but it's not completely broken I think the big point is or the big thing to consider when you deal with these problems is every single browser driver is implemented differently and it's most of them are hacks on top of hacks on top of hacks like Jim can attest it's the nature of the beast we're driving things that are not meant to be automated and we're doing it anyway because it's too useful I think the direction that the project is going is the only way to address this problem completely and is let the browsers do the work of automating themselves so when you tell them to make a click they will do it at the right level and this is why in Google Chrome you will find way less incidents of these issues than you will in Firefox or in iDriver just because it's a native implementation by the browser vendor it's not going to be perfect of course nothing's perfect but it's definitely better maintained that anything any of us can do without the control of the whole tool that you're driving so it is going to be addressed but keep in mind that a test that passes on IE without issues may have problems in Firefox or even worse in different versions of Firefox you'll get different behavior when it comes to clicks because of the native versus synthesized events and keep that in mind at the end of the day JavaScript is the ultimate workaround I guess around it it's worth noting that what you're describing is probably a bug and for me as a browser implementer it's difficult to get that driver implementation up to the level of the other drivers unless we have tests for it so if that's a real problem I mean the way that we're implementing drivers in the browser is by running them against the Selenium test suite so unless the Selenium test suite is good enough the drivers aren't going to be very good either I'm just going to piggyback on that just to say the biggest challenge when we see reports about this in the issue tracker we get a lot of reports in the issue tracker this doesn't work in this particular browser and the next thing that we have to have is we have to have a test case that we can use to reproduce because you may be using Bootstrap or you may be using AngularJS or you may be using jQuery UI or you may be using EXTJS or you may be using any number of 100 different JavaScript widget frameworks and we just don't have all of those widget frameworks in place to be able to create a simple test case whereas the person who has found the issue is in a far better position to say this is the problem that I'm seeing and I'm seeing it on this page that that I see using this widget toolkit and having a reproducible test case that includes not only Selenium code but a sample page against which we can test is the piece that a lot of people forget you know the Selenium code that you're running that you're seeing the problem with is not enough we have to have a page to test against that includes the CSS and the JavaScript whatever it is that to help us reproduce the problem now I know that for a lot of people that is hey the thing I'm working on is confidential or it's not listed on my intranet it's not accessible from outside or so on and so on there are strategies that you can use to help to generate or create a test case for us in that and I think probably the single most popular or one of the most popular posts from my blog talks about a little bit rudely but it talks about why it's important to help generate those test cases or help to provide the information that we need to be able to first reproduce the problem and then see what we can do about fixing it okay so my question is related to morning Simon you mentioned that we need people to contribute to the documentation of Selenium WebDriver now as a community you would have seen that Selenium project has grown a lot and it is mostly because there are a few good number of people who are good at getting the stuff done they are committing to the code and there are a lot of people who actually know how to use this stuff so they are blogging about it there are few books about it and there are videos about it now what I feel is that we could have a lot more people contributing to the project in case you have a development centered blog where you people contribute and write articles on how exactly let's say you fixed a bug which could tell people that if you are looking to commit to this particular or you want to contribute to this then this is the way to go about it and because there are a lot of different technologies involved it is very difficult to get that kind of a knowledge for everyone so if maybe for taking this project further if we can have let's say a development blog which is on Selenium where all contributors can come up and maybe write one article just and which teaches people like us who are not too much into development can contribute to this so we are capable to learn stuff but it is not always easy to get everything that okay this is the way we should go about these things sure so a blog is a really good idea unless it goes quiet because no one ever posts to it like my personal I'm not a very quiet person you may have noticed this but my blog has been quiet for like months because life just gets on top of you right and you never post to it a central blog that everyone contributes to there is a lot of documentation in the wiki like the if you go to googlecode.com Selenium you will find a wiki there and we tend to put user developer facing documentation in there so if you ever want to know like why is this all doing this right that would be a good place to start there is also quite a long chapter in the architecture of open source application book which describes the architecture of the Firefox driver chunks of the IE driver and it's similar to the one that's used by the Chromium driver as well and explains like why we made those choices and how we made those choices there's also the fixabug become a contributor workshop which we run every single Selenium conf where we do a guided walk through the source code take a look at what needs fixing and then walk you through how to do a build, why our build tools are as mad as they are all the bits and pieces that would help so there is quite a lot of developer focus documentation the next thing that would be super super useful is possibly a video of a guided walkthrough of like I'm fixing a bug which I know Santy found it quite useful in the become a committed workshop where it goes like I haven't ever seen you look through the source code so maybe a video tutorial like that would be good but the way that we've grown most of the committers almost everyone on the stage is through quite a lot of interaction on the IRC channel and in the mailing lists and over code reviews the best way to start fixing things is to go like I need help getting started where do I look and we point people in the right direction because you can have all the esoteric knowledge in the world we could tell you how code is laid out we could explain why it's done that way but until you get your hands dirty and start like actually experiencing the full horror of trying to navigate this thing then you don't get that experiential learning and that's the thing that helps you go from I want to help to actually being able to help so I'm not saying no to the idea of a developer focus blog I think it's a really good idea but I think we need to augment the current stuff that we have before that becomes the next logical step I think a great start is to actually put all the things that you just mentioned in paper I think there's already a wiki page saying if you want to become a contributor or if you want to help out these are the steps to follow if any of these things are missing there adding them up would be great it's again a wiki page so anyone can contribute and send a full request whatever that is but I think clarity and documentation are always the pain points in open source projects people are doing this for free and they have a limited amount of time they have a day job to commit to so people helping out from outside on that and whoever gets understanding of something and contributing as much as possible is always helping out in that area and Simon touched on this briefly a moment ago but I just want to reiterate that questions that you have if you're wanting to start digging into the code you're not finding the resources that you need to figure out how to get started the easiest and quickest and fastest way to get that information is to hop on our IRC channel I know I'm on the IRC channel virtually every weekday I know David Burns is there very often I know Andreas here is there every day we're on the IRC channel and I don't think we're that intimidating a bunch to chat with there maybe a little bit but it's so quiet we're a fairly social bunch there so we won't yell at you I promise much so there are actually lots of the IRC channels I mean you'd be right except we actually have logs but they're completely unfiltered right so the history is all there all you need to do is read every single line of every single log or just ask a question we tend to be relatively patient and we all have terrible short-term memory so if you just come in and ask the same question repeatedly you've probably got like a week before we actually remember that it's you the problem is typically there's the rule of thumb and what I found out personally myself is that people who tend to write code are the worst people to try to communicate anything in writing and it feels like we would need somebody who is not a technical user to come in and start asking questions and write down answers in a human language to make the documentation actually understandable so about logging first you can actually type colon logging and an enter in your IRC client and you'll get the link to all of the logs Santi and I started the project last time about rewriting the docs unfortunately that didn't really get much traction but we we did actually get somewhere with it so we do have a preliminary draft of at least two or three chapters of new documentation because I agree that a fair amount of the documentation on docs at Selenium HQ it's fairly bad but you can also see that the number of people who are active contributors on the Selenium project we're not that many people so and we're limited by life basically we need more of you to join us and to help us out with not only fixing bugs but also writing documentation so if you go back to the original Selenium we actually had a team of people who contributed to the project by just writing documentation and we loved them and they used to come up on the stage with us and things like that and that team faded away I was one of those yeah, Santy was one of those that team mostly faded away except for Santy who apparently absorbed all of them yeah that's how I started in the project and we basically got started because we noticed that the project needed documentation needed someone who understood the tool to write about it and it was one of the biggest learning experiences I had I definitely learned so much about Selenium by writing about it and by having to ask these people hey, how does this really work? the documentation that you find in docs.seleniumhq.org were actually written when Selenium 2 did not exist and we're talking about Selenium 3 being promised a year ago and Selenium 2 was released I don't know, 4 years ago or more? 2011 so yeah, the docs could definitely use some help I was thinking about doing some sort of weekend effort to get it published and then I think we'll get a lot more contribution but it's open source no promises you know, we could just hide someone in a room with a keyboard and if someone wants to come and hack with us on documentation tomorrow, maybe we can do that would that be interesting for people? would you like to do like a documentation hackathon or something in like a quiet space tomorrow that's a lot yes, okay I'll have a chat with Narash and we'll see whether we can find a space for that because that would be fun and we'll announce it tomorrow if it's happening no promises hi, hi everybody I'm Ming, I'm from Car Sales and Australia and classified ad company selling automobiles of cars first I want to thank Jim Evans because when I saw Brother I liked the testing but I wasn't just I wasn't so sure whether there's going to be some people to make it available to say shops so that's pretty good my question is like I'm QA you guys are developers so I have a different thought when I look at I'm pretty good at finding bucks so when I look at it sometimes I found bucks from Selenium or the bindings or things so my question is when I look at it I felt like it would be great if somebody create a website with the most of the scenarios people need to automate and then you guys can just develop a suite or I can develop a suite so we just run new software on that website and then if we didn't pick up something people complain about we just add another page with AngularJS or something and do it would that help it might help there are there have been suggestions about something like that in the past I do know of at least one is Dave Hafner in the room Dave are you here I know he's at the conference I don't see him around he might be sleeping he has a project called the internet which is I believe the name of his website is Elemental Selenium is that the name of it am I getting that right which has a series of tips and that project was designed to be sort of here's a project that has as part of it a lot of really common things that people need to do that they have trouble doing and I know that he takes contributions to that particular project as well but I mean it's things like dealing with pop-up windows which people always seem to have challenges with or things like waiting for elements to appear on a page he's got an example there of how to go about doing that I do know that all of his examples might be so it might be worthwhile doing a port of that or a port of that code to other languages that might be useful or helpful you know I would take a look at that and see if that has at least some of the kinds of things that you're looking at asking about and maybe offering to do guest contributions I know I asked him if I could I saw that a lot of people were having trouble with how to pop-up windows is the one I know is the one I happen to have said I know people have trouble with this would you like to have an example that shows how to do this and I gave him some sample code and he put it up there and did it as part of one of his elemental selenium tips so I know that he takes contributions from third parties for people who run into common solutions that a lot of people seem to run into I think that's a big difference because I want to create a website to test your work like different scenarios so back in the day there used to be a test case in the old selenium RC test suite that did this and it was constantly broken like no one was maintaining it and it was only ever one run when there was a release and there was a release every mega decade or something like that if there was a suite that was actively maintained by people I'd love to run that and just find out when things were breaking pointed at source labs and we could stick it in part of our continuous integration server and stuff like that I haven't got the time or the energy or the capacity to write and maintain that if you do go for it and we will link to it and we will run it and I'll be pleased as punch to do that like that would be brilliant but it's not something we're against it's just like I don't think we've got the capacity to do it as a project ourselves and it's a very extensive project it feels like it'd be easy at the beginning where you build a form field and a few buttons and click around in some Ajax but reality is that you will have to build a massive application where you can do any sort of interaction that selenium already does I believe our test suite does have a few pages with every single HTML form type or field that you can have and it's extensive it's a lot of work to do it if you want to make it functional and add some server side code behind that it's not going to be a one two day project but it would be a huge contribution for sure Hi guys, good evening and so myself Karth again and I work for Avler and once again I take this opportunity to thank you all for hosting here over in India and we are really pleased to have you all here and my question is like yes, I do agree it's an open source project and we have a lot of painful moments but are we going to stick with the same plan of having my ambition or my interest is my curiosity is all about why don't we have a community or something like JCP how Java evolves itself by the community, something like if you want to increase the capacity of the community so that you guys are not supposed to take the always blame for what I call postponing the releases so do we have a plan for driving people to contribute back to Selenium because we all use Selenium and we all interest it I know we all have certain wiki pages we all those things are happening but why don't we have I mean not is it possible to have a board or something for an education because when I compare with other open source projects like Linux foundations or open source or something they have their own developers, contributors themselves and also they are part of them are used to contribute on educating their products and videos and everything and they will keep encouraging people to contribute but anyway, that's not individual contributors job it may be like that but if you start driving that because if Simon is not well on a particular week the release should not be delayed or something like we also should be accountable for future Selenium so is there any plan for increasing the Selenium in terms of numbers or something like that is it possible to have an community based official community on continent or country based so that they can educate their local audiences as well they will drive people to contribute back to Selenium in terms of documentation or hackathon or whatever it may be so excellent question I think I understood it if I'm wildly off base from wildly off base do let me know so it's about the question is basically about like have we got a plan to grow contributions and contributors so there's a number of things that we have already in place to try and bootstrap that one of them is conference this conference where we run the workshop and there are people who come to that and every year we get one or two people starting to chip away at bugs and stuff like that and actually that's phenomenal that's a huge payback for the time and investment that that takes one of the things we've done is we've marked up some of the bugs on the bug tracker as getting involved so these are bugs where you're not expected to have a huge amount of experience with the project but you're interested in getting your teeth into it and we think this bug won't be too hard to do so if you just go to the bug tracker and just pick out one of the getting involved that's a good place to go one of the other things we did is we moved from subversion as a source control system to Git and then we mirrored ourselves onto GitHub so one of the primary drivers for that I was told was that it would enhance a number of contributions we have and we handle pull requests like I landed a pull request in the workshop yesterday actually there is a process in place for doing that and that's a fairly standard model in the open source world moving up a level one of the things that we have is user group evenings in quite a few cities around the world I know there's one in San Francisco I know there's one in London I think there's one in Berlin as well those are the ones that I'm aware of there's one in Tel Aviv Amsterdam, San Jose they're all over the world right if we're in town if we're in a Selenium group meeting then I think all of us are more than happy to meander along and talk about anything that the local Selenium community would find useful or interesting like it's one of the things I enjoy doing when I'm in town as one of the reasons why I really enjoy Selenium come for it it's this opportunity to connect with the community so those are the sort of things that we've got in place on top of that it would be nice if there was like a developer evangelist who walked around and sort of explained why it was awesome and great and wonderful and we'd do that if we were a company but we're not a company we're an open source project people who work in their free time and maybe some of us are lucky enough for our companies to sponsor our work but we are relatively small if you are by the way really keen in becoming like an evangelist come and have a chat at least we can figure out the messaging and how we should do things and stuff like that but notice it's an open source project it's got like some money but not a huge amount and we use that normally to put on the conference and run it as low cost as we can so it's not going to make you're never going to get rich from doing it I just want to throw something out here some of the people keep prefixing their question with developer I'm a QA that's what I used to do and I still do because I'm not a developer but there is no reason for you not to try to go fix a bug even if you don't know a year ago I didn't know Java I still hated it but I didn't know it now I know it a little bit and I needed to fix a very frustrating bug that I found in the grid so I just go and learn it and on one hand I am contributing to the project and making the project better which is great and on the other hand I am padding my resume for the next job so just throwing it out there hello everybody I'm going to try and do a quick lightning round I see few people moving out so I thought I'll do a quick lightning round and then pass it back so I'll take my last question before that go ahead hi everybody I'm Rahul and most of my experience goes into mobile applications my question is particularly different from what the questions were here the fact I'm here is there were few talks on the mobile side and that's the reason I'm here which interest me and as you all know most of the work is getting inclined towards the mobile side so my question to the panel is what is the most focused approach or what kind of roadmap you have or is there any specific focus at the mobile application automation side from Selenium so from the Selenium project itself the main thing we're doing to help the roadmap with mobile which I mentioned this morning is that we're hosting the work to do with trying to specify how a mobile implementation of a driver should work that's available in one of the sub projects if you just go to the seleniumgooglecode.com and take a look at the source code you can find that ultimately that work will probably lead to a specification but that is some way down the track that's the only that's the main thing we're doing as a project for mobile and that's because the mobile implementations are hosted up by Appium, by Selendroid and iOS driver and Blackberry these guys have more time or energy and more enthusiasm for solving the particular platform the problems of the particular platforms they're targeting rather than the Selenium project which tends to do a lot of desktop stuff now that doesn't mean we're not interested in mobile it just means that we think that those guys are already adding all the value that we would want to be adding ourselves and going in there and stealing their thunder and going like I know the official isn't helping anyone we want to grow a community we want to grow a suite of related sister projects who get along well and where it's possible to flip in an implementation if it's not quite right does anyone else want to say anything well remembering that the Chrome driver works on KitKat these days and I suspect Firefox have some plans for mobile as well so the mobile browser providers have also got an opportunity to add those implementations we already have working internally at Mozilla anyways marionette running on real devices that's being used every single day actually I think the challenge for the Selenium project is bringing all of these different solutions from all the vendors together and I think that's where we've made the step in the right direction with the web drivers back which is coming if you want to know more about the web drivers back you should attend my talk tomorrow but before we can start working really on publishing and suggesting or proposing a mobile spec we need to make sure that we have level 1 finished first and that really means getting the basics of web driver nailed down in the W3C web driver spec because the level 1 of the web driver spec isn't necessarily desktop oriented because most of the functionality that we put into the spec is specifically not desktop specifically not desktop specific so things like geolocation, things like notifications, full screen support for these web APIs they're not in the web driver spec consciously so we're sort of planning on adding those on top of the web driver spec once that's done as sort of extensions to the spec and that also applies to some parts of the mobile spec How far is this very near? You're saying you're going to implement that part so what is the accuracy of planning is there any timeline to that? Can you repeat? Is there any timeline to introduce maybe the geotagging or all those kind of web driver part do you have any road map timelines for that or is it like left to? No I mean I'd love for that to be a road map but the reality is that every one of us works for companies which have different priorities and a specification and things like that it takes time and it's not something that you can force it's something that will come naturally when everyone agrees and specification processes are not the most agile beasts you've ever dealt with so hopefully we'll get web driver finished first and then we'll see what happens maybe we can revisit this question You don't want to commit a date here This is kind of the way it works you find a problem then you build multiple solutions around it and then you pick whichever is the best solution you learn from the mistakes and then you spec on it these meetings are definitely not fun it's ours but yes you have implementations like Appium and iOS driver that are solving these problems today so they are implementing solutions for geolocation notifications Wi-Fi controls all these things that you would not even think about from the selenium side once these implementations are in place and we find the problems with each of them we can come out with a spec that ultimately the future of all these tools is to be part of the platform that they're meant to automate the way as well iOS driver should go away as well as soon as Apple or Google provide the right toolkit that the community wants to use to automate their platforms there's no reason for us to maintain it all we want is a single spec that we can all stick to so that we don't have to be rewriting our tests every six months when a new tool comes up or a new need comes up also don't forget that the modern web was born in what 2006 and it took until 2005 before selenium RC came out it took until 2011 before selenium 2 came out so you're talking a decent wedge of time as we experimented with the medium gathered more experience figured out what felt right and what felt wrong and so on and so forth now I'm not thinking it's going to take that long on mobile because sort of the timelines are compressed and we're learning more and more and we're trying to figure out what does it feel like to write a proper framework for a mobile device and we think it feels natural to build on top of the web driver model of sort of an API for navigating a tree of nodes and interacting with those nodes but we're still working on the details and I think it's going to take a little bit of interesting work and creative solutions that are coming out of the community to figure out what that looks like and when we've done that like when we've beaten all the rough edges out of it, when we know what feels good like Santi says, we'll be able to just move forward with a more collaborative approach. I'll just pick up on that and compare outside selenium if you look at things like Calabash and Frank those are two open source projects that help with native test automation and they borrow from each other and they build together with each other and they now have integrated in part the two projects. Given that all this is open source, the nice thing is even with multiple implementations or even especially with multiple implementations we can copy the good ideas so it's much easier for people to innovate in this space than would otherwise be the case and of course you're welcome to join in there's plenty of projects that will take your commits. Thank you for taking the question. The lighting round. So basically I have seven questions here I'm going to shoot one question everyone gets to answer the question and you answer the question in a word, in a phrase or in a line at the max. And we go through everyone one question then I ask the next question we go through so hopefully we'll be done in seven minutes or less. Is that one of the questions? Yes. What's a common question you really wish people stop asking you? Can I use status codes please? Selenium ID. Can I use it? Can you help me write a bot that will play with money at this casino website? Can you fix my problem full stop? I think I'm going to go with stale element exceptions. That's a pretty common one that it's a tough one to explain. Not to put anyone in this part having asked that question in this conference. All right cool thanks. Next one is what's the worst idea anyone ever suggested on the Selenium project? The worst idea? Just one more drink. HTTP status codes? Replacing the entire web driver API with something that's muddled in an object oriented form after the DOM. Can you just help with the Python bindings in 2007? I don't know if anyone said this one but iterations in Selenium ID. Come on you guys. What's your favorite programming language? Depends Java with an ID that's good or English. I should go really nerdy and say something like Fortran or Coball. But no I'm a big fan of C-Sharp actually. Yeah I mean I believe in the right tool for the right job but if I had to pick today I would probably go I should say Rust probably because I've been working on it. Toss up between Visual Basic and PowerShell no? Just shell bash script never underestimate what you can get accomplished with a simple bash script. I can write some Java so I'll say Java. I will not say Java. Python what do you hate about Selenium? I thought I'd be done by early 2008. Seems to be dragging on a bit. I hate feeling like I'm not doing a good enough job. Not at the moment but I'll take a rain check. I'll jump in and say the bearded one. Yeah it's not contributing enough really I'd love to do more. I think the fact that it's solving a really really hard project it's a complicated tool and project to be a part of. It's not just a nice UI framework out there or not to the those efforts but it's a hard problem to address for sure. I'm going to answer something I'm working on right now. So I was working on getting the Selenium remote server working and I'm just getting no pointer exceptions everywhere. It's just so terribly written. So if someone wants to fix our bugs please go ahead because there are plenty of them. Okay let me change it. The fact that the companies that pay $17,000 for a professional tool per computer are not willing to donate that money to the project instead. If you had the time machine and you could go back in time which was the one browser you would kill? It would be one of the variants of links because I can never remember which one was good and which one was bad. There was links with a Y and links with an I it was a text-based browser. I'm showing my age aren't I? Which browser would I kill? I don't know if I'd kill any browser. If I could go in a time machine I'd probably stop Selenium RC from being invented and just go straight to WebDriver. I used to work for another browser vendor who decided to to chuck their browser engine on the scrapyard so I'm probably going to see the new opera. Emax, oh wait you didn't say operating system, sorry. I'll pass on this one. I wouldn't kill any browsers I think the more implementations the better for the web to be open so none. Cool, thank you. What was your high point on the Selenium project? There are so many. Selenium Conf every year that's always a high point for me and when we actually do a major release that's always a real kick as well. I'm going to say 2 in addition to what Simon said I think the release of Selenium 2.0 was a real high point we worked really hard to get that done and I was really proud the day that I landed the rewritten IE driver even as as much trouble as it gave me over the years since. So at the earlier Selenium conferences unfortunately he's not here today because we're running a joke that we would always buy who's written the Ruby bindings a steak as big as his head so I think probably the highlight of the Selenium project is meeting him in 2011 in San Francisco at a Indian Irish bar Indian Irish bar and watching Yari eat a steak literally as big as his head from joke to seriousness I think probably being writing the first web driver implementation supported by a browser and also being the one to write the first implementation for a mobile device a piece of JavaScript that would catastrophically crash IE 8 and 9 that was caught in CI and did not go on into production two things one working on the way projects which I helped out peripherally how good web driver was at dealing with this very complex application and then the first mobile implementations seeing web driver actually running on a mobile phone was pretty staggering back in 2008 around 2008 we did that I think getting Selenium on Continuity Integration was a very big high for me working with Daniel Wagner Hall for most of the work but helping out from the soft side on how to do all those tweaks was a very big one and my second highest was fixing a very very complicated bug in SSL proxying in Selenium we spent like a week and a half digging through the weeds of encryption working with the people at Bouncy Castle to the point that it actually got a bug and of course it was three lines of code which is the way it always is but nailing that one was a good one Last question the worst nightmare with the Selenium project you know I don't think I have one like I got into the Selenium project because I enjoy hacking on the code and I'm always going to enjoy hacking on the code I guess my worst nightmare would be having a project to end and never having an opportunity to hang out with the team and you guys I think my worst nightmare would probably be having the project end without without seeing the spec work through and without seeing the browser, the work we've done with the browser vendors come to full fruition that would probably be my worst nightmare Yeah I went to say the same thing as Jim actually we've worked so hard on the Selenium project over the years so it would be a shame to not see it culminate in this specification which is sort of we keep pushing forward so hard to get right so I'm going to answer that Having to test the flash application on Selenium Obtuse implementations so now we're getting a spec let's hope that everyone implement it consistently unreliably Yeah I think I'm going to go with browser vendors not respecting the spec and doing their own thing the web is kind of made these days would be a really really bad thing Alright thank you guys that was great there are a few more people who have questions we have time till 7 we need to kill so if you guys are okay we're going to continue for a bye I've got half an hour to make up from earlier So 7.30 Yeah I don't know I actually got a second last my question is why is it called Selenium Ah Are we sitting comfortably everybody Then I'll begin Jason Huggins or Paul Hammond tell the story far better than I do but I'll have a stab at it So Jason Huggins was the original creative of what we now call Selenium and he's fairly creative with names but I think he was going to call it like a framework for doing automated testing on a web browser and it's going to be wicked good or something I don't know but he was trying to come up with names for it and somebody sort of went well you know what is it competing against and somebody went oh it's competing against like a mercurial QTP and somebody looked in the dictionary I think it was Jason looked in the dictionary and sort of looked up mercurial and found out that the cure for mercury poisoning was Selenium and so it started off as a really bad joke and then it was like it's one of those names that stuck because actually it's a really good name right and it's memorable and it's distinctive and it's easy to find also if you're interested in Brazil nuts it turns out they're high in Selenium sorry there we go Hi this is Prashant Sams and I'm a diehard fan of Selenium and I've been waiting for this day for a long and Hi Simon I'm a diehard fan of you and Jim Evans I know he's a very good musician I've been going through all the contributors biography I'm very very excited and I have a blog called SeleniumMocks.com SeleniumMocks.blogspot.com so especially right now I'd like to ask the question it's very interesting and remarkable that Selenium supports all the most popular browsers especially opera and safari in my concern I feel a lot of issues and especially opera 12 plus versions doesn't support and also safari I have tried it 7 it's not working there's combination certain combinations working in one machine and doesn't support another machine so that's what I want to ask from you and one more question I heard of some rumors that Windows Selenium is going to be launched but I'm not aware about that just heard of rumors so can you please okay so taking the first question about like wouldn't it be nice if the opera driver and the safari driver were as stable and as good as the other implementations I totally agree it would be nice opera they switch their rendering engine from their own one to the one that's used by Chromium which is called Blink and when they did that there was a step back in how easy it was to automate opera they are working on I believe they're working on a new opera driver so that should be coming it won't be coming from the Selenium project if it's coming at all it will be coming from opera software with safari the current implementer I think that's enough of it the current implementation was written by a very talented engineer called Jason Labour and it's a plug in it's an extension to safari which was similar to how we used to do the old Chrome driver it's a flawed approach because we can't get the level of control over the browser that we really need my sincere hope is that once we get the W3C specification to recommendation which is where it's published and people can implement it is that Apple step up and do their own implementation it's Apple software they write so they will release this thing if they're working on it when they're good and ready but nobody knows if they're working on it the second question about Windows applications testing Windows applications is Selenium so Francois Reynard's was Twin or something Francois had an implementation and if you think about if you kind of think about it and Simon alluded to this in his talk this morning if you think about a Windows application it's a tree of objects or tree of elements and you navigate through that tree and you interact with the nodes on that tree very similar to a web page the model or the API model the idea that that's what this API is holds up in terms of being able to do it are there any active projects that are actively working on using the Selenium project or the Selenium or the WebDriver API to automate Windows applications not to my knowledge I don't think so it would be an interesting project it would be an interesting project and I don't know of any projects that are currently being developed or that are even on the radar for something like that but it would be an interesting project to look into and I heard two words that should never be together used ever which is Windows Safari testing part of the reason is that Apple has not updated Safari on Windows in more than four or five years now so if you actually want to test on Safari you get an hours 10 node Hi first of all before asking the question I would like to thank you guys for your efforts and special thanks to Jim for his automated bindings okay so I have two questions the first one is specific to, I mean it's very technical right now it takes that we pass to the locators I suppose it's very case sensitive is there any plan or is it possible to make it non-case sensitive which locators I mean all of them not all of them but I was talking specific with the ID or something ID so what we tend to do is we tend to delegate down to the browser engine to ask it like have you got this thing so ID, name CSS selectors in particular on some browsers most browsers XPath is also done natively so whatever the browser does is what we do and so I'm not planning on changing anything that's not the world's most helpful but I have no plans right now so with the CSS selector specifically that roughly equates to what you do when you call document.query selector or document.query selector all so if you really want to raise that issue you need to talk to the CSS working group and have good luck with that sure thank you and my next, it's not a question First of all, I really thank you guys for maintaining the documented Selenium HQ.org because I've seen really it going from the very beginning stages and right now it's in a very decent stage where everyone can benefit from that. But the suggestion is more or less like, I've seen a lot of people talking about the different kinds of patterns that they have implemented in the test suits but it would be really great if they could log or document their specific patterns, what they have implemented with the code snippets in the website or the webpage that would be really helpful for the starters so that it's kind of a hub and people can come there instead of doing a Google search and going on individual blocks. Does anyone want to? No, it's not a question. That was not a question. It was a suggestion too. Could you repeat the question better, the question? My suggestion was more specific to the documentation that we are maintaining at the seleniumhq.org because I've seen a lot of people talking about different types of patterns that they have been implemented. So I was requesting people to come up and update their patterns in the documentation section of the seleniumhq.org so that it'll be more useful for everyone. So it's kind of one stop for everyone to. Okay, so it's a request for us to update our docs. We should do that. It's a suggestion for everyone to contribute, I believe. Yeah, it's a solution for everyone. We built the new docs that Andreas and I worked on and Luke is also working on. Yeah, well, just send a patch. I mean, this isn't something really we can do. I mean, send a pull request and pull approve it. They're built on markdown which is these days the language of open source documentation, right? Everything on GitHub is markdown so it's really, really easy to go there, make a quick change and contribute it back. So we just got to do the hook so that we can make that markdown actually part of our website and deploy it and that's kind of the final piece of work that needs to be put in place. Okay. All right, I'm really sorry but we will have to wrap up. We have a band already here. They'll need about 30 minutes to set up so we can start on time. I know a lot of people will get late, they'll need. We have another hour tomorrow morning between nine to 10 and we can continue this tomorrow morning between nine to 10. So I'm sorry, keep your questions, great questions. We will have, we'll continue from nine to 10. We're gonna break for 30 minutes now and I would request everyone to kind of step out or move towards the back end of this room. The band is gonna come in and they're gonna set up and then we're gonna start seven, 10-ish. Okay, just a quick thing. We're all gonna be here this evening. Feel free to come up and ask us questions and chat to us. We're generally approachable. And don't forget to buy Mr. Jim Evans a beer. Thank you all very much for being here. The idea is that he's not supposed to walk out of this room today alone. All right, I think we should thank these guys for their wonderful contribution.