def dfs():
    while queue:
        r, c, saw = queue[-1]
        if not saw:
            if field[r][c] == 2:
                G_num[0] += 1
            field[r][c] = 0
            queue[-1][2] = True
        has_next = False
        for r1, c1 in [(r + 1, c), (r - 1, c), (r, c + 1), (r, c - 1)]:
            if field[r1][c1]:
                queue.append([r1, c1, False])
                has_next = True
                break
        if not has_next:
            queue.pop()


for test_i in range(int(input())):
    n, m = map(int, input().split())
    field = [[0 for i in range(m + 1)]]
    G_num_origin = 0
    for r in range(n):
        row = input()
        field.append([0])
        for el in row:
            if el == '.':
                field[-1].append(1)
            elif el == '#':
                field[-1].append(0)
            elif el == 'B':
                field[-1].append('B')
            elif el == 'G':
                field[-1].append(2)
                G_num_origin += 1
        field[-1].append(0)
    field.append([0 for i in range(m + 1)])
    ans = True
    for r in range(1, n + 1):
        for c in range(1, m + 1):
            if field[r][c] == 'B':
                for (r1, c1) in [(r + 1, c), (r - 1, c), (r, c + 1), (r, c - 1)]:
                    if field[r1][c1] == 'G':
                        ans = False
                        break
                    elif field[r1][c1] != 'B':
                        field[r1][c1] = 0
                field[r][c] = 0
            if not ans:
                break
        if not ans:
            break
    if not ans:
        print('No')
    else:
        if field[n][m]:
            queue = [[n, m, False]]
            G_num = [0]
            dfs()
            print("Yes" if G_num[0] == G_num_origin else "No")
        else:
            print("Yes" if G_num_origin == 0 else "No")