#selenium

/

      • hazmeister-sl joined the channel
      • hazmeister-sl
        depends if I wrote it
      • usually I CAN FORGIVE YSELF
      • whoops, caps
      • WhereIsMySpoon_
        xD
      • hazmeister-sl
        don’t drink and chat folks
      • kpattich__ joined the channel
      • krishnan-maha-sl joined the channel
      • krishnan-maha-sl
        @simonstewart thanks for helping with merging that PR.
      • Rapture joined the channel
      • hazmeister-sl lol. Precious lessons :thumbsup:
      • simonstewart
        NP. It pointed me to some of the grid code
      • And now my day has derailed a little
      • krishnan-maha-sl
        @simonstewart I sincerely from the bottom of my heart hope that I don't cause you to shed tears when looking at my PRs :)
      • kpattich_ has quit
      • simonstewart
        Your PR is fine :)
      • kpatticha joined the channel
      • krishnan-maha-sl
        I will go home now and work on the next PR. Already found my next GitHub issue to work on.
      • kpattich__ has quit
      • Phew! That's a relief @simonstewart
      • Qulu has quit
      • simonstewart
        I'm normally pretty good at letting people know when I think we can improve something
      • spathare has quit
      • My only hope is that I do that in a gentle way
      • Selenium-Github
        [13selenium] 15shs96c pushed 1 new commit to 06master: 02https://git.io/fNaL9
      • 13selenium/06master 149669e80 15Simon Stewart: Move utility method into utility class
      • simonstewart
        Alright. When the java tests go as green as we expect them to, is there any reason not to ship 3.14?
      • barancev
        go on!
      • simonstewart
        AutomatedTester: ship your python diff and we'll move from there
      • corevo_ joined the channel
      • Rubber duck time!
      • So, in my head the grid is composed of a number of moving pieces:
      • (Starting from the backend)
      • corevo has quit
      • 1/ end nodes (probably chromedriver, geckodriver, or similar)
      • 2/ possibly a wrapper for that (eg. docker, saucelabs, browser stack)
      • (It's possible that Selenium As A Service should treated as "1"
      • )
      • 3/ "Something" to route requests to the right destination
      • 4/ a "distributor" which is aware of all nodes in the system, and is responsible for assigning sessions to nodes
      • So, "1" equates to a "session", "2" to a "host", "3" to the router, "4" is the distributor
      • We might want to put proxies in there to handle things like protocol conversion
      • Or we might want that to a responsibility of the session
      • In a k8s setup, you'd probably have a load balancer somewhere in the mix
      • (which is why I need to update the webdriver spec to make session cookies A Thing)
      • chele has quit
      • So you'd end up fronting all this with haproxy or something similar
      • And have leadership elections for the distributor
      • With a permanent datastore for the session routing
      • @tomer, yt?
      • tomer-sl joined the channel
      • tomer-sl
        I am
      • Whats up?
      • simonstewart
        Two things: sizzle, and an IDE Alpha blog post
      • tomer-sl
        Alright
      • Seems like a sizzling topic
      • simonstewart
        Ha! :)
      • So, would you like to nominate someone to write a blog post announcing the alphas of IDE?
      • I guess it'd need "where to get it", "how to use it", "what we want before we hit beta"
      • tomer-sl
        I can do that with @tourdedave
      • simonstewart
        If there's nothing to do before "beta" (I think there is ;) ), we can go straight to announcing the beta
      • Lovely.
      • Ping me when you've something written and I'll make sure you have the keys to post to the blog
      • tourdedave may already have them....
      • tomer-sl
        Depends on what we call beta?
      • tourdedave
        I should already
      • simonstewart
        "beta" == "all the major features, including export, are in place, but we don't know how well they work"
      • "alpha" == "it may or may not work, and we know there are gaps"
      • tomer-sl
        gotya
      • simonstewart
        "release" == "any bugs we document are features"
      • :)
      • tourdedave
        how crucial is export?
      • simonstewart
        It seems to be the thing that most people are wanting
      • tomer-sl
        That depends on the runner’s reception
      • If that could even give an answer to 50% on day 1
      • And we can make it more flexible as we go to cover almost all of the cases
      • simonstewart
        Even if the runner was super, you'd still want to export to (say) C# or Java
      • tomer-sl
        We can reevaluate
      • tourdedave
        Well, some might still want to
      • tomer-sl
        Indeed, but there are more pressing features
      • simonstewart
        Because IDE is a step into the world of Selenium.
      • tomer-sl: that's why we announce an alpha
      • tourdedave
        Right, but if we ultimately enable people to do everything in the IDE that you can do in code, then there's no real need to export
      • simonstewart
        Uhhh...
      • I'm not sure I agree there.
      • diemol joined the channel
      • WhereIsMySpoon_
        i would disagree at 'enable people to do everything in the ide you can do in code'
      • thats just not going to be possible without allowing people to write code for the ide
      • simonstewart
        One of the use cases for IDE is "I need to throw a quick example together". That doesn't imply people will actually be running the tests in IDE
      • NOTICE: SeleniumHQ/selenium#4048 (master - f3197b1 : Krishnan Mahadevan): The build is still failing.
      • NOTICE: Change view : https://github.com/SeleniumHQ/selenium/compare/9190cd5c8c89...f3197b14bd78
      • NOTICE: Build details : https://travis-ci.org/SeleniumHQ/selenium/builds/409856933
      • I'm not saying "IDE should be rubbish", but I am saying that it's often an "on ramp" to the other bits of selenium
      • tomer-sl
        simonstewart: I get what you say, I’m not inclined to rewriting each feature 3-4 times atm
      • simonstewart
        Hence "alpha"
      • tomer-sl
        Wanna talk about sizzle?
      • simonstewart
        Sure.
      • tomer-sl
        So from a quick check I’m the culprit
      • simonstewart
        I think Jason Huggins is, to be fair
      • tomer-sl
      • It was disabled I reenabled it a while ago
      • simonstewart
        So, stepping back
      • Sizzle was how RC used to do element finding if you asked for "css" locators
      • tomer-sl
        It was disabled at some point
      • simonstewart
        So any test that uses the RC APIs and css actually depends on sizzle
      • tomer-sl
        They just failed then? until I reenabled it?
      • simonstewart
        I need to go read the code for the webdriver-backed selenium
      • tomer-sl
        I want to flesh out the locators in the IDE
      • simonstewart
        But, yeah, it should be there for backwards compatibility
      • The original IDE code was a hack on the original Selenium Core code
      • tomer-sl
        css and link are in my sights
      • simonstewart
        Which is how we ended up with sizzle where we are now
      • tomer-sl: you should be able to use the atoms for locating elements
      • tomer-sl
        I do
      • I don’t need sizzle
      • simonstewart
        Right
      • tomer-sl
        Since I incorporated that
      • But I need other things from there
      • simonstewart
        So it's cool to just cut that entire chunk out for IDE TNG
      • Which other things?
      • tomer-sl
        getText and the likes
      • simonstewart
        getText is also an atom
      • tomer-sl
        I’ll have to go over it
      • iirc I’m using over 17 utils functions all over the place
      • simonstewart
        bot.dom.getVisibleText
      • RC's getText is hopelessly broken
      • tomer-sl
        Is it documented somewhere
      • simonstewart
        bot.dom.getVisibleText?
      • tomer-sl
        I’ll have to check if I can port entirely away from it
      • And then I can just cut it from the build process
      • GodFather has quit
      • simonstewart
        What are you using in the htmlutils file?
      • tomer-sl
        Easy to ask, it puts everything on window
      • I’ll have to grep
      • simonstewart
        Thanks
      • tomer-sl
        one sec
      • const eval_css = window.global.eval_css; const getTimeoutTime = window.global.getTimeoutTime; const SeleniumError = window.global.SeleniumError; const normalizeSpaces = window.global.normalizeSpaces; const getText = window.global.getText; const createEventObject = window.global.createEventObject; const triggerKeyEvent = window.global.triggerKeyEvent; const fnBind = window.global.fnBind; const browserVersion = window.global.browse
      • window.global.getInputValue; const extractExceptionMessage = window.global.extractExceptionMessage; const PatternMatcher = window.global.PatternMatcher; const parse_kwargs = window.global.parse_kwargs; const getTagName = window.global.getTagName;
      • simonstewart
        It's likely the atoms or modern JS already have replacements for almost everything
      • tomer-sl
        That’s a short list of things
      • simonstewart
        OK. So "getText" we've covered already
      • bot.actions can do key events
      • tomer-sl
        const objectExtend = window.global.objectExtend; const SeleniumError = window.global.SeleniumError; const createEventObject = window.global.createEventObject; const absolutify = window.global.absolutify; const addLoadListener = window.global.addLoadListener; const highlight = window.global.highlight; const _parse_locator = window.global.parse_locator; const eval_xpath = window.global.eval_xpath; const eval_css = window.global.eva
      • simonstewart
        getting a tag name is trivial
      • tomer-sl
        window.global.PatternMatcher; const getText = window.global.getText; const getTagName = window.global.getTagName; const elementFindFirstMatchingChild = window.global.elementFindFirstMatchingChild; const eval_locator = window.global.eval_locator; const is_ancestor = window.global.is_ancestor; const canonicalize = window.global.canonicalize; const parseUrl = window.global.parseUrl; const reassembleLocation = window.global.reassembl
      • window.global.serializeObject;
      • That’s everything
      • simonstewart
        serialize sounds like JSON.stringify to me
      • IDE had some odd behaviour about looking through nested frames for elements which was always "fun"
      • And damnably confusing