summaryrefslogtreecommitdiff
path: root/pytest/test_embedded/tests/console/test_screen_capture.py
blob: f27a9d32b8abb2a69138a3ef0e5ed5cb8d783b89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# Copyright 2023 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import datetime

import pytest
from PIL import Image


@pytest.fixture
def tmp_test_file(tmp_path):
    current_time = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
    temp_file = tmp_path / f"__screenshot_{current_time}.png"
    return temp_file


@pytest.mark.adb
@pytest.mark.sanity
@pytest.mark.flaky
async def test_adb_screencapture_creates_a_file(
    avd, log_adb_interactions, tmp_test_file
):
    device_file = f"/sdcard/{tmp_test_file.name}"
    await avd.adb.shell(f"rm {device_file}")
    assert "adb: error" not in await avd.adb.shell(f"screencap {device_file}")
    assert "yes" in await avd.adb.shell(f"[ -f {device_file} ] && echo 'yes'")


@pytest.mark.adb
@pytest.mark.flaky
async def test_adb_screencapture_is_a_png(avd, log_adb_interactions, tmp_test_file):
    device_file = f"/sdcard/{tmp_test_file.name}"
    await avd.adb.shell(f"rm {device_file}")
    assert "adb: error" not in await avd.adb.shell(f"screencap {device_file}")

    # Check that we have a png file.
    await avd.adb.pull(device_file, tmp_test_file)
    img: Image.Image = Image.open(tmp_test_file)
    assert img.format == "PNG"