Modern app workflow

Andrey Kucherenko

Task runners

 

Grunt

 

Lineman.js

 

gulp.js

 

frontend-maven-plugin

 

Code Convertors

 

ECMAScript 6

 

Code quality

ESLint

1

plato.js

 

plato.js

 

plato.js

 

plato.js

 

jscpd

 
$ jscpd -p test/fixtures/
info:    jscpd - copy/paste detector for programming source code, developed by Andrey Kucherenko
warn:    File test/fixtures/.cpd.yaml not found in current directory or it is broken
warn:    File test/fixtures/.cpd.yml not found in current directory or it is broken
info:    Files search time: durationMs=16
info:    Scanning 37 files for duplicates...
info:    Scanning for duplicates time: durationMs=1454
info:    Scanning... done!

info:    Start report generation...

info:    Found 29 exact clones with 1352 duplicated lines in 35 files
 
	- test/fixtures/clike/file1.cpp: 23-43
	 test/fixtures/clike/file1.cpp: 44-64
	
	- test/fixtures/clike/file1.c: 1-17
	 test/fixtures/clike/file2.c: 1-17
	
	- test/fixtures/clike/file1.c: 7-19
	 test/fixtures/clike/file2.c: 17-29
	
	- test/fixtures/clike/file1.cpp: 1-88
	 test/fixtures/clike/file2.cpp: 1-88
	
	- test/fixtures/coffeescript/file1.coffee: 15-44
	 test/fixtures/coffeescript/file1.coffee: 45-74
	
	- test/fixtures/coffeescript/file1.coffee: 2-13
	 test/fixtures/coffeescript/file2.coffee: 4-15
	
	- test/fixtures/csharp/file1.cs: 1-91
	 test/fixtures/csharp/file2.cs: 1-91
	
	- test/fixtures/csharp/file1.cs: 102-185
	 test/fixtures/csharp/file2.cs: 92-175
	
	- test/fixtures/css/file1.css: 2-25
	 test/fixtures/css/file1.less: 2-25
	
	- test/fixtures/css/file1.css: 2-25
	 test/fixtures/css/file10.css: 2-25
	
	- test/fixtures/css/file1.css: 2-19
	 test/fixtures/css/file2.css: 2-19
	
	- test/fixtures/css/file1.css: 2-20
	 test/fixtures/css/file2.less: 2-20
	
	- test/fixtures/go/file1.go: 2-31
	 test/fixtures/go/file2.go: 2-31
	
	- test/fixtures/haxe/test.hx: 5-47
	 test/fixtures/haxe/test.hx: 46-88
	
	- test/fixtures/haxe/test.hx: 2-62
	 test/fixtures/haxe/test1.hx: 2-62
	
	- test/fixtures/htmlmixed/file1.htm: 2-24
	 test/fixtures/htmlmixed/file2.htm: 2-24
	
	- test/fixtures/java/file1.java: 1-185
	 test/fixtures/java/file2.java: 1-185
	
	- test/fixtures/java/file1.java: 181-221
	 test/fixtures/java/file2.java: 193-233
	
	- test/fixtures/javascript/file_1.js: 28-55
	 test/fixtures/javascript/file_2.js: 1-28
	
	- test/fixtures/javascript/file_1.js: 27-55
	 test/fixtures/javascript/file_2.js: 28-56
	
	- test/fixtures/javascript/file_1.js: 4-55
	 test/fixtures/javascript/file_3.js: 1-52
	
	- test/fixtures/javascript/file_4.js: 14-42
	 test/fixtures/javascript/file_4.js: 55-83
	
	- test/fixtures/jsx/test.jsx: 2-36
	 test/fixtures/jsx/test1.jsx: 2-36
	
	- test/fixtures/jsx/test.jsx: 7-45
	 test/fixtures/jsx/test1.jsx: 31-69
	
	- test/fixtures/php/file1.php: 2-51
	 test/fixtures/php/file2.php: 2-51
	
	- test/fixtures/python/file1.py: 2-21
	 test/fixtures/python/file2.py: 2-21
	
	- test/fixtures/ruby/file1.rb: 1-13
	 test/fixtures/ruby/file2.rb: 1-13
	
	- test/fixtures/typescript/file1.ts: 1-70
	 test/fixtures/typescript/file2.ts: 48-117
	
	- test/fixtures/typescript/file1.ts: 72-263
	 test/fixtures/typescript/file2.ts: 185-376
	

 48.29% (1352 lines) duplicated lines out of 2800 total lines of code.

warn:    output file is not provided
info:    Generate report time: durationMs=9
info:    All time: durationMs=1485

Test’em!

Istanbul

 

coverage-blamer

 

grunt-mutation-testing

 
// spec.js
describe('Protractor Demo App', function() {
  it('should have a title', function() {
    browser.get('http://juliemr.github.io/protractor-demo/');

    expect(browser.getTitle()).toEqual('Super Calculator');
  });
});
# features/myFeature.feature

Feature: Example feature
  As a user of cucumber.js
  I want to have documentation on cucumber
  So that I can concentrate on building awesome applications

  Scenario: Reading documentation
    Given I am on the Cucumber.js GitHub repository
    When I go to the README file
    Then I should see "Usage" as the page title

Continuous integration 

 

Continuous integration 

 

Deploying

 

npm sinopia

 

Questions?

 

Thank you