From 289ea043214c7f09a3343fdec7f8edd672f466dd Mon Sep 17 00:00:00 2001 From: elenatorro Date: Tue, 10 Jul 2018 10:58:54 +0200 Subject: [PATCH 1/9] Add SVG loader and optimize svgs --- package.json | 3 +- src/renderer/viz/builtinSVGs.js | 198 ---------------------- src/renderer/viz/defaultSVGs.js | 39 +++++ src/renderer/viz/expressions.js | 5 +- src/renderer/viz/expressions/sprite.js | 8 +- src/renderer/viz/expressions/svg.js | 7 + src/renderer/viz/svgs/bicycle.svg | 1 + src/renderer/viz/svgs/building.svg | 1 + src/renderer/viz/svgs/bus.svg | 1 + src/renderer/viz/svgs/car.svg | 1 + src/renderer/viz/svgs/circle.svg | 1 + src/renderer/viz/svgs/circleOutline.svg | 1 + src/renderer/viz/svgs/cross.svg | 1 + src/renderer/viz/svgs/flag.svg | 1 + src/renderer/viz/svgs/house.svg | 1 + src/renderer/viz/svgs/marker.svg | 1 + src/renderer/viz/svgs/markerOutline.svg | 1 + src/renderer/viz/svgs/plus.svg | 1 + src/renderer/viz/svgs/square.svg | 1 + src/renderer/viz/svgs/squareOutline.svg | 1 + src/renderer/viz/svgs/star.svg | 1 + src/renderer/viz/svgs/starOutline.svg | 1 + src/renderer/viz/svgs/triangle.svg | 1 + src/renderer/viz/svgs/triangleOutline.svg | 1 + webpack/webpack.config.js | 5 +- webpack/webpack.min.config.js | 5 +- yarn.lock | 21 +++ 27 files changed, 99 insertions(+), 210 deletions(-) delete mode 100644 src/renderer/viz/builtinSVGs.js create mode 100644 src/renderer/viz/defaultSVGs.js create mode 100644 src/renderer/viz/expressions/svg.js create mode 100644 src/renderer/viz/svgs/bicycle.svg create mode 100644 src/renderer/viz/svgs/building.svg create mode 100644 src/renderer/viz/svgs/bus.svg create mode 100644 src/renderer/viz/svgs/car.svg create mode 100644 src/renderer/viz/svgs/circle.svg create mode 100644 src/renderer/viz/svgs/circleOutline.svg create mode 100644 src/renderer/viz/svgs/cross.svg create mode 100644 src/renderer/viz/svgs/flag.svg create mode 100644 src/renderer/viz/svgs/house.svg create mode 100644 src/renderer/viz/svgs/marker.svg create mode 100644 src/renderer/viz/svgs/markerOutline.svg create mode 100644 src/renderer/viz/svgs/plus.svg create mode 100644 src/renderer/viz/svgs/square.svg create mode 100644 src/renderer/viz/svgs/squareOutline.svg create mode 100644 src/renderer/viz/svgs/star.svg create mode 100644 src/renderer/viz/svgs/starOutline.svg create mode 100644 src/renderer/viz/svgs/triangle.svg create mode 100644 src/renderer/viz/svgs/triangleOutline.svg diff --git a/package.json b/package.json index fda38867a..ae5c9ae0f 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "s3": "^4.4.0", "serve": "^7.2.0", "sloc": "^0.2.0", + "svg-inline-loader": "^0.8.0", "webpack": "^4.0.0", "webpack-cli": "^2.1.4", "webpack-glsl-loader": "^1.0.1" @@ -69,7 +70,7 @@ "scripts": { "build": "yarn build:dev && yarn build:min", "build:dev": "webpack --config webpack/webpack.config.js", - "build:min": "webpack --config webpack/webpack.min.config.js", + "build:min": "webpack --config webpack/webpack.min.config.js --optimize-minimize", "build:watch": "webpack -w --config webpack/webpack.config.js", "docs": "rm -rf docs/public; jsdoc --configure config/jsdoc/public-conf.json", "docs:all": "rm -rf docs/all; jsdoc --configure config/jsdoc/all-conf.json", diff --git a/src/renderer/viz/builtinSVGs.js b/src/renderer/viz/builtinSVGs.js deleted file mode 100644 index 84ddf5c18..000000000 --- a/src/renderer/viz/builtinSVGs.js +++ /dev/null @@ -1,198 +0,0 @@ -export const bicycle = ` - - - - - - - - -`; - -export const building = ` - - - - -`; - -export const bus = ` - - - - -`; - -export const car = ` - - - - -`; - -export const circle = ` - - - - -`; - -export const circleOutline = ` - - - - -`; - -export const cross = ` - - - - -`; - -export const flag = ` - - - - -`; - -export const house = ` - -`; - -export const marker = ` - - - - -`; - -export const markerOutline = ` -marker-stroked-15 - -`; - -export const plus = ` - - - - -`; - -export const square = ` - - - - -`; - -export const squareOutline = ` - - - - -`; - -export const star = ` - - - - -`; - -export const starOutline = ` - - - - -`; - -export const triangle = ` - - - - -`; - -export const triangleOutline = ` - - - - -`; diff --git a/src/renderer/viz/defaultSVGs.js b/src/renderer/viz/defaultSVGs.js new file mode 100644 index 000000000..bd8d71821 --- /dev/null +++ b/src/renderer/viz/defaultSVGs.js @@ -0,0 +1,39 @@ +import bicycle from './svgs/bicycle.svg'; +import building from './svgs/building.svg'; +import bus from './svgs/bus.svg'; +import car from './svgs/car.svg'; +import circle from './svgs/circle.svg'; +import circleOutline from './svgs/circleOutline.svg'; +import cross from './svgs/cross.svg'; +import house from './svgs/house.svg'; +import flag from './svgs/flag.svg'; +import marker from './svgs/marker.svg'; +import markerOutline from './svgs/markerOutline.svg'; +import plus from './svgs/plus.svg'; +import square from './svgs/square.svg'; +import squareOutline from './svgs/squareOutline.svg'; +import star from './svgs/star.svg'; +import starOutline from './svgs/starOutline.svg'; +import triangle from './svgs/triangle.svg'; +import triangleOutline from './svgs/triangleOutline.svg'; + +export default { + bicycle, + building, + bus, + car, + circle, + circleOutline, + cross, + house, + flag, + marker, + markerOutline, + plus, + square, + squareOutline, + star, + starOutline, + triangle, + triangleOutline +}; diff --git a/src/renderer/viz/expressions.js b/src/renderer/viz/expressions.js index b1734b5ed..684324d53 100644 --- a/src/renderer/viz/expressions.js +++ b/src/renderer/viz/expressions.js @@ -123,7 +123,7 @@ * @api */ -import * as svgs from './builtinSVGs'; +import svgs from './defaultSVGs'; import Transition from './expressions/transition'; @@ -230,7 +230,8 @@ import ViewportFeatures from './expressions/viewportFeatures'; import XYZ from './expressions/xyz'; import Zoom from './expressions/zoom'; -import {Sprite, SVG} from './expressions/sprite'; +import Sprite from './expressions/sprite'; +import SVG from './expressions/svg'; import Placement from './expressions/placement'; import Sprites from './expressions/sprites'; diff --git a/src/renderer/viz/expressions/sprite.js b/src/renderer/viz/expressions/sprite.js index b2d978ea5..3ecc2ceb5 100644 --- a/src/renderer/viz/expressions/sprite.js +++ b/src/renderer/viz/expressions/sprite.js @@ -26,7 +26,7 @@ import { checkString } from './utils'; * @api */ -export class Sprite extends Base { +export default class Sprite extends Base { constructor(url) { checkString('sprite', 'url', 0, url); super({}); @@ -114,9 +114,3 @@ function getCanvasFromImage(img) { return canvas; } -export class SVG extends Sprite{ - constructor(svg){ - super('data:image/svg+xml,' + encodeURIComponent(svg)); - } -} - diff --git a/src/renderer/viz/expressions/svg.js b/src/renderer/viz/expressions/svg.js new file mode 100644 index 000000000..81aae86f0 --- /dev/null +++ b/src/renderer/viz/expressions/svg.js @@ -0,0 +1,7 @@ +import Sprite from './sprite'; + +export default class SVG extends Sprite { + constructor(svg){ + super('data:image/svg+xml,' + encodeURIComponent(svg)); + } +} diff --git a/src/renderer/viz/svgs/bicycle.svg b/src/renderer/viz/svgs/bicycle.svg new file mode 100644 index 000000000..74b5fa5d6 --- /dev/null +++ b/src/renderer/viz/svgs/bicycle.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/building.svg b/src/renderer/viz/svgs/building.svg new file mode 100644 index 000000000..d9f3a2581 --- /dev/null +++ b/src/renderer/viz/svgs/building.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/bus.svg b/src/renderer/viz/svgs/bus.svg new file mode 100644 index 000000000..f23b901b5 --- /dev/null +++ b/src/renderer/viz/svgs/bus.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/car.svg b/src/renderer/viz/svgs/car.svg new file mode 100644 index 000000000..ca0104ef8 --- /dev/null +++ b/src/renderer/viz/svgs/car.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/circle.svg b/src/renderer/viz/svgs/circle.svg new file mode 100644 index 000000000..bc9facee0 --- /dev/null +++ b/src/renderer/viz/svgs/circle.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/circleOutline.svg b/src/renderer/viz/svgs/circleOutline.svg new file mode 100644 index 000000000..284c080d3 --- /dev/null +++ b/src/renderer/viz/svgs/circleOutline.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/cross.svg b/src/renderer/viz/svgs/cross.svg new file mode 100644 index 000000000..a1a40a0b9 --- /dev/null +++ b/src/renderer/viz/svgs/cross.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/flag.svg b/src/renderer/viz/svgs/flag.svg new file mode 100644 index 000000000..090b29e60 --- /dev/null +++ b/src/renderer/viz/svgs/flag.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/house.svg b/src/renderer/viz/svgs/house.svg new file mode 100644 index 000000000..afbbe9ca2 --- /dev/null +++ b/src/renderer/viz/svgs/house.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/marker.svg b/src/renderer/viz/svgs/marker.svg new file mode 100644 index 000000000..0014d4a4a --- /dev/null +++ b/src/renderer/viz/svgs/marker.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/markerOutline.svg b/src/renderer/viz/svgs/markerOutline.svg new file mode 100644 index 000000000..69c83b2fa --- /dev/null +++ b/src/renderer/viz/svgs/markerOutline.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/plus.svg b/src/renderer/viz/svgs/plus.svg new file mode 100644 index 000000000..aab4cedfc --- /dev/null +++ b/src/renderer/viz/svgs/plus.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/square.svg b/src/renderer/viz/svgs/square.svg new file mode 100644 index 000000000..54137db84 --- /dev/null +++ b/src/renderer/viz/svgs/square.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/squareOutline.svg b/src/renderer/viz/svgs/squareOutline.svg new file mode 100644 index 000000000..13b47a2ed --- /dev/null +++ b/src/renderer/viz/svgs/squareOutline.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/star.svg b/src/renderer/viz/svgs/star.svg new file mode 100644 index 000000000..b39f099a9 --- /dev/null +++ b/src/renderer/viz/svgs/star.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/viz/svgs/starOutline.svg b/src/renderer/viz/svgs/starOutline.svg new file mode 100644 index 000000000..47a7cab04 --- /dev/null +++ b/src/renderer/viz/svgs/starOutline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/viz/svgs/triangle.svg b/src/renderer/viz/svgs/triangle.svg new file mode 100644 index 000000000..6df10d5fe --- /dev/null +++ b/src/renderer/viz/svgs/triangle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/viz/svgs/triangleOutline.svg b/src/renderer/viz/svgs/triangleOutline.svg new file mode 100644 index 000000000..ee8c9a787 --- /dev/null +++ b/src/renderer/viz/svgs/triangleOutline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/webpack/webpack.config.js b/webpack/webpack.config.js index d44ebd96c..c9f7fe474 100644 --- a/webpack/webpack.config.js +++ b/webpack/webpack.config.js @@ -16,6 +16,9 @@ module.exports = { new webpack.BannerPlugin(banner) ], module: { - rules: [{ test: /\.glsl$/, use: 'webpack-glsl-loader' }] + rules: [ + { test: /\.glsl$/, use: 'webpack-glsl-loader' }, + { test: /\.svg$/, use: 'svg-inline-loader' } + ] } }; diff --git a/webpack/webpack.min.config.js b/webpack/webpack.min.config.js index f78afc507..3e6aa4357 100644 --- a/webpack/webpack.min.config.js +++ b/webpack/webpack.min.config.js @@ -13,7 +13,10 @@ module.exports = { devtool: false, mode: 'production', module: { - rules: [{ test: /\.glsl$/, use: 'webpack-glsl-loader' }] + rules: [ + { test: /\.glsl$/, use: 'webpack-glsl-loader' }, + { test: /\.svg$/, use: 'svg-inline-loader' } + ] }, plugins: [ new webpack.BannerPlugin(banner) diff --git a/yarn.lock b/yarn.lock index d7089cca6..120a6f5d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4125,6 +4125,15 @@ loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" +loader-utils@^0.2.11: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + loader-utils@^1.0.0, loader-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" @@ -6036,6 +6045,10 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +simple-html-tokenizer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/simple-html-tokenizer/-/simple-html-tokenizer-0.1.1.tgz#05c2eec579ffffe145a030ac26cfea61b980fabe" + slack-node@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/slack-node/-/slack-node-0.2.0.tgz#de4b8dddaa8b793f61dbd2938104fdabf37dfa30" @@ -6471,6 +6484,14 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" +svg-inline-loader@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/svg-inline-loader/-/svg-inline-loader-0.8.0.tgz#7e9d905d80d0b4e68d2df21afcd08ee9e9a3ea6e" + dependencies: + loader-utils "^0.2.11" + object-assign "^4.0.1" + simple-html-tokenizer "^0.1.1" + symbol-observable@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" From 5a935c8b54dcd9e495d2e2b325df7db230112d04 Mon Sep 17 00:00:00 2001 From: elenatorro Date: Thu, 12 Jul 2018 17:29:08 +0200 Subject: [PATCH 2/9] Add uglify plugin --- package.json | 3 ++- webpack/webpack.min.config.js | 34 ++++++++++++++++++++++++++++++++++ yarn.lock | 13 +++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index ae5c9ae0f..66d300ffb 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "serve": "^7.2.0", "sloc": "^0.2.0", "svg-inline-loader": "^0.8.0", + "uglifyjs-webpack-plugin": "^1.2.7", "webpack": "^4.0.0", "webpack-cli": "^2.1.4", "webpack-glsl-loader": "^1.0.1" @@ -70,7 +71,7 @@ "scripts": { "build": "yarn build:dev && yarn build:min", "build:dev": "webpack --config webpack/webpack.config.js", - "build:min": "webpack --config webpack/webpack.min.config.js --optimize-minimize", + "build:min": "webpack --config webpack/webpack.min.config.js", "build:watch": "webpack -w --config webpack/webpack.config.js", "docs": "rm -rf docs/public; jsdoc --configure config/jsdoc/public-conf.json", "docs:all": "rm -rf docs/all; jsdoc --configure config/jsdoc/all-conf.json", diff --git a/webpack/webpack.min.config.js b/webpack/webpack.min.config.js index 3e6aa4357..992c616be 100644 --- a/webpack/webpack.min.config.js +++ b/webpack/webpack.min.config.js @@ -1,6 +1,7 @@ const path = require('path'); const webpack = require('webpack'); const banner = require('./banner'); +const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); module.exports = { entry: './src/index.js', @@ -18,6 +19,39 @@ module.exports = { { test: /\.svg$/, use: 'svg-inline-loader' } ] }, + optimization: { + minimizer: [ + new UglifyJSPlugin({ + uglifyOptions: { + output: { + comments: false + }, + compress: { + unsafe_comps: true, + properties: true, + keep_fargs: false, + pure_getters: true, + collapse_vars: true, + unsafe: true, + warnings: false, + sequences: true, + dead_code: true, + drop_debugger: true, + comparisons: true, + conditionals: true, + evaluate: true, + booleans: true, + loops: true, + unused: true, + hoist_funs: true, + if_return: true, + join_vars: true, + drop_console: true + } + } + }), + ] + }, plugins: [ new webpack.BannerPlugin(banner) ] diff --git a/yarn.lock b/yarn.lock index 120a6f5d5..26e1bcadb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6702,6 +6702,19 @@ uglifyjs-webpack-plugin@^1.2.4: webpack-sources "^1.1.0" worker-farm "^1.5.2" +uglifyjs-webpack-plugin@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz#57638dd99c853a1ebfe9d97b42160a8a507f9d00" + dependencies: + cacache "^10.0.4" + find-cache-dir "^1.0.0" + schema-utils "^0.4.5" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-es "^3.3.4" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" From 2850e85e4b5839f7f3387e27a25257cf3dc41361 Mon Sep 17 00:00:00 2001 From: elenatorro Date: Mon, 16 Jul 2018 10:09:04 +0200 Subject: [PATCH 3/9] Remove 'unsafe' options --- webpack/webpack.min.config.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/webpack/webpack.min.config.js b/webpack/webpack.min.config.js index 992c616be..d80a32459 100644 --- a/webpack/webpack.min.config.js +++ b/webpack/webpack.min.config.js @@ -27,12 +27,10 @@ module.exports = { comments: false }, compress: { - unsafe_comps: true, properties: true, keep_fargs: false, pure_getters: true, collapse_vars: true, - unsafe: true, warnings: false, sequences: true, dead_code: true, From c18b0ca1127944f42a52f174a2163cd27f72bee1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Mon, 16 Jul 2018 11:25:02 +0200 Subject: [PATCH 4/9] Improve GeoJSON example --- examples/basics/add-layer-geojson.html | 66 -------------------------- examples/examples.json | 8 +--- 2 files changed, 2 insertions(+), 72 deletions(-) delete mode 100644 examples/basics/add-layer-geojson.html diff --git a/examples/basics/add-layer-geojson.html b/examples/basics/add-layer-geojson.html deleted file mode 100644 index 007caff97..000000000 --- a/examples/basics/add-layer-geojson.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - Add GeoJSON layer | CARTO - - - - - - - - - - - -
- -
-
- - - -
-
- - - diff --git a/examples/examples.json b/examples/examples.json index 8e95eb9fb..0389340cc 100644 --- a/examples/examples.json +++ b/examples/examples.json @@ -10,10 +10,6 @@ "title": "Add CARTO dataset layer", "file": "basics/add-layer.html" }, - { - "title": "Add GeoJSON layer", - "file": "basics/add-layer-geojson.html" - }, { "title": "Style layer", "file": "basics/basic-style.html" @@ -118,8 +114,8 @@ "title": "Advanced", "samples": [ { - "title": "Denver trees", - "file": "advanced/denver-trees.html" + "title": "External GeoJSON layer", + "file": "advances/external-geojson.html" }, { "title": "US population by county", From 3dd974751af2afa5827ee6dc4297fa7a31951993 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Mon, 16 Jul 2018 11:26:52 +0200 Subject: [PATCH 5/9] Do not ignore HTML files --- .gitignore | 1 - examples/advanced/external-geojson.html | 63 +++++++++++++++++++++++++ examples/examples.json | 2 +- 3 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 examples/advanced/external-geojson.html diff --git a/.gitignore b/.gitignore index 5303776b3..77190743d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -*.html *.log *_out.png secrets.json diff --git a/examples/advanced/external-geojson.html b/examples/advanced/external-geojson.html new file mode 100644 index 000000000..b658df664 --- /dev/null +++ b/examples/advanced/external-geojson.html @@ -0,0 +1,63 @@ + + + + External GeoJSON layer | CARTO + + + + + + + + + + + +
+ +
+
+ + + +
+
+ + + diff --git a/examples/examples.json b/examples/examples.json index 0389340cc..9b99a4cc3 100644 --- a/examples/examples.json +++ b/examples/examples.json @@ -115,7 +115,7 @@ "samples": [ { "title": "External GeoJSON layer", - "file": "advances/external-geojson.html" + "file": "advanced/external-geojson.html" }, { "title": "US population by county", From d617f04806308afcc67ae2eac758b6c794cc9fb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Mon, 16 Jul 2018 11:31:17 +0200 Subject: [PATCH 6/9] Rename editor's link --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 2f23fd428..8eea18e07 100644 --- a/index.html +++ b/index.html @@ -10,7 +10,7 @@

CARTO VL

From 870368675e09a81428eeb2a0e0e95de7005f61dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Mon, 16 Jul 2018 17:14:23 +0200 Subject: [PATCH 7/9] Unify e2e render tests framework --- test/acceptance/e2e.test.js | 27 +++++++++++++++----------- test/common/util.js | 8 ++++---- test/integration/render/render.test.js | 12 ++++++------ 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/test/acceptance/e2e.test.js b/test/acceptance/e2e.test.js index 2ba33b7e8..29da4fdd7 100644 --- a/test/acceptance/e2e.test.js +++ b/test/acceptance/e2e.test.js @@ -6,28 +6,33 @@ chai.use(require('chai-as-promised')); const handler = require('serve-handler'); const http = require('http'); +const exquisite = require('exquisite-sst'); const files = util.loadFiles(path.join(__dirname, 'e2e')); const template = util.loadTemplate(path.join(__dirname, 'e2e.html.tpl')); describe('E2E tests:', () => { let server; - - before(() => { + let browser; + + before(done => { server = http.createServer(handler); server.listen(util.PORT); + exquisite.browser(util.headless()).then(_browser => { + browser = _browser; + done(); + }); }); - files.forEach(test); + files.forEach(file => { + it(util.getName(file), () => { + const actual = util.testSST(file, template, browser); + return chai.expect(actual).to.eventually.eq(0); + }).timeout(20000); + }); - after(() => { + after(done => { server.close(); + exquisite.release(browser).then(done); }); }); - -function test(file) { - it(util.getName(file), () => { - const actual = util.testSST(file, template, true); - return chai.expect(actual).to.eventually.eq(0); - }).timeout(20000); -} diff --git a/test/common/util.js b/test/common/util.js index 538852d85..6c605ebf6 100644 --- a/test/common/util.js +++ b/test/common/util.js @@ -39,19 +39,19 @@ function getName(file) { ); } -function takeReference(file, template, asyncLoad) { +function takeReference(file, template) { if (!fs.existsSync(getPNG(file))) { console.log(`Taking reference from ${getName(file)}`); writeTemplate(file, template); let options = loadOptions(); options.url = `http://localhost:${PORT}/test/${getLocalhostURL(file)}/scenario.html`; options.output = `${getPNG(file)}`; - if (asyncLoad) options.waitForFn = () => window.loaded; + options.waitForFn = () => window.loaded; return exquisite.getReference(options); } } -async function testSST(file, template, asyncLoad, browser) { +async function testSST(file, template, browser) { writeTemplate(file, template); let options = loadOptions(); options.url = `http://localhost:${PORT}/test/${getLocalhostURL(file)}/scenario.html`; @@ -78,7 +78,7 @@ async function testSST(file, template, asyncLoad, browser) { } }, }; - if (asyncLoad) options.waitForFn = () => window.loaded; + options.waitForFn = () => window.loaded; const result = await exquisite.test(options); if (capturedErrors.length > 0) { diff --git a/test/integration/render/render.test.js b/test/integration/render/render.test.js index b2e892696..3e1e2c5d6 100644 --- a/test/integration/render/render.test.js +++ b/test/integration/render/render.test.js @@ -24,16 +24,16 @@ describe('Render tests:', () => { }); }); - after(done => { - server.close(); - exquisite.release(browser).then(done); - }); - files.forEach(file => { it(util.getName(file), () => { - const actual = util.testSST(file, template, true, browser); + const actual = util.testSST(file, template, browser); // Temporary threshold (1px) to cover small renderer differences between Mac & Linux return chai.expect(actual).to.eventually.be.at.most(1); }).timeout(10000); }); + + after(done => { + server.close(); + exquisite.release(browser).then(done); + }); }); From e666c8ff7c6304d6f75aa177d4bf4ce7f09dfa45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Mon, 16 Jul 2018 17:30:31 +0200 Subject: [PATCH 8/9] Fix mnmappluto-mvt e2e test reference --- .../e2e/mnmappluto-mvt/reference.png | Bin 75215 -> 77100 bytes .../acceptance/e2e/mnmappluto-mvt/scenario.js | 2 -- 2 files changed, 2 deletions(-) diff --git a/test/acceptance/e2e/mnmappluto-mvt/reference.png b/test/acceptance/e2e/mnmappluto-mvt/reference.png index 3595454968f99b24d0ccf46b995d0cf58cfb41e4..11cfd93ce8999e1ff809c2b17a41bc0a8d54eb44 100644 GIT binary patch delta 46192 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 UL$cVZD+c&dme)X5$-W5rKLLS#XaE2J delta 44292 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

    +=lm^uQc|2esQDc8wA<|{ zj&E3TADf|T&CqtSsW2*^Jt4EU*uJqYt`I)xDlV-XNFMl{Z|%$$4(z$$gH0@(HyUeU zax}jFkOMdT4X07tL}WY)-ahY^E}PUWL0fFHc@o{fahxW8fYW&#S-=;0(C%6KT5D4H z+IJSdcH3Dv723NtzR;@Z+gw`4GOsc$E5pApxtUmc>$>?xilA>TP$!ih^E0J^ss7Q_ zuj|s3d22{(wOWqaHHfWQz%9(yn4_+SKi&-7 z@!`iq3+|RRs$Ri?20Xk3>0DvP(HwL0>R!NhV%{ZKi^K|@(ET&hAax(_YAJ7i{ES}|kh zk+uzsDZL*fq9iB`S0oO+dnjzPePy!p0vNNIPK)ou!hN#A2G7v3oTo2aOh8VUdb7X{Z3l zIuRAn;1L(pG8GA+3Uy1$u}xeriZkR>A?WdqZTCVj@N1{yu)u3$^N%%*9nFRlteMuj zhZnH)jG=zH;E_|G45>ZE#cx&&aRkpjDiT2z|HW{~1B1 zjo`%@q7P;w(s=T)a%A3Is1I7K=#}&vr7Y5q>`ARr4VUk#P~3N{=+`lv<$^|4hG}Cv z-oCyh&C8rUgqV2s*vJP|+D6)1Lj%<6ek-Yx5gX!ZnkDsLz4Ih6M9C=RXk}%vojJV0 za+UN&S&2svvpGKzSD?qWcQ76YR+7!~U?LJE=ak1=m^mNu^e*q7sHe!jr-Y(FKl4p0 zP40nl{tvQuz;bzVE9R1}3;E*i^v8H4azrq_M{)Y*uSg>h<$MT>2;;)6|&j)z_bX$Qw#lqLQ3C`R>M_Q3 z;Wx1=9^-A6-0dm({-8BM{sTC~&VZK{9z!ANW@>L);j8J#h!GA>6ch|j6-7Dy+kCu& zCxqHHi9HgvdAc^Fz%t-Qx97gIyym;UHS+teK;Ni&G1-UB@zdx{M+4qwsM}G1i|z^N zS9F*W$`KVhb8kC?ip6sW@gS~;tu65^Xjx%j<2!%U!s%q{gR|v!e4)_-g1%PF(v&vO zyYNxRav@a0bIzXyi-$utk(7}Qa9Da(#?ji_3iGkCU@`bC{4uo2gcn>e4w+ecWMs~9 zrgaf+GC67j*-v9zOZ2sP@Bd_JVr~2~x@0p~1FtBi+h7;!)CxNyO^ipj>@gt$#n~qb zi6=Z`a;iQy6Rm~zepJRVOp;=sYI>OFw9NLI&r!w?j+3reOm1|_H;zNVCg^5jd)(LZ z%9<$;Ju{!MIK*gY)od+qC{$kNcjJLmS0K(WmgMtgqZPOH6|(k^^xBihdmC4u__Dut!&-3Fia&Dtp(6hPO!E=+rh$%~<<7=?P-39Jrj!G^j$UqLq}r zj%UG(BU{{kC)Y+6b6hkKkRxWwl6It^}N{z~MKW)cf!?F2AT?eS$1XX@@V2Rtv*|5URW!J@dtJ>GwDKP`;2_}TW z;?RjCAY4(`&WN}&V?rzA(#>T)u1aS)lg{!qNMzF87lT@R&#J2HyBkCpv zQNJ6aEI|8QB-Me8+uil-Al(6FIci%xH|%eXxj z&Ci2BQ9i__6N=>rt%dOe*yV*NWx7MS@^n7K-8KfwtnF+AUZ%5sR&`zOEkJMrA?s?d zBw(UFWBf$Qbu(R-%tZb}&&8#^J8nLJd_t>)ZaxY;}+ zldu|XQWX!uM_VD~yv{5lmlQsC- zC`vAE@??zmd3fYdI!FxmX-N9k>gr5tYH0O_TJ{-rN_%ViB4vY{9?iB}@ zl~<01oBjfaAKAAa$KgGO$WA3 zID^*9#POZks{c^pdSw2tMIB-<%s~gw=78Sb+uvWNWsYzBpu1%V4%0|4*75l1Mz^up z?2^tMa%vhx^1VLhV>3D?$q{C9g zKC%=&!(`JQ8cOMw2BY^8M|dFfHNMo;w(?~p*76$#i8Uo_Wo*b}2m$%WeVgWRO!-eRIQZx9w?3>fg4NG&*(V3CPET1-N6w_( iUfQvE6LZ}N-9P>F;i1sbvn*~D@Jj`%saP#<5%hns|HHEY diff --git a/test/acceptance/e2e/mnmappluto-mvt/scenario.js b/test/acceptance/e2e/mnmappluto-mvt/scenario.js index c89508a40..bd6db22f2 100644 --- a/test/acceptance/e2e/mnmappluto-mvt/scenario.js +++ b/test/acceptance/e2e/mnmappluto-mvt/scenario.js @@ -5,8 +5,6 @@ const map = new mapboxgl.Map({ zoom: 12 }); - - async function loadMVT() { const mapConfig = { buffersize: { mvt: 0 }, From 4173dd5bbf4f67c6171b5473d15059c6b1684d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Arroyo=20Torrens?= Date: Mon, 16 Jul 2018 18:20:16 +0200 Subject: [PATCH 9/9] Set timeouts in mocha cli --- package.json | 4 ++-- test/acceptance/e2e.test.js | 2 +- test/integration/render/render.test.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index a87781bfc..81871663c 100644 --- a/package.json +++ b/package.json @@ -83,10 +83,10 @@ "test:user:watch": "karma start --no-single-run --auto-watch --browsers ChromeHeadlessNoSandbox test/integration/user/karma.conf.js", "test:user:watchc": "karma start --no-single-run --browsers Chrome test/integration/user/karma.conf.js", "test:browser": "karma start --no-single-run --browsers Chrome test/unit/karma.conf.js", - "test:render": "yarn build:dev && mocha test/integration/render/render.test.js", + "test:render": "yarn build:dev && mocha test/integration/render/render.test.js --timeout 5000", "test:render:clean": "rm -rf test/integration/render/scenarios/**/**/reference.png", "test:render:prepare": "yarn build:dev && node test/integration/render/render.prepare.js ", - "test:e2e": "yarn build:dev && mocha test/acceptance/e2e.test.js", + "test:e2e": "yarn build:dev && mocha test/acceptance/e2e.test.js --timeout 10000", "test:e2e:clean": "rm -rf test/acceptance/e2e/**/reference.png", "test:e2e:prepare": "yarn build:dev && node test/acceptance/e2e.prepare.js ", "test:benchmark": "node test/benchmark/benchmark.js", diff --git a/test/acceptance/e2e.test.js b/test/acceptance/e2e.test.js index 29da4fdd7..1b7358075 100644 --- a/test/acceptance/e2e.test.js +++ b/test/acceptance/e2e.test.js @@ -28,7 +28,7 @@ describe('E2E tests:', () => { it(util.getName(file), () => { const actual = util.testSST(file, template, browser); return chai.expect(actual).to.eventually.eq(0); - }).timeout(20000); + }); }); after(done => { diff --git a/test/integration/render/render.test.js b/test/integration/render/render.test.js index 3e1e2c5d6..30cd7f299 100644 --- a/test/integration/render/render.test.js +++ b/test/integration/render/render.test.js @@ -29,7 +29,7 @@ describe('Render tests:', () => { const actual = util.testSST(file, template, browser); // Temporary threshold (1px) to cover small renderer differences between Mac & Linux return chai.expect(actual).to.eventually.be.at.most(1); - }).timeout(10000); + }); }); after(done => {