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
E2Eツール「Nightmare」を使ってみよう
Search
potato4d(Takuma HANATANI)
September 19, 2016
Programming
1
490
E2Eツール「Nightmare」を使ってみよう
WordBench京都(#wbkyoto #wordbench) 9月のスライドです。
potato4d(Takuma HANATANI)
September 19, 2016
Tweet
Share
More Decks by potato4d(Takuma HANATANI)
See All by potato4d(Takuma HANATANI)
どうせキレイに書けない処理は逆にAIに書いてもらうほうが良い説 / #kyotojs 22
potato4d
3
360
TSX First な Zero-Runtime SSG potato4d/dodai とその仕組み / owned static site generator #kyotojs
potato4d
1
2.2k
Vue.js with TSX - From Vue 2.x to Vue 3 #v_tokyo11
potato4d
9
4.8k
終わりゆく Vue 2.x 時代の状態設計のアンサー - Vue 3 の Provider への期待 / The Last Architecture of the Vue 2.x
potato4d
25
6.9k
Web Worker を使ってブラウザ上でポケモンの画像を解析したい! / Pokemon recognition from screenshots in browser using web worker
potato4d
0
1.2k
Firebase & Google Cloud によるサーバーレス帳票管理 #FJUG / Serverless Architecture in Candy
potato4d
8
3.6k
NestJS meetup Tokyo Opening Talk / What is NestJS? #nestjs_meetup
potato4d
11
4k
私たちはなぜ SPA で開発するのか / Why you choose SPA
potato4d
39
26k
Amplify Console 誕生以来本番運用しつづけてわかったこと #awswakaran_tokyo
potato4d
6
3.5k
Other Decks in Programming
See All in Programming
Jakarta EE meets AI
ivargrimstad
0
520
ML.NETで始める機械学習
ymd65536
0
230
Swift Testingのモチベを上げたい
stoticdev
2
140
バッチを作らなきゃとなったときに考えること
irof
2
540
XStateを用いた堅牢なReact Components設計~複雑なClient Stateをシンプルに~ @React Tokyo ミートアップ #2
kfurusho
1
990
Amazon Bedrockマルチエージェントコラボレーションを諦めてLangGraphに入門してみた
akihisaikeda
1
140
Ça bouge du côté des animations CSS !
goetter
2
150
GoとPHPのインターフェイスの違い
shimabox
2
210
なぜイベント駆動が必要なのか - CQRS/ESで解く複雑系システムの課題 -
j5ik2o
14
4.7k
コミュニティ駆動 AWS CDK ライブラリ「Open Constructs Library」 / community-cdk-library
gotok365
2
250
Honoとフロントエンドの 型安全性について
yodaka
7
1.5k
Kotlinの開発でも AIをいい感じに使いたい / Making the Most of AI in Kotlin Development
kohii00
5
1.4k
Featured
See All Featured
Writing Fast Ruby
sferik
628
61k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
430
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Into the Great Unknown - MozCon
thekraken
35
1.6k
What's in a price? How to price your products and services
michaelherold
244
12k
YesSQL, Process and Tooling at Scale
rocio
172
14k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
11
1.3k
Adopting Sorbet at Scale
ufuk
75
9.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
580
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
The Cost Of JavaScript in 2023
addyosmani
47
7.4k
Transcript
E2EπʔϧʮNightmareʯΛ ͬͯΈΑ͏ WordBench Kyoto 2016.09 TAKUMA Hanatani(Potato4d)
ࣗݾհ • Ֆ୩ɹຏ(@potato4d) • #wbkyoto ͷϞσϨʔλʔͬͯ·͢ • #frontkansai ͬͯ·͢ɻ •
࠷ۙJavaScriptʹͲͬΓ • ඞཁ͕ग़͖ͯͯॳΊͯe2eͬͨͷͰ ͯ͠Έ·͢
Agenda • Nightmareͱʁ • NightmareΛ͏ͱԿ͕Ͱ͖Δʁ • WordPressϓϥάΠϯ։ൃ࣌ʹཱͭͱ͜Ζ
Nightmareͱʁ
Nightmareͱʁ
Nightmareͱʁ • Node.jsϕʔεͷϔουϨεϒϥβ • ୯ମͰेʹe2eςετπʔϧͱͯ͠ར༻Մೳ • ݩʑPhantomJSͱ͍͏JSϥΠϒϥϦͷϥούʔ • ࠓElectronΛར༻͓ͯ͠Γɺ࠷৽ͷରԠόονϦ
Nightmareͱʁ • Node.jsϕʔεͷϔουϨεϒϥβ • ୯ମͰेʹe2eςετπʔϧͱͯ͠ར༻Մೳ • ݩʑPhantomJSͱ͍͏JSϥΠϒϥϦͷϥούʔ • ࠓElectronΛར༻͓ͯ͠Γɺ࠷৽ͷରԠόονϦ
Nightmareͱʁ • Node.jsϕʔεͷϔουϨεϒϥβ • ୯ମͰेʹe2eςετπʔϧͱͯ͠ར༻Մೳ • ݩʑPhantomJSͱ͍͏JSϥΠϒϥϦͷϥούʔ • ࠓElectronΛར༻͓ͯ͠Γɺ࠷৽ͷରԠόονϦ
Nightmareͱʁ • Node.jsϕʔεͷϔουϨεϒϥβ • ୯ମͰेʹe2eςετπʔϧͱͯ͠ར༻Մೳ • ݩʑPhantomJSͱ͍͏JSϥΠϒϥϦͷϥούʔ • ࠓElectronΛར༻͓ͯ͠Γɺ࠷৽ͷରԠόονϦ
e2eςετͱʁ
e2eςετͱʁ • γεςϜͷ͔Β·ͰΛཏతʹ֬ೝ͢Δςετͷ͜ ͱ • ઐ༻ͷe2eπʔϧϔουϨεϒϥβΛར༻͠ɺ୯Ұ ͷϓϩάϥϜͷI/O͚ͩͰͳ͘ɺ࣮ࡍͷΞϓϦέʔγϣ ϯΛಈ͔ͯ͠ਐΊ͍ͯ͘ • ॳΊͯͷόΠτઌͰΤΫηϧγʔτͰͬͯͨ
e2eςετͱʁ • γεςϜͷ͔Β·ͰΛཏతʹ֬ೝ͢Δςετͷ͜ ͱ • ઐ༻ͷe2eπʔϧϔουϨεϒϥβΛར༻͠ɺ୯Ұ ͷϓϩάϥϜͷI/O͚ͩͰͳ͘ɺ࣮ࡍͷΞϓϦέʔγϣ ϯΛಈ͔ͯ͠ਐΊ͍ͯ͘ • ॳΊͯͷόΠτઌͰΤΫηϧγʔτͰͬͯͨ
e2eςετͱʁ • γεςϜͷ͔Β·ͰΛཏతʹ֬ೝ͢Δςετͷ͜ ͱ • ઐ༻ͷe2eπʔϧϔουϨεϒϥβΛར༻͠ɺ୯Ұ ͷϓϩάϥϜͷI/O͚ͩͰͳ͘ɺ࣮ࡍͷΞϓϦέʔγϣ ϯΛಈ͔ͯ͠ਐΊ͍ͯ͘ • ॳΊͯͷόΠτઌͰΤΫηϧγʔτͰͬͯͨ
NightmareΛ͏ͱԿ͕Ͱ͖Δʁ
NightmareΛ͏ͱԿ͕Ͱ͖Δʁ
NightmareΛ͏ͱԿ͕Ͱ͖Δʁ • ϒϥβͰͰ͖Δૢ࡞શ͕ͯࣗಈԽͰ͖Δ • DOM͕ີʹؔΘΔ෦ͷςετ • ࣮ࡍͷૢ࡞ϑϩʔʹԠͨ͡ಈ࡞ςετ • ୯७ͳWebαΠτͰͷૢ࡞ͷࣗಈԽ
NightmareΛ͏ͱԿ͕Ͱ͖Δʁ • ϒϥβͰͰ͖Δૢ࡞શ͕ͯࣗಈԽͰ͖Δ • DOM͕ີʹؔΘΔ෦ͷςετ • ࣮ࡍͷૢ࡞ϑϩʔʹԠͨ͡ಈ࡞ςετ • ୯७ͳWebαΠτͰͷૢ࡞ͷࣗಈԽ
NightmareΛ͏ͱԿ͕Ͱ͖Δʁ • ϒϥβͰͰ͖Δૢ࡞શ͕ͯࣗಈԽͰ͖Δ • DOM͕ີʹؔΘΔ෦ͷςετ • ࣮ࡍͷૢ࡞ϑϩʔʹԠͨ͡ಈ࡞ςετ • ୯७ͳWebαΠτͰͷૢ࡞ͷࣗಈԽ
NightmareΛ͏ͱԿ͕Ͱ͖Δʁ • ϒϥβͰͰ͖Δૢ࡞શ͕ͯࣗಈԽͰ͖Δ • DOM͕ີʹؔΘΔ෦ͷςετ • ࣮ࡍͷૢ࡞ϑϩʔʹԠͨ͡ಈ࡞ςετ • WebαΠτͰͷ୯७ͳૢ࡞ͷࣗಈԽ
NightmareΛ͏ͱԿ͕Ͱ͖Δʁ DOM͕ີʹؔΘΔ෦ͷςετ DOM JavaScript DOM Event Event
NightmareΛ͏ͱԿ͕Ͱ͖Δʁ ࣮ࡍͷૢ࡞ϑϩʔʹԠͨ͡ಈ࡞ςετ Login Dashboard Post Event Event
࣮ࡍͬͯΈΔ
WordPressϓϥάΠϯ։ൃ࣌ʹ ཱͭͱ͜Ζ
WordPressϓϥάΠϯ։ൃ࣌ʹཱͭͱ͜Ζ • Θ͔Γ͍͢ಈ࡞͕ଟ͍ͷͰɺػցతʹνΣοΫ͠ ͯ࣌͘͢ʹͳ͔ͳ͔ྑ͍ • ͨͩɺPHP͕ϝΠϯͳ͚ͩ͋ͬͯɺJavaScriptΛத৺ͱ ͨ͠ͷΑΓԸܙ͕ബ͍ • εΫϦʔϯγϣοτͳΜ͔औΕΔͷͰɺެࣜʹ্͛Δ ͱ͖ʹͦͷ͋ͨΓศརʹར༻Ͱ͖Δ͔
WordPressϓϥάΠϯ։ൃ࣌ʹཱͭͱ͜Ζ • Θ͔Γ͍͢ಈ࡞͕ଟ͍ͷͰɺػցతʹνΣοΫ͠ ͯ࣌͘͢ʹͳ͔ͳ͔ྑ͍ • ͨͩɺPHP͕ϝΠϯͳ͚ͩ͋ͬͯɺJavaScriptΛத৺ͱ ͨ͠ͷΑΓԸܙ͕ബ͍ • εΫϦʔϯγϣοτͳΜ͔औΕΔͷͰɺެࣜʹ্͛Δ ͱ͖ʹͦͷ͋ͨΓศརʹར༻Ͱ͖Δ͔
WordPressϓϥάΠϯ։ൃ࣌ʹཱͭͱ͜Ζ • Θ͔Γ͍͢ಈ࡞͕ଟ͍ͷͰɺػցతʹνΣοΫ͠ ͯ࣌͘͢ʹͳ͔ͳ͔ྑ͍ • ͨͩɺPHP͕ϝΠϯͳ͚ͩ͋ͬͯɺJavaScriptΛத৺ͱ ͨ͠ͷΑΓԸܙ͕ബ͍ • εΫϦʔϯγϣοτͳΜ͔औΕΔͷͰɺެࣜʹ্͛Δ ͱ͖ʹͦͷ͋ͨΓศརʹར༻Ͱ͖Δ͔
NightmareΛͬͯΈͨॴײ(JSͷਓ͚)
NightmareΛͬͯΈͨॴײ • Node͔ͭಈ࡞ϒϥβ͕ChromiumϕʔεͳͷͰɺ ϞμϯJavaScriptΛଘʹͬͯॻ͘͜ͱ͕ग़དྷΔͷ ҹ • ͨͩɺੜͰಈ͔͢ʹmochaͳͲͷςεςΟϯάϑ ϨʔϜϫʔΫΛ͏߹ͰɺgeneratorͳͲͷ͕ࣝ ඞཁʹͳΔͷͰ୭Ͱѻ͍͍͔͢ͱ͍͑ඍົ
NightmareΛͬͯΈͨॴײ • Node͔ͭಈ࡞ϒϥβ͕ChromiumϕʔεͳͷͰɺ ϞμϯJavaScriptΛଘʹͬͯॻ͘͜ͱ͕ग़དྷΔͷ ҹ • ͨͩɺੜͰಈ͔͢ʹmochaͳͲͷςεςΟϯάϑ ϨʔϜϫʔΫΛ͏߹ͰɺgeneratorͳͲͷ͕ࣝ ඞཁʹͳΔͷͰ୭Ͱѻ͍͍͔͢ͱ͍͑ඍົ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