1. Можете объяснить структуру типичного теста Playwright?
import { test, expect } from '@playwright/test';
test.describe('My Test Suite', () => {
// Tests go here
});
test.beforeAll(async ({ browser }) => {
// Code to run before all tests
});
test.afterAll(async ({ browser }) => {
// Code to run after all tests
});
test('should have the correct title', async ({ page }) => {
await page.goto('https://example.com');
const title = await page.title();
expect(title).toBe('Example Domain');
});
expect(someValue).toBe(expectedValue);
await page.click('button#submit');
await page.fill('input#username', 'myUsername');
const submitButton = page.locator('button#submit');
await submitButton.click();
2. Как вы выполняете автоматизацию браузера в Playwright?
const browser = await playwright.chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('https://example.com');
await page.click('button#login');
await page.fill('input#username', 'testuser');
await page.screenshot({ path: 'screenshot.png' });
await page.waitForSelector('h1');
const header = await page.textContent('h1');
expect(header).toBe('Welcome');
await page.close();
await context.close();
await browser.close();
const [newPage] = await Promise.all([
context.waitForEvent('page'),
page.click('a[target=_blank]') // Click opens a new tab
]);
await newPage.waitForLoadState();
await page.setInputFiles('input[type="file"]', 'path/to/file.txt');
await page.mouse.move(0, 0);
await page.keyboard.type('Hello, world!');
3. Напишите функцию для переворота строки на JavaScript/TypeScript:
function reverseString(str: string): string {
return str.split('').reverse().join(''); }
console.log(reverseString("hello"));
4. Объясните разницу между let, var и const:
5. Как обрабатывать асинхронный код в JavaScript:
function fetchData(callback) {
setTimeout(() => {
const data = 'data from server';
callback(data);
}, 1000);
}
fetchData((data) => {
console.log(data); // "data from server" after 1 second
});
async function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const data = 'data from server';
resolve(data);
}, 1000);
});
}
async function main() {
try {
const data = await fetchData();
console.log(data); // "data from server" after 1 second
} catch (error) {
console.error(error);
}
}
main();
6. Как управлять зависимостями в проекте Node.js?
npm init
npm install express
npm install mocha --save-dev
7. Какие общие модули Node.js вы использовали при тестировании?
8. Как вы подходите к написанию тестовых случаев для новой функции?
9. Как вы определяете приоритеты тестовых случаев?
10. Как вы подходите к отладке неудачного теста?
11.Как вы интегрировали автоматизированные тесты в конвейер CI/CD?
12. Как вы обеспечиваете качество программного обеспечения в вашей команде?
13. Какие существуют лучшие практики для написания поддерживаемых и масштабируемых тестов?
14. Как вы решаете проблему непостоянных (flaky) тестов?
15. Какие существуют типы данных в JavaScript?
16. Что такое замыкание (closure) в JavaScript
function createCounter() {
let count = 0;
return function() {
count++;
console.log(count);
};
}
const counter = createCounter();
counter(); // Output: 1
counter(); // Output: 2
counter(); // Output: 3
17. Объясните концепцию "this" в JavaScript.
18. Что такое цикл событий (loop) в JavaScript?
for (let i = 1; i <= 5; i++) {
console.log(i); }
/////////////////////////////////
let i = 1;
while (i <= 5) {
console.log(i);
i++; }
/////////////////////////////////
let j = 1;
do {
console.log(j);
j++;
} while (j <= 5);
19. Объясните разницу между == и ===
console.log(5 === ’5’) // false, потому что число 5 не равно строке "5"
console.log(5 == ’5’) // true, потому что число 5 равно строке "5"
20. Что такое Promises и как они работают?
// Пример функции, возвращающей promise для имитации асинхронной операции
function fetchData() {
return new Promise((resolve, reject) => {
// Имитация асинхронной операции с использованием setTimeout
setTimeout(() => {
const success = true; // Имитируем успех или неудачу
if (success) {
resolve('Data fetched successfully!');
} else {
reject('Error fetching data.');
}
}, 2000); // Имитируем задержку в 2 секунды
});
}
// Использование promise
fetchData()
.then((data) => {
console.log(data); // Это выполнится, если promise выполнен успешно
})
.catch((error) => {
console.error(error); // Это выполнится, если promise был отклонен
});
21. Что такое async/await и чем он отличается от Promises
Скачать шпаргалку с вопросами и ответами можно здесь: