Skip to content

Commit 9220ed1

Browse files
committed
working e2e test plus eslint and yarn
1 parent 784f0f1 commit 9220ed1

18 files changed

+2836
-1884
lines changed

.editorconfig

-12
This file was deleted.

.eslintrc.js

+285
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,285 @@
1+
module.exports = {
2+
"env": {
3+
"browser": true,
4+
"es6": true
5+
},
6+
"extends": "eslint:recommended",
7+
"globals": {
8+
angular: true,
9+
browser: true,
10+
expect: true,
11+
element: true,
12+
by: true,
13+
describe: true,
14+
it: true,
15+
exports: true,
16+
require: true,
17+
__dirname: true,
18+
},
19+
rules: {
20+
/* Whitespace rules */
21+
22+
// Require 2 space indentation,
23+
indent: ["warn", 2, {
24+
// Require 'case' to be on the same indentation level as 'switch'
25+
SwitchCase: 0,
26+
// Require indentation for functions and parameters.
27+
FunctionDeclaration: {body: 1, parameters: 1},
28+
// Require indentation for function call arguments
29+
CallExpression: {arguments: 1},
30+
// Don't check the indentation of chained member expressions.
31+
// eslint isn't smart enough to let us permit no up-indenting at
32+
// the global indentation level 0.
33+
MemberExpression: "off",
34+
}],
35+
// Require no spaces before commas, but require spaces after commas.
36+
"comma-spacing": ["warn", {before: false, after: true}],
37+
// Require a single space after :, but not before it.
38+
"key-spacing": ["warn", {beforeColon: false, afterColon: true}],
39+
// Require spaces after if, else, etc.
40+
"keyword-spacing": "warn",
41+
"no-multiple-empty-lines": ["warn", {max: 1}],
42+
// Disallow `foo .x`, `foo. y`, etc.
43+
"no-whitespace-before-property": "warn",
44+
// Disallow spaces before semicolons.
45+
"semi-spacing": ["warn", {before: false, after: true}],
46+
// Disallow multiple spaces around operators, etc.
47+
"no-multi-spaces": "warn",
48+
// Require a single space before opening braces.
49+
"space-before-blocks": ["warn", {
50+
functions: "always",
51+
keywords: "always",
52+
classes: "always",
53+
}],
54+
// Require NO spaces before the function parentheses.
55+
"space-before-function-paren": ["warn", "never"],
56+
// Disallow redundant spaces inside parentheses.
57+
"space-in-parens": ["warn", "never"],
58+
// Require spaces around infix operators.
59+
"space-infix-ops": "warn",
60+
// Require a single space after 'new', 'delete', etc.,
61+
// but require NO spaces after ++, !, etc.
62+
"space-unary-ops": ["warn", {
63+
words: true,
64+
nonwords: false,
65+
}],
66+
// Disallow redundant spaces inside square brackets.
67+
"array-bracket-spacing": ["warn", "never"],
68+
// Require files to end with a single newline character.
69+
"eol-last": "warn",
70+
// Require lines to end with Unix \n newline characters only.
71+
"linebreak-style": ["warn", "unix"],
72+
// Require spaces before and after the => in arrow functions.
73+
"arrow-spacing": ["warn", {before: true, after: true}],
74+
// Require trailing commas across many lines.
75+
"comma-dangle": ["warn", {
76+
arrays: "always-multiline",
77+
objects: "always-multiline",
78+
imports: "always-multiline",
79+
exports: "always-multiline",
80+
functions: "always-multiline",
81+
}],
82+
// Require commas to be on the end of lines, not at the start.
83+
"comma-style": ["warn", "last"],
84+
// Don't allow extra blank lines inside of blocks.
85+
"padded-blocks": ["warn", "never"],
86+
87+
/* Other style rules */
88+
89+
// enforce lowerCamelCase, but not on properties of objects.
90+
camelcase: ["warn", {properties: "never"}],
91+
// Require dots across lines to start on the second line.
92+
"dot-location": ["warn", "property"],
93+
// Encourage .x over ['x']
94+
// Allow keywords also, which are supported in ES5.
95+
"dot-notation": ["warn", {allowKeywords: true}],
96+
// Disallow 'return' in an 'else' block.
97+
"no-else-return": "warn",
98+
// Disallow `"" + x` and `+x`., etc. !!x will still be allowed.
99+
"no-implicit-coercion": ["error", {
100+
boolean: false,
101+
number: true,
102+
string: true,
103+
}],
104+
"newline-before-return": "warn",
105+
// Prefer no quotes for properties.
106+
"quote-props": ["warn", "as-needed", {
107+
keywords: false,
108+
numbers: false,
109+
}],
110+
/* Style rules which avoid semantic problems later... */
111+
112+
// Require braces for statements always
113+
curly: "error",
114+
// Require there to be no semicolons at the end of lines.
115+
// semicolons should appear at the start of some lines instead.
116+
semi: ["error", "never"],
117+
// Complain when some lines do not start with semicolons.
118+
"no-unexpected-multiline": "error",
119+
// Disallow labelled loops, which are hard to follow.
120+
"no-labels": "error",
121+
// Require functions to either always or never return values.
122+
"consistent-return": "error",
123+
// Disallow lexical declarations in case blocks.
124+
"no-case-declarations": "error",
125+
// Disallow blocks which do nothing in ES5.
126+
"no-lone-blocks": "error",
127+
// Disallow f.call() and f.apply() when f() is the same.
128+
"no-useless-call": "error",
129+
// Disable the comma operator, which is dumb.
130+
"no-sequences": "error",
131+
// Disable Yoda Conditions like 3 === x
132+
yoda: ["error", "never"],
133+
// Disallow nested ternary expressions, which are hard to follow.
134+
"no-nested-ternary": "error",
135+
// Allow unused variables, for now...
136+
"no-unused-vars": "off",
137+
// Require ES6-style imports to be sorted.
138+
"sort-imports": "warn",
139+
140+
/* Semantic rules */
141+
142+
// Require === over ==, except for == null.
143+
eqeqeq: ["error", "allow-null"],
144+
// Disallow x === -0. in favour of x === 0 or Object.is(x, -0)
145+
"no-compare-neg-zero": "error",
146+
// Disallow conditions which always hold true, like if (true)
147+
"no-constant-condition": "error",
148+
// Require a default: case for switch statements always
149+
"default-case": "error",
150+
// Require hasOwnProperty for for...in loops.
151+
"guard-for-in": "error",
152+
// Disallow var inside if, for, etc.
153+
"block-scoped-var": "error",
154+
// Disallow `var` completely.
155+
"no-var": "error",
156+
// Require one var, let, or const declaration per line.
157+
"one-var": ["error", "never"],
158+
// Disallow const x = y = 1, etc.
159+
"no-multi-assign": "error",
160+
// Insist that `const` should be used instead of `let`, where possible.
161+
"prefer-const": "warn",
162+
// Treat function parameters as if they are `const`.
163+
"func-style": ["error", "expression"],
164+
"no-param-reassign": "error",
165+
// Require setters to always have matching getters, but not
166+
// the other way around.
167+
"accessor-pairs": "error",
168+
// Don't allow alert, confirm, or prompt by default
169+
"no-alert": "warn",
170+
// Require a radix parameter for parseInt.
171+
radix: ["error", "always"],
172+
// Require wrapping functions which are called immediately in parens.
173+
"wrap-iife": ["error", "any"],
174+
// Do not allow arrow functions, getters, or setters to be empty.
175+
// This can catch a problem where you write () => {},
176+
// which returns undefined, not an empty object,
177+
// or where you write a getter or setter and forget to get or set
178+
// values.
179+
"no-empty-function": ["error", {
180+
allow: [
181+
"functions",
182+
"generatorFunctions",
183+
"methods",
184+
"generatorMethods",
185+
"constructors",
186+
],
187+
}],
188+
// Don't complain about parentheses on arrow functions.
189+
// x => foo and (x) => foo may both be used freely.
190+
"arrow-parens": "off",
191+
// Disallow arrow functions where >= might be intended instead.
192+
// If parentheses are used on the RHS, then the arrow function
193+
// operator will be permitted.
194+
"no-confusing-arrow": ["error", {allowParens: true}],
195+
// Prefer arrow functions for callbacks. They are nicer.
196+
"prefer-arrow-callback": "warn",
197+
// Require return values for Array callbacks like for .map
198+
"array-callback-return": "error",
199+
// Warn about using braces for arrow functions when they are not
200+
// needed.
201+
"arrow-body-style": ["warn", "as-needed"],
202+
203+
/* async-await rules */
204+
205+
// Complain about using `return await bar()`, which is bad.
206+
"no-return-await": "error",
207+
// Require `async` functions to have contain an `await`.
208+
"require-await": "error",
209+
// Disallow using `await` in loops.
210+
"no-await-in-loop": "error",
211+
// Require .reject() for promises to be called with Error objects,
212+
// which contain stack traces.
213+
"prefer-promise-reject-errors": "error",
214+
215+
/* Blacklist of bad JS features or confusing syntax */
216+
217+
// Disallow eval(), which is evil.
218+
"no-eval": "error",
219+
// Disallow changing native objects, like Object, Array, etc.
220+
"no-extend-native": "error",
221+
// Disallow empty destructuring patterns for ES6.
222+
"no-empty-pattern": "error",
223+
// Disallow function declaration inside loops.
224+
"no-loop-func": "error",
225+
// Disallow arguments.caller and arguments.callee.
226+
"no-caller": "error",
227+
// Disable use of a Firefox-specific iterator API.
228+
"no-iterator": "error",
229+
// Disallow multiline strings, which are weird.
230+
"no-multi-str": "error",
231+
// Disallow reassigning native objects.
232+
"no-native-reassign": "error",
233+
// Disallow new Function(...) syntax, which is weird.
234+
"no-new-func": "error",
235+
// Disable boxed objects like new String(""), which are just weird.
236+
"no-new-wrappers": "error",
237+
// Disallow use of new without variable assignment.
238+
"no-new": "error",
239+
// Disallow octal string escape codes, which are likely typos.
240+
"no-octal-escape": "error",
241+
// Disallow useless escape sequences, like \@, etc.
242+
"no-useless-escape": "error",
243+
// Disallow __proto__, which is deprecated.
244+
"no-proto": "error",
245+
// Disallow assignment in a return statement, a likely source of errors.
246+
"no-return-assign": "error",
247+
// Disallow location.href = "javascript:..."
248+
"no-script-url": "error",
249+
// Disallow x === x, which is likely to be a typo.
250+
"no-self-compare": "error",
251+
// Disable throwing strings, numbers, etc. as literals.
252+
"no-throw-literal": "error",
253+
// Disallow unused expressions,
254+
"no-unused-expressions": "error",
255+
// Disallow "a" + "b" when "ab" will do.
256+
"no-useless-concat": "error",
257+
// Disable the void operator.
258+
"no-void": "error",
259+
// Disable the evil with statement.
260+
"no-with": "error",
261+
// Disallow deleting variables.
262+
"no-delete-var": "error",
263+
// Disallow shadowing of `undefined`, etc.
264+
"no-shadow-restricted-names": "error",
265+
// Disable shadowing, which is confusing.
266+
"no-shadow": "error",
267+
"no-shadow-restricted-names": "error",
268+
// Disallow `var x = undefined;` when `var x;` is enough.
269+
"no-undef-init": "error",
270+
// Disallow undefined variables, to prevent globals from being created.
271+
"no-undef": "error",
272+
// Require strict mode in functions.
273+
//strict: ["error", "function"],
274+
// Allow `undefined`. It's fine.
275+
"no-undefined": "off",
276+
// Disallow anything from being used before it is defined.
277+
"no-use-before-define": ["error", {
278+
// Allow functions to be hoisted.
279+
functions: false,
280+
classes: true,
281+
}],
282+
// Disallow bitwise operators, which are usually typos.
283+
"no-bitwise": "error",
284+
},
285+
};

