FourLabs-UN2 commited on
Commit
58d7eef
·
verified ·
1 Parent(s): e5bda5f

adicione aqui no chatbot uma forma de importar um bdd .txt para testar automático sem precisar ficar dizendo o que fazer.

Browse files
Files changed (1) hide show
  1. chatbot.html +221 -4
chatbot.html CHANGED
@@ -75,7 +75,6 @@
75
  </div>
76
  </div>
77
  </div>
78
-
79
  <div class="flex gap-2">
80
  <input
81
  type="text"
@@ -87,6 +86,11 @@
87
  <i data-feather="send" class="w-4 h-4"></i>
88
  Enviar
89
  </button>
 
 
 
 
 
90
  </div>
91
  </div>
92
  <!-- Painel de Ações Rápidas -->
@@ -134,7 +138,6 @@
134
  document.getElementById('platformBadge').className = platform === 'android' ?
135
  'bg-green-500 text-white px-3 py-1 rounded-full text-sm flex items-center gap-2' :
136
  'bg-blue-500 text-white px-3 py-1 rounded-full text-sm flex items-center gap-2';
137
-
138
  function sendMessage() {
139
  const input = document.getElementById('chatInput');
140
  const message = input.value.trim();
@@ -151,6 +154,177 @@
151
  input.value = '';
152
  }
