The Ember Times - Issue No. 43

Ola Emberistas!

This week we try out another format for the newsletter and bring it right to the Ember blog - making it accessible to even more Ember enthusiasts in the community.

And this week we not only have news about the 2018 roadmap for Ember CLI for you, but also highlights from the latest Ember 3.1 release. Last but not least, a new Readers' Question about a neat new syntax feature is waiting for you.

Here's what's happened this week 🐹:

The Road Ahead for Ember CLI in 2018

This week the Ember CLI team has published their official roadmap for the command-line tool to keep the Ember community posted on which shiny new things might be landing in an Ember app near you soon.

The current project goals for 2018 include a dedicated transition story to Module Unification, enabling Treeshaking, adding service worker support to the blueprint of Ember apps by default and many other exciting topics.

You can read more about the roadmap on the Ember Forum and give your thoughts and suggestions in the discussion.

Time to get your Ember release the ES5 way

Ember Brand Logo

With Ember 3.1 you can now use ES5 getters to read the values from your computed properties since our target browsers support ES5 getters. The motivation is to improve developer ergonomics and interoperability with other tooling and libraries. For the property to recompute you still need to use this.set() or Ember.set().

Yet, this doesn’t mean that this.get() is now deprecated. There’s actually still a lot of cases where you should use this.get() instead of the ES5 getter. You can read all about it in the release post.

Read more

Say More

A new RFC (Request for Comments) by @jgwhite has landed, titled "Semantic Test Selectors." The motivation behind this RFC first appeared in his talk Say More at EmberConf 2018. The RFC describes, in 2 parts, how to write tests that "say more" about what the test is actually doing by writing less.

Essentially the RFC proposes using labels, rather than selectors, to interact with elements in tests. For example

await fillIn('.login-form .field-email', '');
await fillIn('.login-form .field-password', 'topsecret');
await click('.submit-btn');


await fillIn('Email', '');
await fillIn('Password', 'topsecret');
await click('Log in');

How do we get there? One way is accessibility. By delivering accessible, first-class Ember apps by default, you instantly have semantic access to elements because they are labeled in a meaningful way. As @jgwhite eloquently puts it

"If we want to access a UI element in a test, we do so as if we were using a screen reader."

Want to know more? The RFC is incredibly well written and it deserves a proper reading. Head over to RFC#327 to be part of an evolutionary way to test your Ember apps!

Learning Team happenings

Ember Twiddle now (finally!) uses Babel 6 instead of Babel 5 to transpile your code. Please encourage folks to test the canary so that any issues with Ember addons and existing twiddles might be found. Thanks for the update @Gaurav0!

The Learning Team merged a bunch of pull requests in emberjs/guides recently, many from first time contributors - thank you @sdhull. @rmminusrfslash, @karan-pathak and @chrisrng. The Learning Team is working on closing out outstanding issues and PRs on emberjs/guides in an effort to launch the built with Ember ember-learn/guides-app in its place! 🔜

We love Ember.js Times 😍

Do you? If so, contribute! The Ember Times is always looking for people to help spread the word about all things Ember. Drop by the Slack channel to say "hi!" and learn how to get started.

Ember CLI Update Updated 🐹 ⬆️

Ember CLI Update which last week was brought in under the official ember-cli GitHub organization has gotten an update. It now has two new commands that will help you keep your apps updated and using the latest and greatest in Emberland. These new commands are --dry-run and --list-codemods.

The first, --dry-run, will give you a quick explanation of what running the update will do. For example running

ember-cli-update --dry-run

on an app running Ember v2.15.1 would output: Would update from 2.15.1 to 3.1.2.

The second, --list-codemods, will give you a list of the available codemods along with more info about them.

Currently the codemods supported are: ember-modules-codemod, ember-qunit-codemod, ember-test-helpers-codemod, and es5-getter-ember-codemod. That last codemod helps your project use the native ES5 getters that were described up above.

A quick reminder that ember-cli-update has been accepted to be the official way to update Ember apps so if you aren't currently using it, now is a great time to start!

Contributor's Corner

Slack ⭐️

The Ember Times would like to give a shoutout to @runspired (Chris Thoburn), for being incredibly helpful and responsive in a majority of the Slack channels this last week by supporting community members migrate through the many versions of Ember data from 2.12 all the way to 3.2.0-beta.2.

Chris is a major contributor to the Ember ecosystem and to ember-data specifically. and shares his in-depth knowledge of ember-data internals to make it easier for everyone to understand why things work in a particular way and to also shed some light on how ember-data will work in the future. Thanks @runspired!

Readers' Questions: When and how will we be able to use decorators in Ember apps?

Office Hours Tomster Mascot

In this week's brand new Readers’ Question it's all about the new and cool and shiny that will be coming to your Ember apps soon: When will we be able to make use of the decorator syntax when writing Ember apps?

In his detailed write-up @pzuraq will answer everything you need to know about the current state of the decorators proposal itself and when you will be able to decorate your own application. Read the full answer on the offical Ember forum.

Read more

Submit your own short and sweet question under And don’t worry, there are no silly questions, we appreciate them all - promise! 🤞

That's another wrap! ✨

Be kind,

Kenneth Larsen, Chris Garrett, Sivakumar Kailasam, Alon Bukai, Amy Lam, Ryan Mark, Ricardo Mendes, Jessica Jordan and the Learning Team