UNPKG

filestack-adaptive

Version:

HTML5 picture elements powered by Filestack

116 lines (114 loc) 14.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tree_1 = require("../tree"); var DOM_1 = require("./DOM"); var validator = require('html-validator'); var handle = 'seW1thvcR1aQBfOCF8bX'; var makeHTML = function (el) { return "\n <!DOCTYPE html>\n <html>\n <head>\n <title>Test</title>\n </head>\n <body>\n " + el.toString() + "\n </body>\n </html>\n "; }; var isInvalid = function (json) { var data = JSON.parse(json); var types = data.messages.map(function (m) { return m.type; }); return types.indexOf('error') !== -1; }; describe('DOM adapter', function () { it('sanity - should invalidate an img without alt', function (done) { var options = {}; var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options)); validator({ data: makeHTML(picture) }).then(function (data) { done(!isInvalid(data)); }); }); it('should generate a valid picture element with width and pixel density', function (done) { var options = { alt: 'downtown', width: '768px' }; var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options)); validator({ data: makeHTML(picture) }).then(function (data) { done(isInvalid(data)); }); }); it('should generate a valid picture element with 1 size and width descriptors', function (done) { var options = { alt: 'downtown', sizes: { '(min-width: 640px)': '80vw', fallback: '100vw' }, resolutions: [540, 670, 1080] }; var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options)); validator({ data: makeHTML(picture) }).then(function (data) { console.log(data, isInvalid(data)); done(isInvalid(data)); }); }); it('should generate a valid picture element with 2 formats and 2 sizes', function (done) { var options = { alt: 'downtown', sizes: { '(min-width: 640px)': '80vw', '(min-width: 320px)': '700px', fallback: '100vw' }, formats: ['webp', 'jpg'] }; var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options)); validator({ data: makeHTML(picture) }).then(function (data) { done(isInvalid(data)); }); }); it('should generate a valid picture element with 1 format and fallback', function (done) { var options = { alt: 'downtown', sizes: { fallback: '100vw' }, formats: ['webp', 'jpg'] }; var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options)); validator({ data: makeHTML(picture) }).then(function (data) { done(isInvalid(data)); }); }); it('should generate a valid picture element with 1 format', function (done) { var options = { alt: 'downtown', formats: ['webp'] }; var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options)); validator({ data: makeHTML(picture) }).then(function (data) { done(isInvalid(data)); }); }); it('should generate a valid picture element with img fallback size and 2 width descriptors', function (done) { var options = { alt: 'downtown', sizes: { fallback: '100vw' }, resolutions: ['320w', '640w'] }; var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options)); validator({ data: makeHTML(picture) }).then(function (data) { done(isInvalid(data)); }); }); it('should generate a valid picture element with 1 fallback size and 1 format', function (done) { var options = { alt: 'downtown', formats: ['webp'], resolutions: [640], sizes: { fallback: '700px' } }; var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options)); validator({ data: makeHTML(picture) }).then(function (data) { done(isInvalid(data)); }); }); }); //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVycy9ET00uc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGdDQUEwQztBQUMxQyw2QkFBb0M7QUFFcEMsSUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDNUMsSUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUM7QUFFdEMsSUFBTSxRQUFRLEdBQUcsVUFBQyxFQUFPO0lBQ3ZCLE9BQU8sc0hBT0MsRUFBRSxDQUFDLFFBQVEsRUFBRSxxQ0FHcEIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLElBQU0sU0FBUyxHQUFHLFVBQUMsSUFBUztJQUMxQixJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQU0sS0FBSyxHQUFhLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQUMsQ0FBTSxJQUFLLE9BQUEsQ0FBQyxDQUFDLElBQUksRUFBTixDQUFNLENBQUMsQ0FBQztJQUM5RCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDO0FBRUYsUUFBUSxDQUFDLGFBQWEsRUFBRTtJQUN0QixFQUFFLENBQUMsK0NBQStDLEVBQUUsVUFBQSxJQUFJO1FBQ3RELElBQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFNLE9BQU8sR0FBRyxpQkFBVyxDQUN6QixzQkFBZSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FDakMsQ0FBQztRQUNGLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLElBQVM7WUFDcEQsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJ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RUFBRSxPQUFPO2FBQ2xCO1NBQ0YsQ0FBQztRQUNGLElBQU0sT0FBTyxHQUFHLGlCQUFXLENBQ3pCLHNCQUFlLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUNqQyxDQUFDO1FBQ0YsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsSUFBUztZQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6ImFkYXB0ZXJzL0RPTS5zcGVjLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFrZVBpY3R1cmVUcmVlIH0gZnJvbSAnLi4vdHJlZSc7XG5pbXBvcnQgeyBtYWtlUGljdHVyZSB9IGZyb20gJy4vRE9NJztcblxuY29uc3QgdmFsaWRhdG9yID0gcmVxdWlyZSgnaHRtbC12YWxpZGF0b3InKTtcbmNvbnN0IGhhbmRsZSA9ICdzZVcxdGh2Y1IxYVFCZk9DRjhiWCc7XG5cbmNvbnN0IG1ha2VIVE1MID0gKGVsOiBhbnkpID0+IHtcbiAgcmV0dXJuIGBcbiAgPCFET0NUWVBFIGh0bWw+XG4gICAgPGh0bWw+XG4gICAgICA8aGVhZD5cbiAgICAgICAgPHRpdGxlPlRlc3Q8L3RpdGxlPlxuICAgICAgPC9oZWFkPlxuICAgICAgPGJvZHk+XG4gICAgICAgICR7ZWwudG9TdHJpbmcoKX1cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gIGA7XG59O1xuXG5jb25zdCBpc0ludmFsaWQgPSAoanNvbjogYW55KSA9PiB7XG4gIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGpzb24pO1xuICBjb25zdCB0eXBlczogc3RyaW5nW10gPSBkYXRhLm1lc3NhZ2VzLm1hcCgobTogYW55KSA9PiBtLnR5cGUpO1xuICByZXR1cm4gdHlwZXMuaW5kZXhPZignZXJyb3InKSAhPT0gLTE7XG59O1xuXG5kZXNjcmliZSgnRE9NIGFkYXB0ZXInLCAoKSA9PiB7XG4gIGl0KCdzYW5pdHkgLSBzaG91bGQgaW52YWxpZGF0ZSBhbiBpbWcgd2l0aG91dCBhbHQnLCBkb25lID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge307XG4gICAgY29uc3QgcGljdHVyZSA9IG1ha2VQaWN0dXJlKFxuICAgICAgbWFrZVBpY3R1cmVUcmVlKGhhbmRsZSwgb3B0aW9ucylcbiAgICApO1xuICAgIHZhbGlkYXRvcih7IGRhdGE6IG1ha2VIVE1MKHBpY3R1cmUpIH0pLnRoZW4oKGRhdGE6IGFueSkgPT4ge1xuICAgICAgZG9uZSghaXNJbnZhbGlkKGRhdGEpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIHZhbGlkIHBpY3R1cmUgZWxlbWVudCB3aXRoIHdpZHRoIGFuZCBwaXhlbCBkZW5zaXR5JywgZG9uZSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGFsdDogJ2Rvd250b3duJyxcbiAgICAgIHdpZHRoOiAnNzY4cHgnXG4gICAgfTtcbiAgICBjb25zdCBwaWN0dXJlID0gbWFrZVBpY3R1cmUoXG4gICAgICBtYWtlUGljdHVyZVRyZWUoaGFuZGxlLCBvcHRpb25zKVxuICAgICk7XG5cbiAgICB2YWxpZGF0b3IoeyBkYXRhOiBtYWtlSFRNTChwaWN0dXJlKSB9KS50aGVuKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIGRvbmUoaXNJbnZhbGlkKGRhdGEpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIHZhbGlkIHBpY3R1cmUgZWxlbWVudCB3aXRoIDEgc2l6ZSBhbmQgd2lkdGggZGVzY3JpcHRvcnMnLCBkb25lID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgYWx0OiAnZG93bnRvd24nLFxuICAgICAgc2l6ZXM6IHtcbiAgICAgICAgJyhtaW4td2lkdGg6IDY0MHB4KSc6ICc4MHZ3JyxcbiAgICAgICAgZmFsbGJhY2s6ICcxMDB2dydcbiAgICAgIH0sXG4gICAgICByZXNvbHV0aW9uczogWzU0MCwgNjcwLCAxMDgwXVxuICAgIH07XG4gICAgY29uc3QgcGljdHVyZSA9IG1ha2VQaWN0dXJlKFxuICAgICAgbWFrZVBpY3R1cmVUcmVlKGhhbmRsZSwgb3B0aW9ucylcbiAgICApO1xuICAgIHZhbGlkYXRvcih7IGRhdGE6IG1ha2VIVE1MKHBpY3R1cmUpIH0pLnRoZW4oKGRhdGE6IGFueSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coZGF0YSwgaXNJbnZhbGlkKGRhdGEpKTtcbiAgICAgIGRvbmUoaXNJbnZhbGlkKGRhdGEpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIHZhbGlkIHBpY3R1cmUgZWxlbWVudCB3aXRoIDIgZm9ybWF0cyBhbmQgMiBzaXplcycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBhbHQ6ICdkb3dudG93bicsXG4gICAgICBzaXplczoge1xuICAgICAgICAnKG1pbi13aWR0aDogNjQwcHgpJzogJzgwdncnLFxuICAgICAgICAnKG1pbi13aWR0aDogMzIwcHgpJzogJzcwMHB4JyxcbiAgICAgICAgZmFsbGJhY2s6ICcxMDB2dydcbiAgICAgIH0sXG4gICAgICBmb3JtYXRzOiBbJ3dlYnAnLCAnanBnJ11cbiAgICB9O1xuICAgIGNvbnN0IHBpY3R1cmUgPSBtYWtlUGljdHVyZShcbiAgICAgIG1ha2VQaWN0dXJlVHJlZShoYW5kbGUsIG9wdGlvbnMpXG4gICAgKTtcbiAgICB2YWxpZGF0b3IoeyBkYXRhOiBtYWtlSFRNTChwaWN0dXJlKSB9KS50aGVuKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIGRvbmUoaXNJbnZhbGlkKGRhdGEpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIHZhbGlkIHBpY3R1cmUgZWxlbWVudCB3aXRoIDEgZm9ybWF0IGFuZCBmYWxsYmFjaycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBhbHQ6ICdkb3dudG93bicsXG4gICAgICBzaXplczoge1xuICAgICAgICBmYWxsYmFjazogJzEwMHZ3J1xuICAgICAgfSxcbiAgICAgIGZvcm1hdHM6IFsnd2VicCcsICdqcGcnXVxuICAgIH07XG4gICAgY29uc3QgcGljdHVyZSA9IG1ha2VQaWN0dXJlKFxuICAgICAgbWFrZVBpY3R1cmVUcmVlKGhhbmRsZSwgb3B0aW9ucylcbiAgICApO1xuICAgIHZhbGlkYXRvcih7IGRhdGE6IG1ha2VIVE1MKHBpY3R1cmUpIH0pLnRoZW4oKGRhdGE6IGFueSkgPT4ge1xuICAgICAgZG9uZShpc0ludmFsaWQoZGF0YSkpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEgdmFsaWQgcGljdHVyZSBlbGVtZW50IHdpdGggMSBmb3JtYXQnLCBkb25lID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgYWx0OiAnZG93bnRvd24nLFxuICAgICAgZm9ybWF0czogWyd3ZWJwJ11cbiAgICB9O1xuICAgIGNvbnN0IHBpY3R1cmUgPSBtYWtlUGljdHVyZShcbiAgICAgIG1ha2VQaWN0dXJlVHJlZShoYW5kbGUsIG9wdGlvbnMpXG4gICAgKTtcbiAgICB2YWxpZGF0b3IoeyBkYXRhOiBtYWtlSFRNTChwaWN0dXJlKSB9KS50aGVuKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIGRvbmUoaXNJbnZhbGlkKGRhdGEpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIHZhbGlkIHBpY3R1cmUgZWxlbWVudCB3aXRoIGltZyBmYWxsYmFjayBzaXplIGFuZCAyIHdpZHRoIGRlc2NyaXB0b3JzJywgZG9uZSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGFsdDogJ2Rvd250b3duJyxcbiAgICAgIHNpemVzOiB7XG4gICAgICAgIGZhbGxiYWNrOiAnMTAwdncnXG4gICAgICB9LFxuICAgICAgcmVzb2x1dGlvbnM6IFsnMzIwdycsICc2NDB3J11cbiAgICB9O1xuICAgIGNvbnN0IHBpY3R1cmUgPSBtYWtlUGljdHVyZShcbiAgICAgIG1ha2VQaWN0dXJlVHJlZShoYW5kbGUsIG9wdGlvbnMpXG4gICAgKTtcbiAgICB2YWxpZGF0b3IoeyBkYXRhOiBtYWtlSFRNTChwaWN0dXJlKSB9KS50aGVuKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIGRvbmUoaXNJbnZhbGlkKGRhdGEpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIHZhbGlkIHBpY3R1cmUgZWxlbWVudCB3aXRoIDEgZmFsbGJhY2sgc2l6ZSBhbmQgMSBmb3JtYXQnLCBkb25lID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgYWx0OiAnZG93bnRvd24nLFxuICAgICAgZm9ybWF0czogWyd3ZWJwJ10sXG4gICAgICByZXNvbHV0aW9uczogWzY0MF0sXG4gICAgICBzaXplczoge1xuICAgICAgICBmYWxsYmFjazogJzcwMHB4J1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgcGljdHVyZSA9IG1ha2VQaWN0dXJlKFxuICAgICAgbWFrZVBpY3R1cmVUcmVlKGhhbmRsZSwgb3B0aW9ucylcbiAgICApO1xuICAgIHZhbGlkYXRvcih7IGRhdGE6IG1ha2VIVE1MKHBpY3R1cmUpIH0pLnRoZW4oKGRhdGE6IGFueSkgPT4ge1xuICAgICAgZG9uZShpc0ludmFsaWQoZGF0YSkpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19