Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Live Coding Tester une Application HTML5
Search
Jean-Laurent de Morlhon
November 20, 2013
Programming
1
94
Live Coding Tester une Application HTML5
Live coding Tester une Application HTML5, talk given @ Codeurs en Seine, MIX-IT
Jean-Laurent de Morlhon
November 20, 2013
Tweet
Share
More Decks by Jean-Laurent de Morlhon
See All by Jean-Laurent de Morlhon
Retour Sur DockerCon 2016 - Docker Mega Meetup
jeanlaurent
1
130
Retour sur DockerCon 2016
jeanlaurent
2
200
Pourquoi Maurice ne doit surtout pas coder en Go.
jeanlaurent
0
180
Diamond Kata Workshop
jeanlaurent
0
190
Testing sur code legacy
jeanlaurent
0
130
FruitShop
jeanlaurent
3
820
Phantom, Zombie & Karma, overview of the greatest testing tools for modern web app
jeanlaurent
5
760
Testing sur Legacy Code
jeanlaurent
1
60
Le fantome, le zombie et testacular Karma. Panorama des outils de tests pour application web moderne.
jeanlaurent
1
91
Other Decks in Programming
See All in Programming
チームのテスト力を鍛える
goyoki
3
930
Things You Thought You Didn’t Need To Care About That Have a Big Impact On Your Job
hollycummins
0
110
MCPでVibe Working。そして、結局はContext Eng(略)/ Working with Vibe on MCP And Context Eng
rkaga
5
2.3k
アルテニア コンサル/ITエンジニア向け 採用ピッチ資料
altenir
0
110
API Platform 4.2: Redefining API Development
soyuka
0
160
Kiroで始めるAI-DLC
kaonash
2
630
複雑なフォームに立ち向かう Next.js の技術選定
macchiitaka
2
240
rage against annotate_predecessor
junk0612
0
170
実用的なGOCACHEPROG実装をするために / golang.tokyo #40
mazrean
1
300
プロポーザル駆動学習 / Proposal-Driven Learning
mackey0225
2
1.3k
楽して成果を出すためのセルフリソース管理
clipnote
0
190
今だからこそ入門する Server-Sent Events (SSE)
nearme_tech
PRO
3
260
Featured
See All Featured
Become a Pro
speakerdeck
PRO
29
5.5k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
113
20k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
For a Future-Friendly Web
brad_frost
180
9.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
GraphQLとの向き合い方2022年版
quramy
49
14k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.8k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Statistics for Hackers
jakevdp
799
220k
Transcript
Tester une application Live coding sur les tests d'acceptances d'une
application html5/javascript #bdd #javascript Jean-Laurent de Morlhon - mai 2013
Jean-Laurent de Morlhon Programmeur @morlhon
None
None
None
http://www.growing-object-oriented-software.com/
Projets d'aujourd'hui JavaScript CoffeeScript 8,3 Java 36,1
http://martinfowler.com/bliki/TestPyramid.html
Abbot public class LabeledListTest extends ComponentTestFixture {! ! public void
testLabelChangedOnSelectionChange() throws Throwable {! String[] contents = { "one", "two", "three" };! final LabeledList labeledList = new LabeledList(contents);! showFrame(labeledList);! ! Component list = getFinder().find(new ClassMatcher(JList.class));! JListTester tester = new JListTester();! ! JLabel label = (JLabel)getFinder().find(labeledList, new Matcher() {! public boolean matches(Component c) {! return c.getClass().equals(JLabel.class)! && c.getParent() == labeledList;! }! });! ! ! tester.actionSelectRow(list, new JListLocation(1)); ! ! assertEquals("Wrong label after selection",! "Selected: two", label.getText());! ! tester.actionSelectRow(list, new JListLocation(2));! assertEquals("Wrong label after selection",! "Selected: three", label.getText());! ! tester.actionSelectRow(list, new JListLocation(0));! assertEquals("Wrong label after selection",! "Selected: one", label.getText());! }! ! public LabeledListTest(String name) { super(name); }! ! }!
@Test! public void homePage() throws Exception {! WebClient webClient =
new WebClient();! HtmlPage page = webClient.getPage("http://www.conference-agile.fr/");! assertEquals("Agile France", page.getTitleText());! ! String pageAsXml = page.asXml();! assertTrue(pageAsXml.contains("<body itemscope"));! ! String pageAsText = page.asText();! assertTrue(pageAsText.contains("Des idées pour tout de suite!"));! ! webClient.closeAllWindows();! }! ! HtmlUnit
public class NewTest extends SeleneseTestCase {! // We create our
Selenium test case! ! public void setUp() throws Exception {! setUp("http://www.mix-it.fr/", "*firefox");! }! ! public void testNew() throws Exception {! selenium.open("/");! selenium.type("q", "rocks");! selenium.click("btnG");! ! selenium.waitForPageToLoad("30000");! ! assertTrue(selenium.isTextPresent("ROCKS !"));! }! }! Selenium
Zombie.js var Browser = require("zombie");! ! browser = new Browser();!
browser.visit("http://localhost:3000/", function () {! ! browser.fill("email", "
[email protected]
");! browser.fill("password", "youDontWantToKnow");! ! browser.pressButton("Login", function() {! assert.ok(browser.success);! assert.equal(browser.text("title"), "Welcome to Serpodile");! });! ! });!
Zombie.js Browser = require("zombie")! ! browser = new Browser()! browser.visit
"http://localhost:3000/", ->! ! browser.fill "email", "
[email protected]
"! browser.fill "password", "youDontWantToKnow"! ! browser.pressButton "Login", ->! assert.ok browser.success! assert.equal browser.text "title" , "Welcome to Serpodile"!
Cucumber Feature: Addition! In order to avoid silly mistakes! As
a math idiot ! I want to be told the sum of two numbers! ! Scenario: Add two numbers! Given I have entered 5 into the calculator! And I have entered 7 into the calculator! When I press the button! Then the result should be 12 on the screen!
Talk - Action = S**t D EM O TIM E
Références • BDD • http://referentiel.institut-agile.fr/bdd.html • Zombie.js • http://zombie.labnotes.org/ •
Cucumber.js • https://github.com/cucumber/cucumber-js • Chai.js • http://chaijs.com/
Alternatives http://karma-runner.github.io http://dalekjs.com/ http://casperjs.org/ https://github.com/FluentLenium FluentLenium
Source & Slides https://github.com/jeanlaurent/CucumberAndZombie
Pour aller plus loin • UI Test • Karma: http://karma-runner.github.io
• Casper.js: http://casperjs.org/ • FluentLenium: https://github.com/ FluentLenium/ • Unit Testing • Jasmine: https://github.com/pivotal/jasmine • Buster.js : http://docs.busterjs.org/en/latest/ • Mocha : https://github.com/visionmedia/mocha • QUnit : http://qunitjs.com/ • Sinon.js: http://sinonjs.org/
?