typescript - Πώς μπορώ να ανεβάσω ένα αρχείο σε σχετική διαδρομή με το Playwright και TS;
Προσπαθώ να ανεβάσω ένα αρχείο σε ένα τεστ Playwright που είναι γραμμένο σε TypeScript.
const fileWithPath = './abc.jpg';
const [fileChooser] = await Promise.all([
page.waitForEvent('filechooser'),
page.getByRole('button', { name: 'Add a Photo' }).click(),
]);
await fileChooser.setFiles([fileWithPath]);
Ωστόσο, αυτό δεν λειτουργεί· λαμβάνω ένα σφάλμα:
Error: ENOENT: no such file or directory, stat './abc.jpg'Αν αλλάξω τη διαδρομή αρχείου σε απόλυτη διαδρομή, λειτουργεί:
const fileWithPath = '/Users/private/d/ionic/tests/playwright/optional/abc.jpg';Ωστόσο, αναπτύσσω σε macOS και εκτελώ τις αυτοματοποιημένες δοκιμές σε linux, οπότε θα ήθελα πραγματικά να δεσμεύσω το αρχείο εικόνας (abc.jpg) στον ίδιο κατάλογο με τη δοκιμή και στη συνέχεια να χρησιμοποιήσω μια σχετική διαδρομή για να αναφερθώ σε αυτό με τρόπο ανεξάρτητο από το λειτουργικό σύστημα.
Πώς μπορώ να το κάνω;
Απάντηση #1
Βασισμένο σε μια υπόδειξη από τον @jonrsharpe και την τεκμηρίωση του επιλογέα αρχείων, αυτή είναι η λειτουργική λύση που κατάφερα να βρω:
import * as path from 'path';
const fileWithPath = path.join(__dirname, 'abc.jpg');
const [fileChooser] = await Promise.all([
page.waitForEvent('filechooser'),
page.getByRole('button', { name: 'Add a Photo' }).click(),
]);
await fileChooser.setFiles([fileWithPath]);
