describe('component-native-textarea', () => {
const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
const isAndroid = platformInfo.startsWith('android')
const isIOS = platformInfo.startsWith('ios')
const isMP = platformInfo.startsWith('mp')
const isHarmony = platformInfo.startsWith('harmony')
const isWeb = platformInfo.startsWith('web')
let page;
let textarea;
beforeAll(async () => {
page = await program.reLaunch("/pages/component/textarea/textarea");
await page.waitFor(3000);
textarea = await page.$('.uni-textarea');
await page.waitFor(1000);
});
beforeEach(async () => {
await page.setData({
jest_result: false,
})
});
if (!isMP) {
it("input event should triggered", async () => {
const options = { text: '1' }
if (isHarmony) {
const textareaRect = await page.data('textareaRect');
options.x = textareaRect.x + textareaRect.width / 2.0;
options.y = textareaRect.y + textareaRect.height - 5;
}
await program.keyboardInput(options)
await page.waitFor(2000)
expect(await page.data('jest_result')).toBe(true)
})
it('focus', async () => {
expect(await textarea.attribute("focus")).toBe("true")
await page.setData({
focus_boolean: false,
})
await page.waitFor(500)
expect(await textarea.attribute("focus")).toBe("false")
});
it('trigger change event', async () => {
const changeValue = await page.data('changeValue');
expect(changeValue).not.toBe("")
if (isAndroid) {
await program.adbCommand("input keyevent KEYCODE_DEL")
await page.waitFor(2000)
}
})
if (isAndroid) {
it('focus-keyboard-height', async () => {
await page.setData({
focus_boolean: true,
})
await page.waitFor(500)
let res = await page.data('jest_result');
expect(res).toBe(true)
await page.setData({
focus_boolean: false,
})
await page.waitFor(500)
})
}
it("cursor-color", async () => {
await page.setData({
cursor_color: "transparent",
})
await page.waitFor(500)
expect(await textarea.attribute("cursor-color")).toBe("transparent")
})
it("inputmode", async () => {
const inputmodeEnum = await page.data("inputmode_enum")
for (var i = 0; i < inputmodeEnum.length; i++) {
var x = inputmodeEnum[i]
var selected = x['value'] - 1
if (i == inputmodeEnum.length - 1) {
selected = i
}
await page.callMethod("radio_change_inputmode_enum", selected);
await page.waitFor(500)
expect(await textarea.attribute("inputmode")).toEqual(x['name'])
await page.waitFor(500)
}
})
}
it("auto-height", async () => {
await page.setData({
default_value: "",
})
await page.waitFor(500)
await page.setData({
auto_height_boolean: true
})
await page.waitFor(500)
let textareaSize = await textarea.size()
let textareaHeight = textareaSize.height
expect(textareaHeight).toBeLessThanOrEqual(150)
if (!isMP) {
await page.setData({
default_value: "1\n2\n3\n4\n5\n6",
auto_height_boolean: false
})
await page.waitFor(500)
textareaSize = await textarea.size()
textareaHeight = textareaSize.height
expect(textareaHeight).toEqual(200)
}
})
it("flex 1 height exception", async () => {
const bottomTextarea = await page.$('#textarea-height-exception');
var {
height
} = await bottomTextarea.size()
expect(height).toEqual(150)
})
it("maxlength", async () => {
const input = await page.$('#textarea-instance-maxlength');
let str = "";
for (let i = 0; i < 200; i++) {
str += `${i}`
}
await page.setData({
textareaMaxLengthValue: str
})
let length = (await input.value()).length
expect(length).toBe(10)
await page.setData({
textareaMaxLengthValue: ""
})
})
it('both set modelValue and value', async () => {
const textarea2 = await page.$('#both-model-value');
expect(await textarea2.value()).toEqual("123")
})
if (isIOS) {
it('test-iOS-width', async () => {
await page.setData({
isAutoTest: true
})
await page.waitFor(500)
const rect = await page.callMethod("getBoundingClientRectForTest")
expect(rect.width).toBe(100)
})
}
});