import collections

T = int(input())

for t_itr in range(T):
    N, M = map(int, input().split())
    A = []
    for _ in range(N):
        A.append(list(input()))

    result = True

    for j in range(N):
        for i in range(M):
            if A[j][i] == 'B':
                if j + 1 < N:
                    if A[j + 1][i] == 'G':
                        result = False
                    else:
                        A[j + 1][i] = '#'
                if j - 1 > -1:
                    if A[j - 1][i] == 'G':
                        result = False
                    else:
                        A[j - 1][i] = '#'
                if i + 1 < M:
                    if A[j][i + 1] == 'G':
                        result = False
                    else:
                        A[j][i + 1] = '#'
                if i - 1 > -1:
                    if A[j][i - 1] == 'G':
                        result = False
                    else:
                        A[j][i - 1] = '#'
        if not result:
            break

    if result:
        for j in range(N):
            for i in range(M):
                if A[j][i] == 'G':
                    stack = collections.deque()
                    visited = set()
                    stack.append(j * M + i)
                    found = False
                    while stack:
                        item = stack.pop()
                        x, y = divmod(item, M)
                        if x == N - 1 and y == M - 1:
                            found = True
                            break

                        if item not in visited:
                            visited.add(item)
                            if x + 1 < N:
                                if A[x + 1][y] == '.' or A[x + 1][y] == 'G':
                                    stack.append((x + 1) * M + y)
                            if x - 1 > -1:
                                if A[x - 1][y] == '.' or A[x - 1][y] == 'G':
                                    stack.append((x - 1) * M + y)
                            if y + 1 < M:
                                if A[x][y + 1] == '.' or A[x][y + 1] == 'G':
                                    stack.append((x) * M + y + 1)
                            if y - 1 > -1:
                                if A[x][y - 1] == '.' or A[x][y - 1] == 'G':
                                    stack.append((x) * M + y - 1)
                    if not found:
                        result = False
                        break
                if not result:
                    break

    # for a in A:
    #     print(a)
    if result:
        print('Yes')
    else:
        print('No')
