diff --git a/README.md b/README.md
index 3135982..dc91b89 100644
--- a/README.md
+++ b/README.md
@@ -63,10 +63,10 @@ make test
Les tests sont réalisés avec `puppeteer` et `jest`.
-Pour lancer les tests et voir le navigateur (permet de débugger) :
+Pour lancer les tests et voir le navigateur (en mode debug) :
```
-SHOW=true make test
+DEBUG=1 make test
```
diff --git a/public/js/app.js b/public/js/app.js
index 5dbd4cd..ef0ffd2 100644
--- a/public/js/app.js
+++ b/public/js/app.js
@@ -5,6 +5,7 @@ var pdfjsLib = window['pdfjs-dist/build/pdf'];
// The workerSrc property shall be specified.
pdfjsLib.GlobalWorkerOptions.workerSrc = '/vendor/pdf.worker.js?legacy';
+var canvasEditions = [];
// Asynchronous download of PDF
var loadingTask = pdfjsLib.getDocument(url);
@@ -15,7 +16,6 @@ loadingTask.promise.then(function(pdf) {
var copiedObject = null;
var activeCanvas = null;
var activeCanvasPointer = null;
- var canvasEditions = [];
var pdfRenderTasks = [];
var pdfPages = [];
var svgCollections = [];
@@ -396,7 +396,6 @@ loadingTask.promise.then(function(pdf) {
document.getElementById('input-text-signature').addEventListener('keydown', function(event) {
document.getElementById('btn_modal_ajouter').removeAttribute('disabled');
if(event.key == 'Enter') {
- document.getElementById('btn_modal_ajouter').removeAttribute('disabled');
document.getElementById('btn_modal_ajouter').click()
}
})
@@ -657,7 +656,7 @@ loadingTask.promise.then(function(pdf) {
var pageIndex = page.pageNumber - 1;
document.getElementById('form_pdf').insertAdjacentHTML('beforeend', ' ');
- document.getElementById('container-pages').insertAdjacentHTML('beforeend', '
');
+ document.getElementById('container-pages').insertAdjacentHTML('beforeend', '');
var canvasPDF = document.getElementById('canvas-pdf-' + pageIndex);
var canvasEditionHTML = document.getElementById('canvas-edition-' + pageIndex);
diff --git a/tests/signature.test.js b/tests/signature.test.js
index ea770e8..d60e9c8 100644
--- a/tests/signature.test.js
+++ b/tests/signature.test.js
@@ -1,7 +1,7 @@
const puppeteer = require('puppeteer');
const cp = require("child_process");
var headless = true;
-if(process.env.SHOW) {
+if(process.env.DEBUG) {
headless = false;
}
var page = null;
@@ -10,6 +10,8 @@ var server = null
var host = "localhost:"+(9000 + Math.floor((Math.random() * 1000)));
describe("Signature d'un pdf", () => {
+ var originX;
+ var originY;
beforeAll(async () => {
server = cp.spawn("php", ["-S", host, "-t", "public"]);
browser = await puppeteer.launch({ headless: headless });
@@ -20,51 +22,82 @@ describe("Signature d'un pdf", () => {
it('Upload et chargement du pdf', async () => {
await (await page.$("input#input_pdf_upload")).uploadFile(require('path').resolve(__dirname + '/files/document.pdf'));
await page.waitForNavigation()
+ await page.waitForSelector('#canvas-pdf-15', {visible: true});
+ expect(await page.evaluate(() => { return document.querySelectorAll('.canvas-pdf').length })).toBe(16);
});
it("Création d'une signature", async () => {
await page.waitForSelector('#label_svg_signature_add', {visible: true});
await page.waitForTimeout(300);
await page.click("#label_svg_signature_add")
await page.waitForSelector('#signature-pad', {visible: true});
- await page.waitForTimeout(100);
- await page.click('#signature-pad');
+ await page.waitForTimeout(200);
+ await page.mouse.move(600,150);
+ await page.mouse.down();
+ await page.mouse.move(700,250, {steps: 20});
+ await page.mouse.up();
+ await page.mouse.move(600,250);
+ await page.mouse.down();
+ await page.mouse.move(700,150,{steps: 20});
+ await page.mouse.up();
await page.waitForSelector('button#btn_modal_ajouter:not([disabled])');
await page.waitForTimeout(100);
await page.click('button#btn_modal_ajouter');
await page.waitForTimeout(300);
+ expect(await page.evaluate(() => { return document.querySelector("#label_svg_0 img").src })).toMatch(/^data:image\/svg\+xml;base64,.+/);
});
it('Ajout de la signature dans le pdf', async () => {
- await page.mouse.click(100,100);
- await page.waitForTimeout(100);
+ originX = await page.evaluate(() => { return document.querySelector("#canvas-container-0").offsetLeft; });
+ originY = await page.evaluate(() => { return document.querySelector("#canvas-container-0").offsetTop; });
+ await page.mouse.click(originX + 50, originY + 50);
+ await page.waitForTimeout(300);
+ expect(await page.evaluate(() => { return canvasEditions[0].getObjects().length; })).toBe(1);
+ expect(await page.evaluate(() => { return Math.round(canvasEditions[0].getObjects()[0].getScaledHeight())})).toBe(100);
+ expect(await page.evaluate(() => { return Math.round(canvasEditions[0].getObjects()[0].getScaledWidth())})).toBe(100);
+ expect(await page.evaluate(() => { return Math.abs(Math.round(canvasEditions[0].getObjects()[0].left))})).toBe(0);
+ expect(await page.evaluate(() => { return Math.abs(Math.round(canvasEditions[0].getObjects()[0].top))})).toBe(0);
});
it('Déplacement de la signature', async () => {
await page.mouse.down();
await page.waitForTimeout(100);
- await page.mouse.move(400,400);
+ await page.mouse.move(originX + 350, originY + 350);
+ await page.mouse.up();
+ expect(await page.evaluate(() => { return Math.round(canvasEditions[0].getObjects()[0].left)})).toBe(300);
+ expect(await page.evaluate(() => { return Math.round(canvasEditions[0].getObjects()[0].top)})).toBe(300);
+ await page.waitForTimeout(100);
+ });
+ it('Redimensionnement de la signature', async () => {
+ await page.mouse.move(originX + 400, originY + 400);
+ await page.mouse.down();
+ await page.waitForTimeout(100);
+ await page.mouse.move(originX + 450, originY + 450);
await page.mouse.up();
await page.waitForTimeout(100);
- // Redimensionnement de la signature
- await page.mouse.move(460,450);
- await page.mouse.down();
- await page.waitForTimeout(100);
- await page.mouse.move(500,500);
- await page.mouse.up();
- await page.waitForTimeout(100);
- // Ajout d'une seconde signature
- await page.click("#label_svg_0");
- await page.waitForTimeout(100);
- await page.mouse.click(100,100);
- // Suppression de la seconde signature
- await page.mouse.click(100,100);
- await page.waitForTimeout(100);
- await page.keyboard.press('Delete');
- // Suppression de la signature de la liste
- await page.click("#label_svg_0 .btn-svg-list-suppression")
- await page.waitForTimeout(100);
- });
- afterAll(async () => {
- await browser.close();
- await server.kill();
+ expect(await page.evaluate(() => { return Math.round(canvasEditions[0].getObjects()[0].getScaledHeight())})).toBe(150);
+ expect(await page.evaluate(() => { return Math.round(canvasEditions[0].getObjects()[0].getScaledWidth())})).toBe(150);
+ });
+ it("Ajout d'une seconde signature", async () => {
+ await page.click("#label_svg_0");
+ await page.waitForTimeout(100);
+ await page.mouse.click(100,100);
+ expect(await page.evaluate(() => { return canvasEditions[0].getObjects().length; })).toBe(2);
+ });
+ it("Suppression de la seconde signature", async () => {
+ await page.mouse.click(100,100);
+ await page.waitForTimeout(100);
+ await page.keyboard.press('Delete');
+ expect(await page.evaluate(() => { return canvasEditions[0].getObjects().length; })).toBe(1);
+ })
+ it("Suppression de la signature de la liste", async () => {
+ await page.click("#label_svg_0 .btn-svg-list-suppression")
+ await page.waitForTimeout(100);
+ expect(await page.evaluate(() => { return document.querySelector("#label_svg_0 img") })).toBeNull();
+ });
+ afterAll(async () => {
+ if(process.env.DEBUG) {
+ return;
+ }
+ await server.kill();
+ await browser.close();
});
});