FourLabs-UN2 commited on
Commit
4470195
·
verified ·
1 Parent(s): d8cd022

Monte com sidebar e essas cores:

Browse files

colors: {
primary: '#21223a',
secondary: '#ff580f',
}v

Monte uma aplicação onde terá um botão e o usuário irá clicar para iniciar um novo teste assim abrindo um modal para ele selecionar um emulador android rodando e enviar o aplicativo .apk

Faça de forma bonita e profissional a página e o modal.

Ao enviar o aplicativo e o emulador selecionado irá abrir um chatbot para o usuário testar o aplicativo usando linguagem natural. Adicione no chatbot os botões para as funcionalidades: Instalar aplicativo, rodar testes, abrir evidências, excluir mensagens e um botão de configuração.

Files changed (3) hide show
  1. README.md +9 -5
  2. components/chatbot.js +229 -0
  3. index.html +175 -19
README.md CHANGED
@@ -1,10 +1,14 @@
1
  ---
2
- title: Android Autopilot Wizard
3
- emoji: 🐨
4
- colorFrom: gray
5
- colorTo: indigo
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
1
  ---
2
+ title: Android AutoPilot Wizard 🚀✨
3
+ colorFrom: purple
4
+ colorTo: gray
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://deepsite.hf.co).
14
+
components/chatbot.js ADDED
@@ -0,0 +1,229 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class ChatbotComponent extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ position: fixed;
9
+ bottom: 20px;
10
+ right: 20px;
11
+ width: 400px;
12
+ max-height: 600px;
13
+ background: white;
14
+ border-radius: 12px;
15
+ box-shadow: 0 10px 25px rgba(0,0,0,0.1);
16
+ z-index: 1000;
17
+ overflow: hidden;
18
+ font-family: 'Inter', sans-serif;
19
+ }
20
+
21
+ .chatbot-header {
22
+ background: #21223a;
23
+ color: white;
24
+ padding: 16px;
25
+ display: flex;
26
+ justify-content: space-between;
27
+ align-items: center;
28
+ }
29
+
30
+ .chatbot-title {
31
+ font-weight: 600;
32
+ font-size: 18px;
33
+ }
34
+
35
+ .chatbot-close {
36
+ background: none;
37
+ border: none;
38
+ color: white;
39
+ cursor: pointer;
40
+ }
41
+
42
+ .chatbot-body {
43
+ padding: 16px;
44
+ height: 400px;
45
+ overflow-y: auto;
46
+ }
47
+
48
+ .message {
49
+ margin-bottom: 12px;
50
+ max-width: 80%;
51
+ padding: 8px 12px;
52
+ border-radius: 8px;
53
+ font-size: 14px;
54
+ }
55
+
56
+ .bot-message {
57
+ background: #f3f4f6;
58
+ margin-right: auto;
59
+ border-top-left-radius: 0;
60
+ }
61
+
62
+ .user-message {
63
+ background: #ff580f;
64
+ color: white;
65
+ margin-left: auto;
66
+ border-top-right-radius: 0;
67
+ }
68
+
69
+ .chatbot-footer {
70
+ display: flex;
71
+ padding: 16px;
72
+ border-top: 1px solid #e5e7eb;
73
+ background: #f9fafb;
74
+ }
75
+
76
+ .chatbot-input {
77
+ flex: 1;
78
+ padding: 10px 12px;
79
+ border: 1px solid #e5e7eb;
80
+ border-radius: 8px;
81
+ outline: none;
82
+ margin-right: 8px;
83
+ }
84
+
85
+ .chatbot-submit {
86
+ background: #21223a;
87
+ color: white;
88
+ border: none;
89
+ border-radius: 8px;
90
+ padding: 0 16px;
91
+ cursor: pointer;
92
+ display: flex;
93
+ align-items: center;
94
+ }
95
+
96
+ .action-buttons {
97
+ display: flex;
98
+ gap: 8px;
99
+ padding: 8px 16px;
100
+ background: #f9fafb;
101
+ border-top: 1px solid #e5e7eb;
102
+ }
103
+
104
+ .action-btn {
105
+ background: white;
106
+ border: 1px solid #e5e7eb;
107
+ border-radius: 20px;
108
+ padding: 6px 12px;
109
+ font-size: 12px;
110
+ display: flex;
111
+ align-items: center;
112
+ cursor: pointer;
113
+ transition: all 0.2s;
114
+ }
115
+
116
+ .action-btn:hover {
117
+ background: #21223a;
118
+ color: white;
119
+ }
120
+
121
+ .action-btn i {
122
+ margin-right: 4px;
123
+ font-size: 12px;
124
+ }
125
+ </style>
126
+
127
+ <div class="chatbot-header">
128
+ <div class="chatbot-title">Android Test Assistant</div>
129
+ <button class="chatbot-close" id="closeChatbot">
130
+ <i data-feather="x"></i>
131
+ </button>
132
+ </div>
133
+
134
+ <div class="chatbot-body" id="chatbotMessages">
135
+ <div class="message bot-message">
136
+ Welcome! How can I help you test your Android application today?
137
+ </div>
138
+ </div>
139
+
140
+ <div class="action-buttons">
141
+ <button class="action-btn" id="installBtn">
142
+ <i data-feather="download"></i> Install
143
+ </button>
144
+ <button class="action-btn" id="testBtn">
145
+ <i data-feather="activity"></i> Run Tests
146
+ </button>
147
+ <button class="action-btn" id="evidenceBtn">
148
+ <i data-feather="image"></i> Evidence
149
+ </button>
150
+ <button class="action-btn" id="clearBtn">
151
+ <i data-feather="trash-2"></i> Clear
152
+ </button>
153
+ <button class="action-btn" id="settingsBtn">
154
+ <i data-feather="settings"></i> Settings
155
+ </button>
156
+ </div>
157
+
158
+ <div class="chatbot-footer">
159
+ <input type="text" class="chatbot-input" id="chatbotInput" placeholder="Type your command...">
160
+ <button class="chatbot-submit" id="chatbotSubmit">
161
+ <i data-feather="send"></i>
162
+ </button>
163
+ </div>
164
+ `;
165
+
166
+ // Initialize feather icons
167
+ feather.replace();
168
+
169
+ // Add event listeners
170
+ this.shadowRoot.getElementById('chatbotSubmit').addEventListener('click', this.sendMessage.bind(this));
171
+ this.shadowRoot.getElementById('chatbotInput').addEventListener('keypress', (e) => {
172
+ if (e.key === 'Enter') this.sendMessage();
173
+ });
174
+
175
+ this.shadowRoot.getElementById('closeChatbot').addEventListener('click', () => {
176
+ this.style.display = 'none';
177
+ });
178
+
179
+ // Action buttons
180
+ this.shadowRoot.getElementById('installBtn').addEventListener('click', () => {
181
+ this.addMessage('Installing application...', 'bot');
182
+ });
183
+
184
+ this.shadowRoot.getElementById('testBtn').addEventListener('click', () => {
185
+ this.addMessage('Running automated tests...', 'bot');
186
+ });
187
+
188
+ this.shadowRoot.getElementById('evidenceBtn').addEventListener('click', () => {
189
+ this.addMessage('Opening test evidence...', 'bot');
190
+ });
191
+
192
+ this.shadowRoot.getElementById('clearBtn').addEventListener('click', () => {
193
+ this.shadowRoot.getElementById('chatbotMessages').innerHTML = '';
194
+ this.addMessage('Chat cleared. How can I help?', 'bot');
195
+ });
196
+
197
+ this.shadowRoot.getElementById('settingsBtn').addEventListener('click', () => {
198
+ this.addMessage('Opening settings panel...', 'bot');
199
+ });
200
+ }
201
+
202
+ sendMessage() {
203
+ const input = this.shadowRoot.getElementById('chatbotInput');
204
+ const message = input.value.trim();
205
+ if (message) {
206
+ this.addMessage(message, 'user');
207
+ input.value = '';
208
+
209
+ // Simulate bot response
210
+ setTimeout(() => {
211
+ this.addMessage('I can help you with that. What exactly would you like to test?', 'bot');
212
+ }, 1000);
213
+ }
214
+ }
215
+
216
+ addMessage(text, sender) {
217
+ const messagesDiv = this.shadowRoot.getElementById('chatbotMessages');
218
+ const messageDiv = document.createElement('div');
219
+ messageDiv.className = `message ${sender}-message`;
220
+ messageDiv.textContent = text;
221
+ messagesDiv.appendChild(messageDiv);
222
+ messagesDiv.scrollTop = messagesDiv.scrollHeight;
223
+
224
+ // Refresh feather icons
225
+ feather.replace();
226
+ }
227
+ }
228
+
229
+ customElements.define('custom-chatbot', ChatbotComponent);
index.html CHANGED
@@ -1,19 +1,175 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Android Test Wizard</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
+ <script src="https://unpkg.com/feather-icons"></script>
11
+ <script>
12
+ tailwind.config = {
13
+ theme: {
14
+ extend: {
15
+ colors: {
16
+ primary: '#21223a',
17
+ secondary: '#ff580f',
18
+ }
19
+ }
20
+ }
21
+ }
22
+ </script>
23
+ </head>
24
+ <body class="bg-gray-100 font-sans">
25
+ <div class="flex h-screen overflow-hidden">
26
+ <!-- Sidebar -->
27
+ <div class="hidden md:flex flex-col w-64 bg-primary text-white">
28
+ <div class="flex items-center justify-center h-16 p-4 border-b border-gray-700">
29
+ <div class="flex items-center space-x-2">
30
+ <i data-feather="box" class="text-secondary"></i>
31
+ <span class="text-xl font-bold">Android Test Wizard</span>
32
+ </div>
33
+ </div>
34
+ <div class="flex flex-col flex-1 overflow-y-auto">
35
+ <nav class="flex-1 p-4 space-y-2">
36
+ <a href="#" class="flex items-center px-4 py-2 rounded-lg bg-primary-dark hover:bg-gray-700 transition">
37
+ <i data-feather="home" class="mr-3"></i>
38
+ Dashboard
39
+ </a>
40
+ <a href="#" class="flex items-center px-4 py-2 rounded-lg hover:bg-gray-700 transition">
41
+ <i data-feather="activity" class="mr-3"></i>
42
+ Test History
43
+ </a>
44
+ <a href="#" class="flex items-center px-4 py-2 rounded-lg hover:bg-gray-700 transition">
45
+ <i data-feather="settings" class="mr-3"></i>
46
+ Settings
47
+ </a>
48
+ </nav>
49
+ <div class="p-4 border-t border-gray-700">
50
+ <div class="flex items-center space-x-2">
51
+ <div class="h-10 w-10 rounded-full bg-gray-600 flex items-center justify-center">
52
+ <i data-feather="user"></i>
53
+ </div>
54
+ <div>
55
+ <p class="font-medium">John Doe</p>
56
+ <p class="text-sm text-gray-400">Admin</p>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ </div>
61
+ </div>
62
+
63
+ <!-- Main Content -->
64
+ <div class="flex-1 overflow-auto">
65
+ <!-- Header -->
66
+ <header class="bg-white shadow-sm">
67
+ <div class="flex items-center justify-between h-16 px-4">
68
+ <div class="flex items-center md:hidden">
69
+ <button id="sidebarToggle" class="text-gray-500 hover:text-gray-700">
70
+ <i data-feather="menu"></i>
71
+ </button>
72
+ </div>
73
+ <div class="flex items-center space-x-4">
74
+ <button class="text-gray-500 hover:text-gray-700">
75
+ <i data-feather="bell"></i>
76
+ </button>
77
+ <div class="h-8 w-8 rounded-full bg-gray-200 flex items-center justify-center">
78
+ <i data-feather="user" class="text-gray-600"></i>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ </header>
83
+
84
+ <!-- Content -->
85
+ <main class="p-6">
86
+ <div class="max-w-4xl mx-auto">
87
+ <div class="bg-white rounded-xl shadow-md overflow-hidden p-6 mb-6">
88
+ <div class="flex flex-col items-center justify-center py-12">
89
+ <div class="bg-secondary bg-opacity-10 p-4 rounded-full mb-6">
90
+ <i data-feather="play" class="text-secondary w-10 h-10"></i>
91
+ </div>
92
+ <h2 class="text-2xl font-bold text-gray-800 mb-2">Start a New Test Session</h2>
93
+ <p class="text-gray-600 mb-8">Upload your APK and select an emulator to begin testing your Android application.</p>
94
+ <button id="startTestBtn" class="bg-secondary hover:bg-orange-700 text-white font-medium py-3 px-6 rounded-lg transition flex items-center">
95
+ <i data-feather="plus" class="mr-2"></i> Start New Test
96
+ </button>
97
+ </div>
98
+ </div>
99
+
100
+ <div class="grid md:grid-cols-2 gap-6">
101
+ <div class="bg-white rounded-xl shadow-md overflow-hidden p-6">
102
+ <h3 class="text-lg font-medium text-gray-800 mb-4">Recent Tests</h3>
103
+ <div class="space-y-3">
104
+ <div class="border-b pb-3 last:border-0">
105
+ <p class="font-medium">com.example.app</p>
106
+ <p class="text-sm text-gray-500">Completed 2 hours ago</p>
107
+ </div>
108
+ <div class="border-b pb-3 last:border-0">
109
+ <p class="font-medium">com.test.app</p>
110
+ <p class="text-sm text-gray-500">Failed yesterday</p>
111
+ </div>
112
+ </div>
113
+ </div>
114
+ <div class="bg-white rounded-xl shadow-md overflow-hidden p-6">
115
+ <h3 class="text-lg font-medium text-gray-800 mb-4">Available Emulators</h3>
116
+ <div class="space-y-3">
117
+ <div class="border-b pb-3 last:border-0">
118
+ <p class="font-medium">Pixel 3 API 30</p>
119
+ <p class="text-sm text-gray-500">Android 11</p>
120
+ </div>
121
+ <div class="border-b pb-3 last:border-0">
122
+ <p class="font-medium">Pixel 5 API 31</p>
123
+ <p class="text-sm text-gray-500">Android 12</p>
124
+ </div>
125
+ </div>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ </main>
130
+ </div>
131
+ </div>
132
+ <!-- Test Modal -->
133
+ <div id="testModal" class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 hidden test-modal">
134
+ <div class="modal-content w-full max-w-2xl mx-4">
135
+ <div class="modal-header">
136
+ <h3 class="modal-title">Start New Test Session</h3>
137
+ <button id="closeModal" class="modal-close">
138
+ <i data-feather="x"></i>
139
+ </button>
140
+ </div>
141
+ <div class="modal-body">
142
+ <div class="mb-6">
143
+ <label class="block text-sm font-medium text-gray-700 mb-2">Select Android Emulator</label>
144
+ <select class="select-emulator">
145
+ <option>Pixel 3 API 30 (Android 11)</option>
146
+ <option>Pixel 5 API 31 (Android 12)</option>
147
+ <option>Nexus 5 API 29 (Android 10)</option>
148
+ <option>Galaxy S10 API 28 (Android 9)</option>
149
+ </select>
150
+ </div>
151
+
152
+ <div>
153
+ <label class="block text-sm font-medium text-gray-700 mb-2">Upload APK File</label>
154
+ <div class="file-upload">
155
+ <div class="flex flex-col items-center">
156
+ <i data-feather="upload-cloud" class="file-upload-icon"></i>
157
+ <p class="file-upload-text">Click to upload or drag and drop</p>
158
+ <p class="file-upload-hint">APK file (max. 50MB)</p>
159
+ </div>
160
+ </div>
161
+ </div>
162
+ </div>
163
+ <div class="modal-footer">
164
+ <button class="cancel-btn" id="closeModal2">Cancel</button>
165
+ <button class="start-test-btn" id="startTest">
166
+ <i data-feather="play"></i> Start Test
167
+ </button>
168
+ </div>
169
+ </div>
170
+ </div>
171
+
172
+ <script src="components/chatbot.js"></script>
173
+ <script src="https://deepsite.hf.co/deepsite-badge.js"></script>
174
+ </body>
175
+ </html>