-
-
Notifications
You must be signed in to change notification settings - Fork 407
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add new QUnit testing API. #232
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❤️
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall, big 👍 on this RFC. A few nitty comments to ensure clarity while reading.
One thing that did strike me, that I feels needs to be better highlighted, is that the actual testing context API is changing as well as the test module setup API. The motivation mentions changes to moduleFor
but doesn't call out that other APIs will also change (e.g., this.subject
-> this.owner.lookup
), which I think is rather critical because it makes migration less straightforward.
* Where are the lines between QUnit and ember-qunit? | ||
* How can I use QUnit for plain JS objects? | ||
|
||
The way that `ember-qunit` uses to wrap QUnit functionality makes the division |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: "ember-qunit
uses to wrap QUnit" should likely be "ember-qunit
wraps QUnit"
|
||
This function will: | ||
|
||
* invoking `ember-test-helper`s `setContext` with the tests context |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: "invoking" -> "invoke"
The migration can likely be largely automated (following the | ||
[excellent codemod](https://github.com/Turbo87/ember-mocha-codemods) that | ||
[Tobias Bieniek](https://github.com/turbo87) wrote for a similar `ember-mocha` | ||
the transition), for folks but it is still useful to review concrete scenarios |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: "for folks" seems unneeded here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
few minor comments, but in general : yes, please!! 👍
test('renders', async function(assert) { | ||
assert.expect(1); | ||
|
||
await this.render(hbs`{{pretty-color name="red"}}`); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since when is this.render() async? What if the platform doesn't support async/await yet?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since when is this.render() async?
Rendering a template has actually never been guaranteed to be synchronous. Future iterations of things in glimmer-vm will almost certainly take more advantage of async during rendering to allow the rendering engine to yield back to the browser to avoid blocking the main thread. Making this.render
be a promise based API is a way to help ensure a change (that would help all apps in reality) doesn't troll all of our tests.
What if the platform doesn't support async/await yet?
Seems unrelated? The underlying implementation will be returning a promise. If the consuming application doesn't want to use async
/await
it would use promise chaining.
test('renders', async function(assert) {
assert.expect(1);
return this.render(hbs`{{pretty-color name="red"}}`)
.then(() => {
assert.equal(this.$('.color-name').text(), 'red');
});
});
import hbs from 'htmlbars-inline-precompile'; | ||
|
||
module('x-foo', function(hooks) { | ||
setupRenderingTest(hooks); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IMHO we should pass the component name to the setup function here instead of relying on the module name, which seems a little brittle
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The component name is completely unused/unneeded without needs
/unit
options (which this API will not support). There is no reliance on the module name at all either.
import { setupTest } from 'ember-qunit'; | ||
|
||
module('x-foo', function(hooks) { | ||
setupTest(hooks); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same as above. how does setupTest() know that we're talking about a component and what its name is?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It doesn't matter at all actually. Thats the beauty of removing the arbitrary resolver restrictions (in #229).
There will be a number of changes to the primitives in ember-test-helpers
to support this nicely (for both ember-mocha
and ember-qunit
).
let Factory = this.owner.factoryFor('component:x-foo'); | ||
let subject = Factory.create({ | ||
name: 'something' | ||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No this.subject() anymore?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, we have a public API for looking up and instantiating factories (factoryFor
), which is polyfilled nicely via ember-getowner-polyfill
and ember-factory-for-polyfill
.
Removing this.subject
and the unit
/ needs
options is how we avoid requiring the extra arguments to setupTest
.
* ember-source | ||
* ember-data | ||
* ember-cli-legacy-blueprints | ||
* others? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might be worth mentioning that we are already doing the same thing for ember-mocha too
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great point, updated!
The work around is "simple" (if somewhat annoying), which is to "just nest another | ||
level". The good news is that [Trent Willis](https://github.com/trentwillis) fixed | ||
the underlying problem in [qunitjs/qunit#1188](https://github.com/qunitjs/qunit/pull/1188), | ||
which should be released as 2.3.4 well before this RFC is merged. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
so this is actually not an issue since we can just bump the QUnit dependency in ember-qunit right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Confirm. I've spoken to @trentmwillis about it also, and I believe there shouldn't be a problem with getting a release out by the time this RFC is ready to be merged (which is a week or two at the minimum).
} | ||
``` | ||
|
||
### `setupTest` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's unclear to me how setupTest
, etc. will be able to access the tests' this
when we are only passing in the hooks object. To illustrate what I'm talking about, this is what I am doing in Glimmer:
function setupRenderingTest(context, hooks) {
context.render = function render(/* not important */) {
// ...
};
// ...
}
module('Component: <hello-glimmer />', function(hooks) {
setupRenderingTest(this, hooks);
test('it renders', assert => {
// ...
});
});
Basically just wondering if the setupTest(hooks)
signature is realistic or if it's going to need to be setupTest(this, hooks)
. Or maybe this is a detail beyond the scope of this RFC.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@robbiepitts - A basic implementation of this API is already done (see here), and does function properly without the context being passed in. I believe that the signature proposed here is realistic.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ohhh, cool. I didn't think of doing it that way.
|
||
This makes it much simpler to support multiple `before`, `beforeEach`, `afterEach`, | ||
and `after` callbacks, and it also allows for arbitrary nesting of modules (though | ||
this RFC is not advocating for arbitrary levels of nesting). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nested hooks would be amazing for more complex components / routes / whatever.
An example would be a route that has different behavior for "admin" users. Both of them need some similar setup (e.g. setting up mirage), but the two different "nested" modules could authenticate two different users - one admin and one not.
Currently not supporting nested modules is a bit of a pain point for our current apps, and I would love to have the ability to nest modules. What would be the blocker for supporting this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll try to update the wording to be a bit more clear. What I'm saying is that this RFC isn't saying that you must use multiple levels of nesting (that seems like an application level stylistic choice), but it is requiring that we use the nested modules syntax even if only using a single level.
This RFC proposal (and the spike implementation done in emberjs/ember-qunit#258) would fully support QUnit nested modules.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I removed the wishy washy language around arbitrarily nesting modules. 💃
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yessssss.... 😄 Very excited about this 👍
Good points! I've just added a section to specifically call out significant changes from the current system. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hugely excited for this: 👍
A few folks (e.g. @ebryn and @stefanpenner) have approached me with concerns around the The main concerns as I understood it are:
I've kicked off a conversation over with the QUnit folks in qunitjs/qunit#1200. If that PR were merged this proposal would be modified to the following syntax: // current proposal
module('x-foo', function(hooks) {
setupRenderingTest(hooks);
// ....snip....
});
// after qunitjs/qunit#1200
module('x-foo', function(hooks) {
setupRenderingTest(this);
// ....snip....
}); I will update the RFC to list this as an unanswered question, but I personally do not find this to be a blocking issue (we'll see how others feel). This RFC is mostly just leveraging what the underlying test framework has to offer (which is one of the primary objectives in the motivation section). |
@rwjblue I'm not sure I understand that last comment about hooks properly yet. In |
Yep, I absolutely understand how it works in |
Another possible mitigation to the strangeness of the word This would change the examples here in this RFC to be: module('x-foo', function(module) {
setupRenderingTest(module);
// ....snip....
}); The mental model here would be:
tldr; I think |
This was discussed at the 2017-06-30 core team meeting, and given that the responses by folks are overwhelmingly positive it is ready to advance to final comment period. |
QUnit 2.4.0 was just released (thanks @trentmwillis!) which includes the required changes to enable this API. |
No new information was identified during final comment period, thanks to everyone for the detailed review and help working through this. Let's get it done! |
As of [email protected] (and [email protected]) the testing blueprints are automatically emitting emberjs/rfcs#232 or emberjs/rfcs#268 compatible output. With those, these helpers are no longer used for new apps. Existing apps should only delete these files once they have migrated to the new testing system...
As of [email protected] (and [email protected]) the testing blueprints are automatically emitting emberjs/rfcs#232 or emberjs/rfcs#268 compatible output. With those, these helpers are no longer used for new apps. Existing apps should only delete these files once they have migrated to the new testing system...
As of [email protected] (and [email protected]) the testing blueprints are automatically emitting emberjs/rfcs#232 or emberjs/rfcs#268 compatible output. With those, these helpers are no longer used for new apps. Existing apps should only delete these files once they have migrated to the new testing system...
As of [email protected] (and [email protected]) the testing blueprints are automatically emitting emberjs/rfcs#232 or emberjs/rfcs#268 compatible output. With those, these helpers are no longer used for new apps. Existing apps should only delete these files once they have migrated to the new testing system...
As of [email protected] (and [email protected]) the testing blueprints are automatically emitting emberjs/rfcs#232 or emberjs/rfcs#268 compatible output. With those, these helpers are no longer used for new apps. Existing apps should only delete these files once they have migrated to the new testing system...
As of Ember 3.0 the new testing APIs introduced in emberjs/rfcs#232 and emberjs/rfcs#268 are enabled and used by default. In these APIs no globals are used, therefore this extra `tests/` override is removed. This specifically removes the following globals from being allowed: * `andThen` * `click` * `currentPath` * `currentRouteName` * `currentURL` * `fillIn` * `find` * `findWithAssert` * `keyEvent` * `pauseTest` * `resumeTest` * `triggerEvent` * `visit` * `wait`
As of Ember 3.0 the new testing APIs introduced in emberjs/rfcs#232 and emberjs/rfcs#268 are enabled and used by default. In these APIs no globals are used, therefore this extra `tests/` override is removed. This specifically removes the following globals from being allowed: * `andThen` * `click` * `currentPath` * `currentRouteName` * `currentURL` * `fillIn` * `find` * `findWithAssert` * `keyEvent` * `pauseTest` * `resumeTest` * `triggerEvent` * `visit` * `wait`
* updated packages and ember-cli-deploy (cherry picked from commit e4042d8) * Bring back `.env.example`. * Update ember-cli from 2.14 to 2.18 blueprint. * Remove bower and phantom references. * Fix linting failures after eslint config updates. * yarn upgrade * Loosen dependencies (all use `^` now). * Update ember-moment and ember-cli-moment-shim to latest. * Remove legacy zeroclipboard app.imports. * Use `--no-sandbox` flag with Chrome on CI. * Update tests to emberjs/rfcs#232 format.
As of [email protected] (and [email protected]) the testing blueprints are automatically emitting emberjs/rfcs#232 or emberjs/rfcs#268 compatible output. With those, these helpers are no longer used for new apps. Existing apps should only delete these files once they have migrated to the new testing system...
As of Ember 3.0 the new testing APIs introduced in emberjs/rfcs#232 and emberjs/rfcs#268 are enabled and used by default. In these APIs no globals are used, therefore this extra `tests/` override is removed. This specifically removes the following globals from being allowed: * `andThen` * `click` * `currentPath` * `currentRouteName` * `currentURL` * `fillIn` * `find` * `findWithAssert` * `keyEvent` * `pauseTest` * `resumeTest` * `triggerEvent` * `visit` * `wait`
What's new: updating the old moduleFor syntax to the newer syntax (used in Ember 3.0) as proposed in emberjs/rfcs#232 Tests: All tests still passing 268/268
What's new: updating the old moduleFor syntax to the newer syntax (used in Ember 3.0) as proposed in emberjs/rfcs#232 Tests: All tests still passing 268/268
Bumps [ember-source](https://github.com/emberjs/ember.js) from 2.18.2 to 3.5.0. <details> <summary>Release notes</summary> *Sourced from [ember-source's releases](https://github.com/emberjs/ember.js/releases).* > ## v3.5.0 > ### CHANGELOG > > - [#16978](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16978) [BUGFIX] Properly teardown alias > - [#16877](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16877) [CLEANUP] Allow routes to be named "array" and "object" > > ## v3.5.0-beta.4 > ### CHANGELOG > > - [#17003](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17003) / [#17013](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17013) [BUGFIX] Fix rendering of empty content with `{{{...}}}` or `{{...}}` with `htmlSafe('')` > > ## v3.5.0-beta.3 > ### CHANGELOG > > - [#16978](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16978) [BUGFIX] Properly teardown alias > - [#16999](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16999) [BUGFIX] Fix mouseEnter/Leave event delegation w/o jQuery > > ## v3.5.0-beta.2 > ### CHANGELOG > > - [#16933](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16933) [BUGFIX] Update glimmer-vm packages to 0.38.8 > - [#16860](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16860) [BUGFIX] Clear chains in ProxyMixin when destroyed > > ## v3.5.0-beta.1 > ### CHANGELOG > > - [#16877](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16877) [CLEANUP] Allow routes to be named "array" and "object" > - [#16907](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16907) Upgrade to TypeScript 3.0 > > ## v3.4.5 > ### CHANGELOG > > - [#17029](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17029) [BUGFIX] Update backburner.js to 2.4.0. > > ## v3.4.4 > ### CHANGELOG > > - [#17013](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17013) [BUGFIX] Fix rendering of empty content with `{{{...}}}` or `{{...}}` with `htmlSafe('')` in IE11 > > ## v3.4.3 > ### CHANGELOG > > - [#17003](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17003) [BUGFIX] Fix rendering of empty content with `{{{...}}}` or `{{...}}` with `htmlSafe('')` > > ## v3.4.2 > ### CHANGELOG > > - [#16860](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16860) [BUGFIX] Clear chains in ProxyMixin when destroyed > - [#16999](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16999) [BUGFIX] Fix mouseEnter/Leave event delegation without jQuery > ></table> ... (truncated) </details> <details> <summary>Changelog</summary> *Sourced from [ember-source's changelog](https://github.com/emberjs/ember.js/blob/master/CHANGELOG.md).* > ### v3.5.0 (October 8, 2018) > > - [#16978](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16978) [BUGFIX] Properly teardown alias > - [#16877](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16877) [CLEANUP] Allow routes to be named "array" and "object" > > ### v3.4.5 (October 4, 2018) > > - [#17029](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17029) [BUGFIX] Update backburner.js to 2.4.0. > > ### v3.4.4 (September 27, 2018) > > - [#17013](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17013) [BUGFIX] Fix rendering of empty content with `{{{...}}}` or `{{...}}` with `htmlSafe('')` in IE11 > > ### v3.4.3 (September 25, 2018) > > - [#17003](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17003) [BUGFIX] Fix rendering of empty content with `{{{...}}}` or `{{...}}` with `htmlSafe('')` > > ### v3.4.2 (September 24, 2018) > > - [#16860](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16860) [BUGFIX] Clear chains in ProxyMixin when destroyed > - [#16999](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16999) [BUGFIX] Fix mouseEnter/Leave event delegation without jQuery > > ### v3.4.1 (September 10, 2018) > > - [#16933](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16933) [BUGFIX] Update glimmer-vm packages to 0.35.8 > > ### v3.4.0 (August 27, 2018) > > - [#16603](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16603) [BUGFIX] Support mouseEnter/Leave events w/o jQuery > - [#16857](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16857) [BUGFIX] Prevents the recursive redefinition of root chains > - [#16854](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16854) [BUGFIX] Don't thread FactoryManager through createComponent > - [#16773](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16773) [FEATURE] Custom component manager (see [emberjs/rfcs#213](https://github.com/emberjs/rfcs/blob/master/text/0213-custom-components.md) for more details) > - [#16708](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16708) [FEATURE] Angle bracket component invocation (see [emberjs/rfcs#311](https://github.com/emberjs/rfcs/blob/master/text/0311-angle-bracket-invocation.md) for more details) > - [#16744](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16744) [DEPRECATION] Deprecate `component#sendAction` (see [emberjs/rfcs#335](https://github.com/emberjs/rfcs/blob/master/text/0335-deprecate-send-action.md) for more details) > - [#16720](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16720) Upgrade `backburner.js` to 2.3.0 > - [#16783](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16783) [BUGFIX] Allow setting length on ArrayProxy. > - [#16785](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16785) [BUGFIX] Ensure `ArrayMixin#invoke` returns an Ember.A. > - [#16784](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16784) [BUGFIX] Setting ArrayProxy#content in willDestroy resets length. > - [#16794](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16794) [BUGFIX] Fix instance-initializer-test blueprint for new QUnit testing API ([emberjs/rfcs#232](https://github-redirect.dependabot.com/emberjs/rfcs/pull/232)) > - [#16797](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16797) [BUGFIX] Drop autorun assertion > > ### v3.3.2 (August 20, 2018) > > - [#16853](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16853) [BUGFIX] Allow ArrayProxy#pushObjects to accept ArrayProxy again > - [#16870](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16870) [BUGFIX] Enable @ember/object#get to be called with an empty string > > ### v3.3.1 (July 23, 2018) > > - [#16836](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16836/commits) [DOC] Fix Broken 3.3 API Documentation > ></table> ... (truncated) </details> <details> <summary>Commits</summary> - [`db6a5de`](emberjs/ember.js@db6a5de) Release v3.5.0 - [`cae13d4`](emberjs/ember.js@cae13d4) Add v3.5.0 to CHANGELOG - [`5da9996`](emberjs/ember.js@5da9996) Fix typo on line 75 - [`b41d933`](emberjs/ember.js@b41d933) Fixup CHANGELOG - [`48ad148`](emberjs/ember.js@48ad148) Add v3.4.5 to CHANGELOG - [`d37a42e`](emberjs/ember.js@d37a42e) Release v3.5.0-beta.4 - [`942fdb7`](emberjs/ember.js@942fdb7) Add v3.5.0-beta.4 to CHANGELOG - [`16225e8`](emberjs/ember.js@16225e8) [DOC RELEASE] [DOC 3.3] [DOC 3.4] Fix missing docs - [`e90e1c6`](emberjs/ember.js@e90e1c6) Fix rendering of empty content with `{{{...}}}` in IE11 - [`d752b94`](emberjs/ember.js@d752b94) Merge pull request [#17004](https://github-redirect.dependabot.com/emberjs/ember.js/issues/17004) from emberjs/beta-triple-curlies-bugfix - Additional commits viewable in [compare view](emberjs/ember.js@v2.18.2...v3.5.0) </details> <br /> [![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=ember-source&package-manager=npm_and_yarn&previous-version=2.18.2&new-version=3.5.0)](https://dependabot.com/compatibility-score.html?dependency-name=ember-source&package-manager=npm_and_yarn&previous-version=2.18.2&new-version=3.5.0) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. Dependabot will **not** automatically merge this PR because it includes a major update to a development dependency. --- **Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit. You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com). <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Automerge options (never/patch/minor, and dev/runtime dependencies) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired) Finally, you can contact us by mentioning @dependabot. </details>
Bumps [ember-source](https://github.com/emberjs/ember.js) from 2.18.2 to 3.5.0. <details> <summary>Release notes</summary> *Sourced from [ember-source's releases](https://github.com/emberjs/ember.js/releases).* > ## v3.5.0 > ### CHANGELOG > > - [#16978](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16978) [BUGFIX] Properly teardown alias > - [#16877](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16877) [CLEANUP] Allow routes to be named "array" and "object" > > ## v3.5.0-beta.4 > ### CHANGELOG > > - [#17003](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17003) / [#17013](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17013) [BUGFIX] Fix rendering of empty content with `{{{...}}}` or `{{...}}` with `htmlSafe('')` > > ## v3.5.0-beta.3 > ### CHANGELOG > > - [#16978](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16978) [BUGFIX] Properly teardown alias > - [#16999](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16999) [BUGFIX] Fix mouseEnter/Leave event delegation w/o jQuery > > ## v3.5.0-beta.2 > ### CHANGELOG > > - [#16933](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16933) [BUGFIX] Update glimmer-vm packages to 0.38.8 > - [#16860](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16860) [BUGFIX] Clear chains in ProxyMixin when destroyed > > ## v3.5.0-beta.1 > ### CHANGELOG > > - [#16877](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16877) [CLEANUP] Allow routes to be named "array" and "object" > - [#16907](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16907) Upgrade to TypeScript 3.0 > > ## v3.4.5 > ### CHANGELOG > > - [#17029](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17029) [BUGFIX] Update backburner.js to 2.4.0. > > ## v3.4.4 > ### CHANGELOG > > - [#17013](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17013) [BUGFIX] Fix rendering of empty content with `{{{...}}}` or `{{...}}` with `htmlSafe('')` in IE11 > > ## v3.4.3 > ### CHANGELOG > > - [#17003](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17003) [BUGFIX] Fix rendering of empty content with `{{{...}}}` or `{{...}}` with `htmlSafe('')` > > ## v3.4.2 > ### CHANGELOG > > - [#16860](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16860) [BUGFIX] Clear chains in ProxyMixin when destroyed > - [#16999](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16999) [BUGFIX] Fix mouseEnter/Leave event delegation without jQuery > ></table> ... (truncated) </details> <details> <summary>Changelog</summary> *Sourced from [ember-source's changelog](https://github.com/emberjs/ember.js/blob/master/CHANGELOG.md).* > ### v3.5.0 (October 8, 2018) > > - [#16978](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16978) [BUGFIX] Properly teardown alias > - [#16877](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16877) [CLEANUP] Allow routes to be named "array" and "object" > > ### v3.4.5 (October 4, 2018) > > - [#17029](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17029) [BUGFIX] Update backburner.js to 2.4.0. > > ### v3.4.4 (September 27, 2018) > > - [#17013](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17013) [BUGFIX] Fix rendering of empty content with `{{{...}}}` or `{{...}}` with `htmlSafe('')` in IE11 > > ### v3.4.3 (September 25, 2018) > > - [#17003](https://github-redirect.dependabot.com/emberjs/ember.js/pull/17003) [BUGFIX] Fix rendering of empty content with `{{{...}}}` or `{{...}}` with `htmlSafe('')` > > ### v3.4.2 (September 24, 2018) > > - [#16860](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16860) [BUGFIX] Clear chains in ProxyMixin when destroyed > - [#16999](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16999) [BUGFIX] Fix mouseEnter/Leave event delegation without jQuery > > ### v3.4.1 (September 10, 2018) > > - [#16933](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16933) [BUGFIX] Update glimmer-vm packages to 0.35.8 > > ### v3.4.0 (August 27, 2018) > > - [#16603](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16603) [BUGFIX] Support mouseEnter/Leave events w/o jQuery > - [#16857](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16857) [BUGFIX] Prevents the recursive redefinition of root chains > - [#16854](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16854) [BUGFIX] Don't thread FactoryManager through createComponent > - [#16773](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16773) [FEATURE] Custom component manager (see [emberjs/rfcs#213](https://github.com/emberjs/rfcs/blob/master/text/0213-custom-components.md) for more details) > - [#16708](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16708) [FEATURE] Angle bracket component invocation (see [emberjs/rfcs#311](https://github.com/emberjs/rfcs/blob/master/text/0311-angle-bracket-invocation.md) for more details) > - [#16744](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16744) [DEPRECATION] Deprecate `component#sendAction` (see [emberjs/rfcs#335](https://github.com/emberjs/rfcs/blob/master/text/0335-deprecate-send-action.md) for more details) > - [#16720](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16720) Upgrade `backburner.js` to 2.3.0 > - [#16783](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16783) [BUGFIX] Allow setting length on ArrayProxy. > - [#16785](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16785) [BUGFIX] Ensure `ArrayMixin#invoke` returns an Ember.A. > - [#16784](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16784) [BUGFIX] Setting ArrayProxy#content in willDestroy resets length. > - [#16794](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16794) [BUGFIX] Fix instance-initializer-test blueprint for new QUnit testing API ([emberjs/rfcs#232](https://github-redirect.dependabot.com/emberjs/rfcs/pull/232)) > - [#16797](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16797) [BUGFIX] Drop autorun assertion > > ### v3.3.2 (August 20, 2018) > > - [#16853](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16853) [BUGFIX] Allow ArrayProxy#pushObjects to accept ArrayProxy again > - [#16870](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16870) [BUGFIX] Enable @ember/object#get to be called with an empty string > > ### v3.3.1 (July 23, 2018) > > - [#16836](https://github-redirect.dependabot.com/emberjs/ember.js/pull/16836/commits) [DOC] Fix Broken 3.3 API Documentation > ></table> ... (truncated) </details> <details> <summary>Commits</summary> - [`db6a5de`](emberjs/ember.js@db6a5de) Release v3.5.0 - [`cae13d4`](emberjs/ember.js@cae13d4) Add v3.5.0 to CHANGELOG - [`5da9996`](emberjs/ember.js@5da9996) Fix typo on line 75 - [`b41d933`](emberjs/ember.js@b41d933) Fixup CHANGELOG - [`48ad148`](emberjs/ember.js@48ad148) Add v3.4.5 to CHANGELOG - [`d37a42e`](emberjs/ember.js@d37a42e) Release v3.5.0-beta.4 - [`942fdb7`](emberjs/ember.js@942fdb7) Add v3.5.0-beta.4 to CHANGELOG - [`16225e8`](emberjs/ember.js@16225e8) [DOC RELEASE] [DOC 3.3] [DOC 3.4] Fix missing docs - [`e90e1c6`](emberjs/ember.js@e90e1c6) Fix rendering of empty content with `{{{...}}}` in IE11 - [`d752b94`](emberjs/ember.js@d752b94) Merge pull request [#17004](https://github-redirect.dependabot.com/emberjs/ember.js/issues/17004) from emberjs/beta-triple-curlies-bugfix - Additional commits viewable in [compare view](emberjs/ember.js@v2.18.2...v3.5.0) </details> <br /> [![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=ember-source&package-manager=npm_and_yarn&previous-version=2.18.2&new-version=3.5.0)](https://dependabot.com/compatibility-score.html?dependency-name=ember-source&package-manager=npm_and_yarn&previous-version=2.18.2&new-version=3.5.0) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. Dependabot will **not** automatically merge this PR because it includes an out-of-range update to a development dependency. --- **Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit. You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com). <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Automerge options (never/patch/minor, and dev/runtime dependencies) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired) Finally, you can contact us by mentioning @dependabot. </details>
rendered
Related to (though somewhat diverged from) emberjs/ember-qunit#258.
Related to #119.
Intending to land together with #229.