README.md

+16
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,19 @@ angular.module('exampleApp', ['ng-sortable'])
7272
},
7373
});
7474
```
75+
76+
77+
# Running e2e Tests
78+
To run the e2e tests run each of these commands in a seperate tab
79+
80+
```bash
81+
npm run serve:example
82+
```
83+
84+
```bash
85+
npm run webdriver
86+
```
87+
88+
```bash
89+
npm run test:e2e
90+
```

angular-legacy-sortable.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint-disable */
12
/**
23
* @author RubaXa <[email protected]>
34
* @licence MIT

e2e/basic-drag-drop.e2e.js

+20-22
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
1-
describe('drag and drop', function() {
2-
it('should reorder items', function() {
3-
browser.get('http://localhost:2000/');
1+
describe('drag and drop', () => {
2+
it('should reorder items', () => {
3+
browser.get('http://localhost:8080/')
44
element.all(by.css('li'))
55
.getText()
6-
.then(function(listItems) {
7-
expect(listItems[0]).toEqual('burgers');
8-
expect(listItems[1]).toEqual('chips');
9-
expect(listItems[2]).toEqual('hotdog');
10-
expect(listItems[3]).toEqual('icecream');
11-
12-
});
13-
14-
// simulate drage and drop
15-
browser.executeScript("DndSimulator.simulate('#burgers', '#hotdog')")
6+
.then((listItems) => {
7+
expect(listItems[0]).toEqual('burgers')
8+
expect(listItems[1]).toEqual('chips')
9+
expect(listItems[2]).toEqual('hotdog')
10+
expect(listItems[3]).toEqual('icecream')
11+
})
12+
// simulate drag and drop
13+
browser.executeScript('$("#burgers").simulate("drag-n-drop", { dragTarget: $("#hotdog"), interpolation: {stepWidth: 10, stepDelay: 30}});')
14+
browser.sleep(5000)
1615
element.all(by.css('li'))
1716
.getText()
18-
.then(function(listItems) {
19-
console.log(listItems)
20-
expect(listItems[0]).toEqual('chips');
21-
expect(listItems[1]).toEqual('hotdog');
22-
expect(listItems[2]).toEqual('burgers');
23-
expect(listItems[3]).toEqual('icecream');
24-
});
25-
});
26-
});
17+
.then((listItems) => {
18+
expect(listItems[0]).toEqual('chips')
19+
expect(listItems[1]).toEqual('burgers')
20+
expect(listItems[2]).toEqual('hotdog')
21+
expect(listItems[3]).toEqual('icecream')
22+
})
23+
})
24+
})

conf.js renamed to e2e/conf.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
exports.config = {
22
seleniumAddress: 'http://localhost:4444/wd/hub',
3-
specs: ['./e2e/basic-drag-drop.e2e.js']
4-
};
3+
specs: ['./basic-drag-drop.e2e.js'],
4+
}

0 commit comments

Comments
 (0)