The Ember Times - Issue No. 140

– By Chris Ng, Jesse Jordan, Isaac Lee, Amy Lam

👋 Emberistas! 🐹

Meet Ember 3.17 🆕, tell us about your EmberConf experience ❤️, read about testing best practices on the Ember Testing Guide 📗, comment on the co-located test RFC ⛓, embrace easier release management for your apps 📦🙌, learn how to add CI with GitHub Actions ✅, and respect the underscore 🙇.


Ember 3.17 released 🆕

On March 16—just in time for EmberConf!—Ember 3.17 was officially announced. This release marked Ember 3.16 as an LTS and kicked off the 3.18 beta cycle.

Ember 3.17 introduced these changes:

  • Ember.js
    • Significantly updated the Glimmer rendering engine
  • Ember CLI
    • Removed internal usage of RSVP in favor of native promises
    • Removed ember-cli-eslint and ember-cli-template-lint in favor of eslint and ember-template-lint
    • Ensured that npm test or yarn test fails when lint:js or lint:hbs fails
    • Ensured that npm test or yarn test in an addon fails if ember-try scenarios fail
    • Removed a number of older experiments (module unification and delayed transpilation)

To learn more about upgrading to Ember 3.17, please visit the Ember Blog. We encourage you to help test 3.17 and 3.18 beta and report any bugs. Thank you!


We want to hear from your EmberConf experience ❤️

This year's EmberConf featured 25+ remote presentations about the latest and greatest in JavaScript and Ember with Emberistas from all around the world - and the event was a huge success! In case you haven't had a chance to tune into the livestream this week already, be sure to catch up on the recordings for day 1 (part 1 + part 2) and day 2 (part 1 + part 2) of the conference.

Check out all the related resources for the talks in the conference notes by Alex DiLiberto (@alexdiliberto). Also, stay tuned and follow the EmberConf Twitter account to not miss out on the exclusive BonusConf sessions, which will be released over the next couple of days!

Last, but not least, we have one request for those of you who attended EmberConf 2020:

Tell us about someone new that you got to chat with at the virtual conf!

Let us know about your answer to this question either by tweeting us via Twitter using the hashtag #EmberConFriends or as a message on the Ember Discord in the #support-ember-times channel. We will raffle an exclusive EmberConf retro sticker set among all story writers by April 6, 2020. We're looking forward to hear from you and happy catching up on virtual EmberConf!


Ember Testing Guide v1 📗

Dawid Pośliński (@PoslinskiNet) wrote about testing best practices and which addons to use in the newly released Ember Testing Guide v1. The testing guide goes through why we need tests to begin with. What benefits does testing give us and what gaps are still present.

Following that, the testing guide discusses best practices in how we architect our testing code. It also goes through how to use the right kind of test. Should the test be unit, integration, acceptance, visual regression, or even manual? These principles are the building blocks to constructing effective tests.

Finally the guide goes through all the best addons available today and how to use them in testing your application with examples from qunit-dom, ember-test-selectors, ember-cli-timecop, ember-a11y-testing, ember-percy and many more!

Check it out as a free eBook, on GitHub, or as a PDF!


Coupling concerns with co-located tests ⛓

The conventional file layout of Ember apps has undergone a few changes throughout the years. Besides the classic file layout, users have also been able to opt-in to the pods layout for a while. And while pre-v3.13 Ember users were modifying component templates and .js files in two different directories, they recently got the chance to work on component files side-by-side after the implementation of the component template co-location RFC.

Another, recent RFC wants to take the principle of co-location even a step further: it proposes that test files, e.g. those for rendering tests of a component, should be co-located right next to the respective component class and template files. Beyond that, the proposal suggests a similar co-location pattern for unit tests of related routes and controllers, too - with the motivation to improve the discoverability of tests for application developers.

Ready to learn more about how this could be implemented? Be sure to read the full proposal and to leave your thoughts or questions in the comments below!


Make your dream of smooth releases come true 📦🙌

Who doesn't dream of easy-peasy releases? Let straightforward publishing workflows become your new reality with create-rwjblue-release-it-setup. Leveraging the tools from the popular library release-it, it allows you to setup your project swiftly for automated versioning and package publishing.

Make your dream of easier release management come true with one single npm command:

npm init rwjblue-release-it-setup

…or a yarn command for that matter:

yarn create rwjblue-release-it-setup

Check out the v2 release page to learn more about all the latest features and improvements and happy publishing!


CI with GitHub Actions for Ember apps ✅

Continuous integration (CI) and continuous deployment may be skills that you get to practice maybe once on a production app, depending on your job title. But the truth is, you can practice them (ahem) continuously at an early stage for any app, no matter who you are. 💗

You might then ask, where can I learn how to add CI to my Ember app? Are there cool things that I can do because I have an Ember app?

In his blog post, Isaac Lee (@ijlee2) shows step-by-step how you can write a GitHub Actions workflow. Thanks to Ember's addon ecosystem, you can:

  • Cache dependencies (avoid yarn/npm install)
  • Lint files and dependencies
  • Run tests separately from linting
  • Split tests and run in parallel
  • Take Percy snapshots in parallel

If you wanted to solve these problems or needed a reference code, look no further! Feedback is always welcome (you can DM @ijlee2 on Discord).


Respect the underscore 🙇

Steven Elberger (@StevenElberger)'s blog post, "Respect the Underscore," is a fantastic example of what you can practice as a developer: Document your bug for posterity, especially if it failed your app or test suite in a catastrophic manner.

Here are some questions that you and your team can address:

  • When did you first notice the bug?
  • Which features or upgrades were recently worked on?
  • What did you think caused the bug?
  • How did you eliminate some of the possibilities?
  • What did you do to fix the bug?

Because Steven's writing excellently builds suspense, we won't dare spoil the twists and ending here. Instead, we encourage you to check out the post!


Contributors' corner 👏

This week we'd like to thank @kratiahuja, @bobisjan, @nummi, @rwwagner90, @rwjblue, @Gaurav0, @Aswathprabhu, @skaterdav85, @jenweber and @laurmurclar for their contributions to Ember and related repositories! 💖


Got a question? Ask readers' questions! 🤓

Office Hours Tomster Mascot

Wondering about something related to Ember, Ember Data, Glimmer, or addons in the Ember ecosystem, but don't know where to ask? Readers’ Questions are just for you!

Submit your own short and sweet question under bit.ly/ask-ember-core. And don’t worry, there are no silly questions, we appreciate them all - promise! 🤞


#embertimes 📰

Want to write for the Ember Times? Have a suggestion for next week's issue? Join us at #support-ember-times on the Ember Community Discord or ping us @embertimes on Twitter.

Keep on top of what's been going on in Emberland this week by subscribing to our e-mail newsletter! You can also find our posts on the Ember blog.


That's another wrap! ✨

Be kind,

Chris Ng, Jessica Jordan, Isaac Lee, Amy Lam and the Learning Team