[{"data":1,"prerenderedAt":543},["ShallowReactive",2],{"project-22374991":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":45,"post_text":48,"what":49,"said":101,"maker_in_thread":212,"shape":224,"grid":229,"attempts":508,"same_week":509,"maker_shows":46,"maker_hidden":536,"reader_version":537,"card":538},"22374991","Kasaya","A scripting language and runtime for browser automation","title","Show HN: Kasaya – A scripting language and runtime for browser automation","https:\u002F\u002Fgithub.com\u002Fsyscolabs\u002Fkasaya","github.com","hliyan",1582206318,2020,386,106,93,3028,4,"legend","dev_tools","browser automation","other",[21,24,25,26,27],"scripting language","selenium","end-to-end testing","dsl","mixed",-0.37,{"positive":31,"neutral":32,"mixed":33,"critical":34},6,19,0,23,48,{"idea":37,"design":40,"execution":43,"docs":44},{"positive":38,"critical":39},3,9,{"positive":41,"critical":42},2,8,{"positive":33,"critical":38},{"positive":33,"critical":38},[46,33,38,46,33,38,33,33,33,33,33,46,38,33,33,38,38,33,46,46,33,46,47,46,38,46,38,46,38,46,38,38,46,33,38,38,41,46,46,38],1,5,null,{"problem":50,"audience":62,"pricing":48,"motivation":70,"time_to_build":48,"stack":75,"openness":99,"stage":100,"team_size":99},{"value":51,"source":52,"evidence":53},"Writing browser automation and tests with a nicer API than raw Selenium code","inferred",[54,58],{"id":55,"by":56,"text":57},"22375835","BiteCode_dev","A scripting language is not a goal in itself (although in the case of a DSL, it often is unfortunately because of the coolness factor), solving a problem is. Here the problems it…",{"id":59,"by":60,"text":61},"22375838","swalsh","I actually kind of really like this DSL, I think it is going to be easier for my QA team to use this, than asking them to use javascript.",{"value":63,"source":52,"evidence":64},"QA testers and developers automating browsers",[65,66],{"id":59,"by":60,"text":61},{"id":67,"by":68,"text":69},"22375154","jbob2000","Who is this for? It requires the JDK and Node.js to be installed, telling me that this is targeted to developers. If I'm a developer, I'm OK to use a browser automation framework…",{"value":71,"source":52,"evidence":72},"Make browser automation simpler for non-programmers and QA",[73,74],{"id":59,"by":60,"text":61},{"id":55,"by":56,"text":57},[76,88,92],{"value":77,"source":78,"evidence":79},"Java (JDK required)","commenter",[80,84],{"id":81,"by":82,"text":83},"22375171","vincelt","Looks promising but I don't want to install the JDK (and it's not practical for CI). Isn't it possible to do without with something like Puppeteer?",{"id":85,"by":86,"text":87},"22385792","tor291674","Why is Java SDK needed?",{"value":89,"source":78,"evidence":90},"Node.js",[91],{"id":67,"by":68,"text":69},{"value":93,"source":94,"evidence":95},"Selenium","maker",[96],{"id":97,"by":11,"text":98},"22375681","Yes it does...","unknown","prototype",{"praise":102,"objections":111,"requests":138,"questions":163,"alternatives":178},[103],{"value":104,"source":78,"evidence":105},"Readable, intuitive syntax that QA could adopt",[106,107],{"id":59,"by":60,"text":61},{"id":108,"by":109,"text":110},"22376419","debaserab2","All these kinds of HN comments share the same flaw: they unnecessarily detract from the work the OP has done by attacking use cases that the project never claimed to solve.…",[112,126,131],{"value":113,"source":78,"evidence":114},"DSLs become limiting and hard to maintain versus a real language",[115,118,122],{"id":116,"by":56,"text":117},"22375721","All those kind of projects share the same flaw: it uses a DSL instead of an existing language, so tooling\u002Fdocumentation\u002Ftesting\u002Fsupport\u002Fmodules are going to be very weak, and…",{"id":119,"by":120,"text":121},"22377839","masukomi","> With JavaScript you get method completion and debugging. a) now your QA team needs to know JavaScript b) method completion is crap when you don't know the language. c) \"You can…",{"id":123,"by":124,"text":125},"22379435","enjo","The other choice is that your QA teams knows this DSL tho. Which is the point: eventually most DSLs converge on the complexity of programming languages and you’re left asking:…",{"value":127,"source":78,"evidence":128},"Requires JDK and Node, unsuited to CI",[129,130],{"id":81,"by":82,"text":83},{"id":67,"by":68,"text":69},{"value":132,"source":78,"evidence":133},"Selenium already exists and is mature",[134],{"id":135,"by":136,"text":137},"22378185","ou_ryperd","Test automaton guy here. Why reinvent the wheel? Selenium\u002FWebDriver is already a standard (https:\u002F\u002Fwww.w3.org\u002FTR\u002Fwebdriver\u002F). It has years of maturity. Maturity means that…",[139,146,156],{"value":140,"source":78,"evidence":141},"Support Puppeteer or Chrome DevTools protocol instead of Selenium",[142,143],{"id":81,"by":82,"text":83},{"id":144,"by":11,"text":145},"22376107","Not yet, but someone suggested Chrome DevTools protocol. This is still in the very early stages, so we're looking into these things.",{"value":147,"source":78,"evidence":148},"Autocomplete for elements on the page",[149,153],{"id":150,"by":151,"text":152},"22375133","dariusj18","I am confused by the use of \"WYSIWYG\". It seems to be more a control console\u002FREPL with Natural Language syntax. Edit: A killer feature would be autocomplete for things found on…",{"id":154,"by":11,"text":155},"22375676","> Edit: A killer feature would be autocomplete for things found on the page. Challenge accepted!",{"value":157,"source":78,"evidence":158},"Loops support",[159],{"id":160,"by":161,"text":162},"22380054","losvedir","This is neat. I was just looking for something like this the other day. Does it support loops? I don't see any example like that. Basically I wanted to load a search results page…",[164,171],{"value":165,"source":78,"evidence":166},"Does it use Selenium under the hood?",[167,170],{"id":168,"by":169,"text":165},"22375668","naushniki",{"id":97,"by":11,"text":98},{"value":172,"source":78,"evidence":173},"How does it select elements without selectors?",[174],{"id":175,"by":176,"text":177},"22378162","rubyn00bie","I don't see how this is a scripting language and runtime; so, maybe I'm totally missing the boat and everything below is nonsense... I think DSLs like this turn into one thing:…",[179,190,197,204],{"value":180,"source":78,"evidence":181},"Taiko",[182,186],{"id":183,"by":184,"text":185},"22375104","subhashchy","Interesting concept, sounds promising. Have you checked taiko ? https:\u002F\u002Fgithub.com\u002Fgetgauge\u002Ftaiko",{"id":187,"by":188,"text":189},"22375397","zabil","This looks great. I also want to shamelessly plug something similar I am working on, Taiko, it uses javascript and comes with a REPL that generates scripts like. ``` await…",{"value":191,"source":78,"evidence":192},"Cypress",[193],{"id":194,"by":195,"text":196},"22375918","spectaclepiece","Looks cool for really simple things but wouldn't use it for anything serious. I have been using Cypress[0] the past few months and so far I've been quite pleased with it. [0]…",{"value":198,"source":78,"evidence":199},"Canopy",[200],{"id":201,"by":202,"text":203},"22375165","aloisdg","We can do this with Canopy in F# (repl\u002Finteractive style too!): ``` \u002F\u002Fgo to url url \"http:\u002F\u002Flefthandedgoat.github.io\u002Fcanopy\u002Ftestpages\u002F\" \u002F\u002Fassert that the element with an id of…",{"value":205,"source":78,"evidence":206},"Selenium with Cucumber",[207,211],{"id":208,"by":209,"text":210},"22380745","mc3","One way this can be achieved is using specflow or cucumber and then make that drive selenium or puppeteer. Probably a 10 minute job to set up some basic commands (like demoed…",{"id":135,"by":136,"text":137},{"comments":213,"answered":31,"key":214},12,[215,218,221],{"id":216,"text":217},"22375697","I was very impressed by this! Great minds think alike. Would love more feedback if you have any.",{"id":219,"text":220},"22376088","Much obliged! Thanks for taking the time to respond.",{"id":222,"text":223},"22375125","Neat! When we were looking around, we didn't find this one, thanks. Can it also do stuff like this: ``` read ${sender} from row \"Test email\" column \"Sender\" ``` By the way, that…",{"commenters":225,"max_depth":226,"maker_replies":213,"first_comment_mins":227,"lifespan_hours":228},71,7,20,41,[230,232,236,237,240,243,245,248,251,252,256,259,260,262,264,267,271,274,277,280,283,286,289,292,295,297,299,301,303,306,309,312,315,317,318,320,321,324,327,330,333,335,339,341,343,345,348,351,352,355,358,359,363,365,367,369,371,374,377,380,382,384,388,392,395,396,398,401,404,407,409,412,414,418,422,424,427,431,433,436,439,444,446,448,449,452,453,456,459,462,465,468,471,475,478,481,483,486,488,492,494,496,499,501,503,506],[116,33,46,231,56,33],"project\u002Fcritical\u002Fidea",[233,33,33,234,235,33],"22375754","commenter\u002Fneutral\u002Fidea","KaoruAoiShiho",[55,33,33,234,56,33],[238,33,33,234,239,33],"22376123","SlowRobotAhead",[241,33,33,234,242,33],"22376516","exdsq",[59,33,47,244,60,33],"project\u002Fpositive\u002Fdesign",[246,33,46,247,56,33],"22376065","project\u002Fcritical\u002Fdesign",[249,33,46,247,250,33],"22376070","amitport",[119,33,33,234,120,33],[253,33,33,254,255,33],"22377962","commenter\u002Fneutral\u002Fnone","holtalanm",[257,33,33,254,258,33],"22379482","rickyc091",[123,33,33,234,124,33],[261,33,33,234,250,33],"22381094",[108,33,47,263,109,33],"project\u002Fpositive\u002Fidea",[265,33,46,231,266,33],"22376567","threatofrain",[268,33,33,269,270,33],"22377156","other\u002Fneutral\u002Fnone","alwillis",[272,33,33,269,273,33],"22377367","farisjarrah",[275,33,33,269,276,33],"22377418","erikpukinskis",[278,33,33,269,279,33],"22377611","ofrzeta",[281,33,33,269,282,33],"22378502","Middleclass",[284,33,33,254,285,33],"22379774","cryptonector",[287,33,33,269,288,33],"22376969","yachtman",[290,33,33,269,291,33],"22378694","ajoy",[293,33,33,254,294,33],"22379071","plufz",[296,33,33,234,276,33],"22377435",[298,33,33,234,109,33],"22377885",[300,33,33,234,276,33],"22384835",[302,33,33,234,109,33],"22385127",[304,33,33,269,305,33],"22380197","specialp",[307,33,33,269,308,33],"22377994","nonbirithm",[310,33,46,231,311,33],"22377644","pankajdoharey",[313,33,33,234,314,33],"22379727","brutuz",[187,46,38,316,188,33],"project\u002Fneutral\u002Fdesign",[216,46,33,254,11,46],[319,46,33,254,188,33],"22376019",[219,46,33,254,11,46],[322,46,33,254,323,33],"22375772","kozhevnikov",[325,46,33,254,326,33],"22377673","egeozcan",[328,46,33,269,329,33],"22381875","imvetri",[331,46,38,316,332,33],"22375964","DailyHN",[334,46,38,316,188,33],"22376280",[336,46,38,337,338,33],"22376377","project\u002Fneutral\u002Fexecution","Normal_gaussian",[340,46,38,337,332,33],"22376421",[342,46,38,337,188,33],"22376514",[344,46,38,337,338,33],"22377144",[346,46,33,254,347,33],"22376556","mherrmann",[349,46,33,350,188,33],"22376926","other\u002Fpositive\u002Fnone",[201,41,33,269,202,33],[353,41,33,234,354,33],"22376048","Dontrememberit",[356,41,46,357,255,33],"22378002","project\u002Fcritical\u002Fexecution",[135,38,46,231,136,33],[360,38,33,361,362,33],"22379008","other\u002Fneutral\u002Fidea","webignition",[364,38,33,361,136,33],"22382440",[366,38,33,254,362,33],"22383889",[368,38,33,254,136,33],"22389783",[370,38,33,254,362,33],"22389811",[372,18,46,247,373,33],"22375223","nubela",[375,18,46,247,376,33],"22375617","saagarjha",[378,18,47,244,379,33],"22378618","gitgud",[183,47,38,381,184,33],"project\u002Fneutral\u002Fidea",[222,47,33,383,11,46],"maker\u002Fneutral\u002Fnone",[385,31,46,386,387,33],"22376244","project\u002Fcritical\u002Fdocs","bmn__",[389,31,38,390,391,33],"22377812","project\u002Fneutral\u002Fdocs","woadwarrior01",[393,31,33,269,394,33],"22382953","thosakwe",[81,226,38,337,82,33],[397,226,33,383,11,46],"22375722",[399,42,46,231,400,33],"22375622","mml",[402,39,46,247,403,33],"22375278","languagehacker",[405,39,33,269,406,33],"22375376","DelightOne",[408,39,47,263,332,33],"22375986",[410,39,46,231,411,33],"22377017","someone7x",[175,413,46,247,176,33],10,[415,416,33,417,394,33],"22381172",11,"other\u002Fneutral\u002Fdesign",[419,213,38,420,421,33],"22375362","project\u002Fneutral\u002Fnone","chrisweekly",[160,423,38,316,161,33],13,[425,423,33,426,11,46],"22388998","maker\u002Fneutral\u002Fdesign",[428,429,46,247,430,33],"22378128",14,"socialdemocrat",[194,432,46,231,195,33],15,[434,432,38,381,435,33],"22376359","casperc",[437,432,33,254,438,33],"22380145","kevlened",[440,441,47,442,443,33],"22375565",16,"project\u002Fpositive\u002Fnone","A4ET8a8uTh0",[208,445,46,231,209,33],17,[168,447,38,337,169,33],18,[97,447,33,337,11,46],[450,447,46,357,451,33],"22376068","bdcravens",[144,447,33,337,11,46],[454,447,46,357,455,33],"22376286","maple3142",[457,447,33,458,188,33],"22376563","other\u002Fneutral\u002Fexecution",[460,447,33,461,11,46],"22380323","maker\u002Fneutral\u002Fexecution",[463,32,33,464,282,33],"22378577","other\u002Fneutral\u002Fperformance",[466,227,38,337,467,33],"22378229","catchmeifyoucan",[469,227,33,470,11,46],"22382042","maker\u002Fneutral\u002Fdocs",[472,473,47,263,474,33],"22375952",21,"lqs469",[476,477,33,361,430,33],"22378147",22,[479,34,46,231,480,33],"22381359","zmmmmm",[67,482,46,247,68,33],24,[484,482,38,337,485,33],"22375226","t0astbread",[85,487,38,337,86,33],25,[489,490,33,269,491,33],"22376120",26,"veysel-im",[150,493,46,386,151,33],27,[495,493,33,470,11,46],"22375152",[497,493,46,386,498,33],"22375551","hypewatch",[500,493,33,470,11,46],"22375674",[154,493,33,502,11,46],"maker\u002Fpositive\u002Fexecution",[504,493,38,316,505,33],"22376252","TuringTest",[507,493,38,316,151,33],"22383672",[],[510,514,518,523,527,531],{"id":511,"name":512,"points":513,"category":20},"22396824","grep.app",614,{"id":515,"name":516,"points":517,"category":20},"22416258","Helium",191,{"id":519,"name":520,"points":521,"category":522},"22385408","MDAnki",179,"learning_science",{"id":524,"name":525,"points":526,"category":20},"22425080","Opensource.builders",161,{"id":528,"name":529,"points":530,"category":20},"22415042","Shox",99,{"id":532,"name":533,"points":534,"category":535},"22389239","exchange",91,"finance_crypto",false,"v2",{"id":539,"name":5,"line":6,"ai":536,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":29,"top":18,"kw":540,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":541,"url":9,"mix":542,"praise":104,"objection":113,"sub":21},22374991,[21,24,25,26,27],"1031030000013003301101513131313310332113",[31,32,33,34],1794036586729]