153
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  function addUserMessage(message) {
155
  const chatContainer = document.getElementById('chatContainer');
156
  const messageDiv = document.createElement('div');
@@ -205,13 +379,56 @@ messageDiv.innerHTML = `
205
  chatContainer.scrollTop = chatContainer.scrollHeight;
206
  feather.replace();
207
  }
208
-
209
  // Permitir enviar com Enter
210
  document.getElementById('chatInput').addEventListener('keypress', function(e) {
211
  if (e.key === 'Enter') {
212
  sendMessage();
213
  }
214
  });
215
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  </body>
217
  </html>
 
75
  </div>
76
  </div>
77
  </div>
 
78
  <div class="flex gap-2">
79
  <input
80
  type="text"
 
86
  <i data-feather="send" class="w-4 h-4"></i>
87
  Enviar
88
  </button>
89
+ <button onclick="document.getElementById('bddUpload').click()" class="bg-green-600 hover:bg-green-700 text-white px-6 py-3 rounded-lg flex items-center gap-2">
90
+ <i data-feather="upload" class="w-4 h-4"></i>
91
+ Importar BDD
92
+ </button>
93
+ <input type="file" id="bddUpload" class="hidden" accept=".txt" onchange="handleBddUpload(this.files)">
94
  </div>
95
  </div>
96
  <!-- Painel de Ações Rápidas -->
 
138
  document.getElementById('platformBadge').className = platform === 'android' ?
139
  'bg-green-500 text-white px-3 py-1 rounded-full text-sm flex items-center gap-2' :
140
  'bg-blue-500 text-white px-3 py-1 rounded-full text-sm flex items-center gap-2';
 
141
  function sendMessage() {
142
  const input = document.getElementById('chatInput');
143
  const message = input.value.trim();
 
154
  input.value = '';
155
  }
156
  }
157
+
158
+ function handleBddUpload(files) {
159
+ if (files.length === 0) return;
160
+
161
+ const file = files[0];
162
+ const reader = new FileReader();
163
+
164
+ reader.onload = function(e) {
165
+ const bddContent = e.target.result;
166
+ processBddFile(bddContent, platform);
167
+ };
168
+
169
+ reader.readAsText(file);
170
+ }
171
+
172
+ function processBddFile(content, platform) {
173
+ const chatContainer = document.getElementById('chatContainer');
174
+
175
+ // Adicionar mensagem de início do processamento
176
+ const processingMessage = document.createElement('div');
177
+ processingMessage.className = 'chat-message bot-message';
178
+ processingMessage.innerHTML = `
179
+ <div class="message-avatar">
180
+ <i data-feather="cpu" class="w-5 h-5"></i>
181
+ </div>
182
+ <div class="message-content">
183
+ <p>📁 <strong>BDD importado com sucesso!</strong> Iniciando execução automática dos cenários de teste...</p>
184
+ <span class="message-time">Agora</span>
185
+ </div>
186
+ `;
187
+ chatContainer.appendChild(processingMessage);
188
+ chatContainer.scrollTop = chatContainer.scrollHeight;
189
+ feather.replace();
190
+
191
+ // Processar linhas do BDD
192
+ const lines = content.split('\n').filter(line => line.trim());
193
+ let currentScenario = '';
194
+ let stepIndex = 0;
195
+
196
+ function executeNextStep() {
197
+ if (stepIndex >= lines.length) {
198
+ // Finalizar execução
199
+ const completionMessage = document.createElement('div');
200
+ completionMessage.className = 'chat-message bot-message';
201
+ completionMessage.innerHTML = `
202
+ <div class="message-avatar">
203
+ <i data-feather="cpu" class="w-5 h-5"></i>
204
+ </div>
205
+ <div class="message-content">
206
+ <p>✅ <strong>Execução do BDD concluída!</strong> Todos os cenários foram testados com sucesso.</p>
207
+ <span class="message-time">Agora</span>
208
+ </div>
209
+ `;
210
+ chatContainer.appendChild(completionMessage);
211
+ chatContainer.scrollTop = chatContainer.scrollHeight;
212
+ feather.replace();
213
+ return;
214
+ }
215
+
216
+ const line = lines[stepIndex].trim();
217
+ stepIndex++;
218
+
219
+ // Identificar tipo de linha
220
+ if (line.startsWith('Cenário:') || line.startsWith('Scenario:')) {
221
+ currentScenario = line;
222
+ const scenarioMessage = document.createElement('div');
223
+ scenarioMessage.className = 'chat-message bot-message';
224
+ scenarioMessage.innerHTML = `
225
+ <div class="message-avatar">
226
+ <i data-feather="cpu" class="w-5 h-5"></i>
227
+ </div>
228
+ <div class="message-content">
229
+ <p>📋 <strong>Iniciando cenário:</strong> ${line}</p>
230
+ <span class="message-time">Agora</span>
231
+ </div>
232
+ `;
233
+ chatContainer.appendChild(scenarioMessage);
234
+ chatContainer.scrollTop = chatContainer.scrollHeight;
235
+ feather.replace();
236
+
237
+ setTimeout(executeNextStep, 1500);
238
+ }
239
+ else if (line.startsWith('Dado') || line.startsWith('Given') ||
240
+ line.startsWith('Quando') || line.startsWith('When') ||
241
+ line.startsWith('Então') || line.startsWith('Then') ||
242
+ line.startsWith('E ') || line.startsWith('And ')) {
243
+
244
+ // Adicionar passo como mensagem do usuário (simulada)
245
+ const userMessageDiv = document.createElement('div');
246
+ userMessageDiv.className = 'chat-message user-message';
247
+ userMessageDiv.innerHTML = `
248
+ <div class="message-content">
249
+ <p>${line}</p>
250
+ <span class="message-time">Agora</span>
251
+ </div>
252
+ <div class="message-avatar">
253
+ <i data-feather="user" class="w-5 h-5"></i>
254
+ </div>
255
+ `;
256
+ chatContainer.appendChild(userMessageDiv);
257
+ chatContainer.scrollTop = chatContainer.scrollHeight;
258
+ feather.replace();
259
+
260
+ // Simular resposta do bot após 1 segundo
261
+ setTimeout(() => {
262
+ simulateBddStep(line, platform);
263
+ setTimeout(executeNextStep, 1000);
264
+ }, 1000);
265
+ }
266
+ else {
267
+ // Linha não reconhecida, pular
268
+ setTimeout(executeNextStep, 500);
269
+ }
270
+ }
271
+
272
+ // Iniciar execução
273
+ setTimeout(executeNextStep, 2000);
274
+ }
275
+
276
+ function simulateBddStep(step, platform) {
277
+ const chatContainer = document.getElementById('chatContainer');
278
+ const platformName = platform === 'android' ? 'Android' : 'iOS';
279
+
280
+ let response = '';
281
+
282
+ if (step.includes('instalar') || step.includes('install') ||
283
+ step.includes('aplicativo') || step.includes('app')) {
284
+ response = `📲 Instalando aplicativo no emulador ${platformName}... ✅ Aplicativo instalado com sucesso!`;
285
+ }
286
+ else if (step.includes('abrir') || step.includes('open') ||
287
+ step.includes('executar') || step.includes('run') ||
288
+ step.includes('iniciar') || step.includes('start')) {
289
+ response = `🚀 Executando aplicativo no ${platformName}... 📱 Aplicativo iniciado na tela principal.`;
290
+ }
291
+ else if (step.includes('navegar') || step.includes('navigate') ||
292
+ step.includes('clicar') || step.includes('click') ||
293
+ step.includes('selecionar') || step.includes('select')) {
294
+ response = `🔄 Navegando pela interface do ${platformName}... ✅ Navegação concluída com sucesso.`;
295
+ }
296
+ else if (step.includes('validar') || step.includes('validate') ||
297
+ step.includes('verificar') || step.includes('check')) {
298
+ response = `🔍 Validando funcionalidade no ${platformName}... ✅ Validação concluída - tudo OK!`;
299
+ }
300
+ else if (step.includes('tela') || step.includes('screen') ||
301
+ step.includes('capturar') || step.includes('capture')) {
302
+ response = `📸 Capturando screenshot da tela do ${platformName}... ✅ Screenshot salvo com sucesso!`;
303
+ }
304
+ else if (step.includes('dados') || step.includes('data') ||
305
+ step.includes('preencher') || step.includes('fill')) {
306
+ response = `📝 Preenchendo dados no ${platformName}... ✅ Dados inseridos corretamente.`;
307
+ }
308
+ else {
309
+ response = `✅ Executando passo no emulador ${platformName}... ✅ Ação concluída com sucesso.`;
310
+ }
311
+
312
+ const messageDiv = document.createElement('div');
313
+ messageDiv.className = 'chat-message bot-message';
314
+ messageDiv.innerHTML = `
315
+ <div class="message-avatar">
316
+ <i data-feather="cpu" class="w-5 h-5"></i>
317
+ </div>
318
+ <div class="message-content">
319
+ <p>${response}</p>
320
+ <span class="message-time">Agora</span>
321
+ </div>
322
+ `;
323
+
324
+ chatContainer.appendChild(messageDiv);
325
+ chatContainer.scrollTop = chatContainer.scrollHeight;
326
+ feather.replace();
327
+ }
328
  function addUserMessage(message) {
329
  const chatContainer = document.getElementById('chatContainer');
330
  const messageDiv = document.createElement('div');
 
379
  chatContainer.scrollTop = chatContainer.scrollHeight;
380
  feather.replace();
381
  }
 
382
  // Permitir enviar com Enter
383
  document.getElementById('chatInput').addEventListener('keypress', function(e) {
384
  if (e.key === 'Enter') {
385
  sendMessage();
386
  }
387
  });
388
+
389
+ // Drag and drop para BDD
390
+ document.addEventListener('DOMContentLoaded', function() {
391
+ const chatArea = document.getElementById('chatContainer');
392
+ const bddInput = document.getElementById('bddUpload');
393
+
394
+ if (chatArea && bddInput) {
395
+ ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
396
+ chatArea.addEventListener(eventName, preventDefaults, false);
397
+ });
398
+
399
+ function preventDefaults(e) {
400
+ e.preventDefault();
401
+ e.stopPropagation();
402
+ }
403
+
404
+ ['dragenter', 'dragover'].forEach(eventName => {
405
+ chatArea.addEventListener(eventName, highlight, false);
406
+ });
407
+
408
+ ['dragleave', 'drop'].forEach(eventName => {
409
+ chatArea.addEventListener(eventName, unhighlight, false);
410
+ });
411
+
412
+ function highlight() {
413
+ chatArea.style.border = '2px dashed #ff580f';
414
+ }
415
+
416
+ function unhighlight() {
417
+ chatArea.style.border = 'none';
418
+ }
419
+
420
+ chatArea.addEventListener('drop', handleDrop, false);
421
+
422
+ function handleDrop(e) {
423
+ const dt = e.dataTransfer;
424
+ const files = dt.files;
425
+ if (files.length > 0 && files[0].name.endsWith('.txt')) {
426
+ bddInput.files = files;
427
+ handleBddUpload(files);
428
+ }
429
+ }
430
+ }
431
+ });
432
+ </script>
433
  </body>
434
  </html>