Published: Nov. 27, 2018, 11 a.m.
Panel:\xa0
- Aimee Knight
- AJ O\u2019Neal
- Charles Max Wood
Special Guest:
Gil Tayar In this episode, the panel talks with
Gil Tayar who is currently residing in Tel Aviv and is a software engineer. He is currently the Senior Architect at
Applitools in Israel. The panel and the guest talk about the different types of tests and when/how one is to use a certain test in a particular situation. They also mention Node, React, Selenium, Puppeteer, and much more!Show Topics:0:00 \u2013
Advertisement: KENDO UI 0:35 \u2013 Chuck: Our panel is AJ, Aimee, myself \u2013 and our special guest is Gil Tayar. Tell us why you are famous!1:13 \u2013
Gil talks about where he resides and his background.\xa02:27 \u2013 Chuck: What is the landscape like now with testing and testing tools now?2:39 \u2013 Guest: There is a huge renaissance with the JavaScript community. Testing has moved forward in the frontend and backend. Today we have lots of testing tools.\xa0 We can do frontend testing that wasn\u2019t possible 5 years ago. The major change was React.The guest talks about Node, React, tools, and more!4:17 \u2013 Aimee: I advocate for tests and testing. There is a grey area though...how do you treat that? If you have to get something into production, but it\u2019s not THE thing to get into production, does that fall into product or...what?5:02 \u2013 Guest: We decided to test everything in the beginning. We actually cam through and did that and since then I don\u2019t think I can use the right code without testing. There are a lot of different situations, though, to consider.The guest gives hypothetical situations that people could face.\xa06:27 \u2013 Aimee.6:32 \u2013 Guest: The horror to changing code without tests, I don\u2019t know, I haven\u2019t done that for a while. You write with fear in your heart. Your design is driven by fear, and not what you think is right. In the beginning don\u2019t write those tests, but...7:22 \u2013 Aimee: I totally agree and I could go on and on and on.7:42 \u2013 Panel: I want to do tests when I know they will create value. I don\u2019t want to do it b/c it\u2019s a mundane thing. Secondly, I find that some times I am in a situation where I cannot write the test b/c I would have to know the business logic is correct. I am in this discovery mode of what is the business logic? I am not just building your app.I guess I just need advice in this area, I guess.8:55 \u2013 Guest gives advice to panelist\u2019s question. He mentions how there are two schools of thought.10:20 \u2013 Guest: Don\u2019t mock too much.10:54 \u2013 Panel: Are unit tests the easiest? I just reach for unit testing b/c it helps me code faster. But 90% of my code is NOT that.11:18 \u2013 Guest: Exactly! Most of our test is glue \u2013 gluing together a bunch of different stuff! Those are best tested as a medium-sized integration suite.12:39 \u2013 Panel: That seems like a lot of work, though! I loathe the database stuff b/c they don\u2019t map cleanly. I hate this database stuff.13:06 \u2013 Guest: I agree, but don\u2019t knock the database, but knock the level above the database.13:49 \u2013 Guest: Yes, it takes time! Building the script and the testing tools, but when you have it then adding to it is zero time. Once you are in the air it\u2019s smooth sailing.14:17 \u2013 Panel: I guess I can see that. I like to do the dumb-way the first time. I am not clear on the transition.14:47 \u2013 Guest: Write the code, and then write the tests.The guest gives a hypothetical situation on how/when to test in a certain situation.\xa016:25 \u2013 Panel: Can you talk about that more, please?16:50 \u2013 Guest: Don\u2019t have the same unit \u2013 do browser and business logic stuff separated. The real business logic stuff needs to be above that level. First principle is separation of concerns.18:04 \u2013 Panel talks about dependency interjection and asks a question.\xa0 18:27 \u2013 Guest: What I am talking about very, very light inter-dependency interjection.19:19 \u2013 Panel: You have a main function and you are doing requires in the main function. You are passing the pieces of that into the components that need it.19:44 \u2013 Guest: I only do it when it\u2019s necessary; it\u2019s not a religion for me. I do it only for those layers that I know will need to be mocked; like database layers, etc.20:09 \u2013 Panel.20:19 \u2013 Guest: It\u2019s taken me 80 years to figure out, but I have made plenty of mistakes a long the way. A test should run for 2-5 minutes max for package.20:53 \u2013 Panel: What if you have a really messy legacy system? How do you recommend going into that? Do you write tests for things that you think needs to get tested?21:39 \u2013 Guest answers the question and mentions
Selenium! 24:27 \u2013 Panel: I like that approach.24:35 \u2013 Chuck: When you say integration test what do you mean?24:44 \u2013 Guest: Integration tests aren\u2019t usually talked about. For most people it\u2019s tests that test the database level against the database. For me, the integration tests are taking a set of classes as they are in the application and testing them together w/o the...so they can run in millisecond time.26:54 \u2013
Advertisement \u2013 Sentry.io 27:52 \u2013 Chuck: How much do the tools matter?28:01 \u2013 Guest: The revolutions matter. Whether you use Jasmine or Mocha or whatever I don\u2019t think it matters. The tests matter not the tools.28:39 \u2013 Aimee: Yes and no. I think some tools are outdated.28:50 \u2013 Guest: I got a lot of flack about
my blog where I talk about
Cypress versus
Selenium. I will never use Jasmine. In the end it\u2019s the29:29 \u2013 Aimee: I am curious would you be willing to expand on what the
Selenium folks were saying about Puppeteer and others may not provide?29:54 \u2013 Guest:
Cypress was built for frontend developers. They don\u2019t care about cross browser, and they tested in Chrome. Most browsers are typically the same.
Selenium was built with the QA mindset \u2013 end to end tests that we need to do cross browser.The guest continues with this topic.30:54 \u2013 Aimee mentions
Cypress. 31:08 \u2013 Guest: My guessing is that their priority is not there. I kind of agree with them.31:21 \u2013 Aimee: I think they are focusing on mobile more.31:24 \u2013 Guest: I think cross browser testing is less of an issue now. There is one area that is important it\u2019s the visual area! It\u2019s important to test visually across these different browsers.32:32 \u2013 Guest:
Selenium is a Swiss knife \u2013 it can do everything.33:32 \u2013 Chuck: I am thinking about different topics to talk about. I haven\u2019t used Puppeteer. What\u2019s that about?33:49 \u2013 Guest:
Puppeteer is much more like
Selenium. The reason why it\u2019s great is b/c
Puppeteer will always be
Google Chrome. 35:42 \u2013 Chuck: When should you be running your tests? I like to use some unit tests when I am doing my development but how do you break that down?36:06 \u2013 Guest.38:30 \u2013 Chuck: You run tests against production?38:45 \u2013 Guest: Don\u2019t run tests against production...let me clarify!39:14 \u2013 Chuck.39:21 \u2013 Guest: When I am talking about integration testing in the backend...40:37 \u2013 Chuck asks a question. 40:47 \u2013 Guest: I am constantly running between frontend and backend.I didn\u2019t know how to run tests for frontend. I had to invent a new thing and I \u201cinvented\u201d the package JS DONG. It\u2019s an implementation of Dong in Node. I found out that I wasn\u2019t the only one and that there were others out there, too.43:14 \u2013 Chuck: Nice! You talked in the prep docs that you urged a new frontend developer to not run the app in the browser for 2 months?43:25 \u2013 Guest: Yeah, I found out that she was running the application...she said she knew how to write tests. I wanted her to see it my way and it probably was a radical train-of-thought, and that was this...44:40 \u2013 Guest: Frontend is so visual.45:12 \u2013 Chuck: What are you working on now?45:16 \u2013 Guest: I am working with
Applitools and I was impressed with what they were doing.The guest goes into further detail.46:08 \u2013 Guest: Those screenshots are never the same.48:36 \u2013 Panel: It\u2019s...comparing the output to the static site to the...48:50 \u2013 Guest: Yes, that static site \u2013 if you have 30 pages in your app \u2013 most of those are the same. We have this trick where we don\u2019t upload it again and again. Uploading the whole static site is usually very quick. The second thing is we don\u2019t wait for the results. We don\u2019t wait for the whole rendering and we continue with the
Become a supporter of this podcast:
https://www.spreaker.com/podcast/javascript-jabber--6102064/support.